4 # Makefile rules to build GNUstep web bundles.
6 # Copyright (C) 2002 Free Software Foundation, Inc.
8 # Author: Nicola Pero <nicola@brainstorm.co.uk>
10 # This file is part of the GNUstep Makefile Package.
12 # This library is free software; you can redistribute it and/or
13 # modify it under the terms of the GNU General Public License
14 # as published by the Free Software Foundation; either version 2
15 # of the License, or (at your option) any later version.
17 # You should have received a copy of the GNU General Public
18 # License along with this library; see the file COPYING.LIB.
19 # If not, write to the Free Software Foundation,
20 # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 ifeq ($(GNUSTEP_INSTANCE),)
23 ifeq ($(RULES_MAKE_LOADED),)
24 include $(GNUSTEP_MAKEFILES)/rules.make
27 ifeq ($(strip $(WOBUNDLE_EXTENSION)),)
28 WOBUNDLE_EXTENSION = .wobundle
31 WOBUNDLE_NAME := $(strip $(WOBUNDLE_NAME))
33 internal-all:: $(WOBUNDLE_NAME:=.all.wobundle.variables)
35 internal-install:: $(WOBUNDLE_NAME:=.install.wobundle.variables)
37 internal-uninstall:: $(WOBUNDLE_NAME:=.uninstall.wobundle.variables)
39 internal-clean:: $(WOBUNDLE_NAME:=.clean.wobundle.subprojects)
40 rm -rf $(GNUSTEP_OBJ_DIR) \
41 $(addsuffix $(WOBUNDLE_EXTENSION),$(WOBUNDLE_NAME))
43 internal-distclean:: $(WOBUNDLE_NAME:=.distclean.wobundle.subprojects)
44 rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \
45 static_debug_obj static_profile_obj shared_profile_debug_obj \
46 static_profile_debug_obj
49 @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
50 $@.all.wobundle.variables
53 ifeq ($(GNUSTEP_TYPE),wobundle)
54 ifeq ($(RULES_MAKE_LOADED),)
55 include $(GNUSTEP_MAKEFILES)/rules.make
58 # FIXME - this file has not been updated to use Shared/bundle.make
59 # because it is using symlinks rather than copying resources.
61 COMPONENTS = $($(GNUSTEP_INSTANCE)_COMPONENTS)
62 LANGUAGES = $($(GNUSTEP_INSTANCE)_LANGUAGES)
63 WEBSERVER_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_FILES)
64 LOCALIZED_WEBSERVER_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_LOCALIZED_WEBSERVER_RESOURCE_FILES)
65 WEBSERVER_RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_DIRS)
66 LOCALIZED_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_FILES)
67 RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_RESOURCE_FILES)
68 RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_RESOURCE_DIRS)
70 include $(GNUSTEP_MAKEFILES)/Instance/Shared/headers.make
72 ifeq ($(strip $(WOBUNDLE_EXTENSION)),)
73 WOBUNDLE_EXTENSION = .wobundle
76 WOBUNDLE_LD = $(BUNDLE_LD)
77 WOBUNDLE_LDFLAGS = $(BUNDLE_LDFLAGS)
79 ifeq ($(FOUNDATION_LIB),apple)
80 WORSRCDIRINFIX:=Contents/Resources
81 WORSRCLINKUP:=../../..
83 WORSRCDIRINFIX:=Resources
87 ifeq ($(WOBUNDLE_INSTALL_DIR),)
88 WOBUNDLE_INSTALL_DIR = $(GNUSTEP_INSTALLATION_DIR)/Libraries
90 # The name of the bundle is in the BUNDLE_NAME variable.
91 # The list of languages the bundle is localized in are in xxx_LANGUAGES
92 # The list of bundle resource file are in xxx_RESOURCE_FILES
93 # The list of localized bundle resource file are in xxx_LOCALIZED_RESOURCE_FILES
94 # The list of bundle resource directories are in xxx_RESOURCE_DIRS
95 # The name of the principal class is xxx_PRINCIPAL_CLASS
96 # The header files are in xxx_HEADER_FILES
97 # The directory where the header files are located is xxx_HEADER_FILES_DIR
98 # The directory where to install the header files inside the library
99 # installation directory is xxx_HEADER_FILES_INSTALL_DIR
100 # where xxx is the bundle name
101 # xxx_WEBSERVER_RESOURCE_DIRS <==
102 # The list of localized application web server resource directories are in
103 # xxx_LOCALIZED_WEBSERVER_RESOURCE_DIRS
104 # where xxx is the application name <==
106 .PHONY: internal-wobundle-all_ \
107 internal-wobundle-install_ \
108 internal-wobundle-uninstall_ \
111 wobundle-components \
112 wobundle-resource-files \
113 wobundle-localized-resource-files \
114 wobundle-webresource-dir \
115 wobundle-webresource-files \
116 wobundle-localized-webresource-files
118 # On Solaris we don't need to specifies the libraries the bundle needs.
119 # How about the rest of the systems? ALL_BUNDLE_LIBS is temporary empty.
120 TALL_WOBUNDLE_LIBS = $(ADDITIONAL_WO_LIBS) $(AUXILIARY_WO_LIBS) $(WO_LIBS) \
121 $(ADDITIONAL_BUNDLE_LIBS) $(AUXILIARY_BUNDLE_LIBS) \
122 $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) \
123 $(OBJC_LIBS) $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS)
125 ALL_WOBUNDLE_LIBS = \
126 $(shell $(WHICH_LIB_SCRIPT) $(ALL_LIB_DIRS) $(TALL_WOBUNDLE_LIBS) \
127 debug=$(debug) profile=$(profile) shared=$(shared) libext=$(LIBEXT) \
128 shared_libext=$(SHARED_LIBEXT))
130 internal-wobundle-all_:: $(GNUSTEP_OBJ_DIR) \
134 WOBUNDLE_DIR_NAME = $(GNUSTEP_INSTANCE:=$(WOBUNDLE_EXTENSION))
136 $(WOBUNDLE_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)
137 WOBUNDLE_RESOURCE_DIRS = $(foreach d, $(RESOURCE_DIRS), $(WOBUNDLE_DIR_NAME)/$(WORSRCDIRINFIX)/$(d))
138 WOBUNDLE_WEBSERVER_RESOURCE_DIRS = $(foreach d, $(WEBSERVER_RESOURCE_DIRS), $(WOBUNDLE_DIR_NAME)/Resources/WebServer/$(d))
140 ifeq ($(strip $(LANGUAGES)),)
145 build-bundle-dir:: $(WOBUNDLE_DIR_NAME)/$(WORSRCDIRINFIX) \
146 $(WOBUNDLE_DIR_NAME)/$(GNUSTEP_TARGET_LDIR) \
147 $(WOBUNDLE_RESOURCE_DIRS)
149 $(WOBUNDLE_DIR_NAME)/$(GNUSTEP_TARGET_LDIR):
150 @$(MKDIRS) $(WOBUNDLE_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)
152 $(WOBUNDLE_RESOURCE_DIRS):
153 @$(MKDIRS) $(WOBUNDLE_RESOURCE_DIRS)
155 build-bundle:: $(WOBUNDLE_FILE) \
156 wobundle-components \
157 wobundle-resource-files \
158 wobundle-localized-resource-files \
159 wobundle-localized-webresource-files \
160 wobundle-webresource-files
163 $(WOBUNDLE_FILE) : $(OBJ_FILES_TO_LINK)
164 $(WOBUNDLE_LD) $(WOBUNDLE_LDFLAGS) \
165 $(ALL_LDFLAGS) -o $(LDOUT)$(WOBUNDLE_FILE) \
166 $(OBJ_FILES_TO_LINK) \
169 wobundle-components :: $(WOBUNDLE_DIR_NAME)
170 ifneq ($(strip $(COMPONENTS)),)
171 @(echo "Linking components into the bundle wrapper..."; \
172 cd $(WOBUNDLE_DIR_NAME)/$(WORSRCDIRINFIX); \
173 for component in $(COMPONENTS); do \
174 if [ -d $(WORSRCLINKUP)/$$component ]; then \
175 $(LN_S) -f $(WORSRCLINKUP)/$$component ./;\
178 echo "Linking localized components into the bundle wrapper..."; \
179 for l in $(LANGUAGES); do \
180 if [ -d $(WORSRCLINKUP)/$$l.lproj ]; then \
181 $(MKDIRS) $$l.lproj; \
183 for f in $(COMPONENTS); do \
184 if [ -d $(WORSRCLINKUP)/../$$l.lproj/$$f ]; then \
185 $(LN_S) -f $(WORSRCLINKUP)/../$$l.lproj/$$f .;\
193 wobundle-resource-files:: $(WOBUNDLE_DIR_NAME)/bundle-info.plist \
194 $(WOBUNDLE_DIR_NAME)/$(WORSRCDIRINFIX)/Info-gnustep.plist
195 ifneq ($(strip $(RESOURCE_FILES)),)
196 @(echo "Linking resources into the bundle wrapper..."; \
197 cd $(WOBUNDLE_DIR_NAME)/$(WORSRCDIRINFIX)/; \
198 for ff in $(RESOURCE_FILES); do \
199 $(LN_S) -f $(WORSRCLINKUP)/$$ff .;\
203 wobundle-localized-resource-files:: $(WOBUNDLE_DIR_NAME)/$(WORSRCDIRINFIX)/Info-gnustep.plist
204 ifneq ($(strip $(LOCALIZED_RESOURCE_FILES)),)
205 @(echo "Linking localized resources into the bundle wrapper..."; \
206 cd $(WOBUNDLE_DIR_NAME)/$(WORSRCDIRINFIX); \
207 for l in $(LANGUAGES); do \
208 if [ -d $(WORSRCLINKUP)/$$l.lproj ]; then \
209 $(MKDIRS) $$l.lproj; \
211 for f in $(LOCALIZED_RESOURCE_FILES); do \
212 if [ -f $(WORSRCLINKUP)/../$$l.lproj/$$f ]; then \
213 $(LN_S) -f $(WORSRCLINKUP)/../$$l.lproj/$$f .;\
218 echo "Warning - $$l.lproj not found - ignoring";\
223 wobundle-webresource-dir::
224 @$(MKDIRS) $(WOBUNDLE_WEBSERVER_RESOURCE_DIRS)
226 wobundle-webresource-files:: $(WOBUNDLE_DIR_NAME)/Resources/WebServer \
227 wobundle-webresource-dir
228 ifneq ($(strip $(WEBSERVER_RESOURCE_FILES)),)
229 @(echo "Linking webserver resources into the application wrapper..."; \
230 cd $(WOBUNDLE_DIR_NAME)/Resources/WebServer; \
231 for ff in $(WEBSERVER_RESOURCE_FILES); do \
232 $(LN_S) -f ../../WebServerResources/$$ff .;\
236 wobundle-localized-webresource-files:: $(WOBUNDLE_DIR_NAME)/Resources/WebServer \
237 wobundle-webresource-dir
238 ifneq ($(strip $(LOCALIZED_WEBSERVER_RESOURCE_FILES)),)
239 @(echo "Linking localized web resources into the application wrapper..."; \
240 cd $(WOBUNDLE_DIR_NAME)/Resources/WebServer; \
241 for l in $(LANGUAGES); do \
242 if [ -d ../../WebServerResources/$$l.lproj ]; then \
243 $(MKDIRS) $$l.lproj; \
245 for f in $(LOCALIZED_WEBSERVER_RESOURCE_FILES); do \
246 if [ -f ../../../WebServerResources/$$l.lproj/$$f ]; then \
247 if [ ! -r $$f ]; then \
248 $(LN_S) ../../../WebServerResources/$$l.lproj/$$f $$f;\
254 echo "Warning - WebServerResources/$$l.lproj not found - ignoring";\
259 PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS))
261 ifeq ($(PRINCIPAL_CLASS),)
262 PRINCIPAL_CLASS = $(GNUSTEP_INSTANCE)
265 $(WOBUNDLE_DIR_NAME)/bundle-info.plist: $(WOBUNDLE_DIR_NAME)
266 @(cd $(WOBUNDLE_DIR_NAME); $(LN_S) -f ../bundle-info.plist .)
268 HAS_WOCOMPONENTS = $($(GNUSTEP_INSTANCE)_HAS_WOCOMPONENTS)
270 $(WOBUNDLE_DIR_NAME)/$(WORSRCDIRINFIX)/Info-gnustep.plist: $(WOBUNDLE_DIR_NAME)/$(WORSRCDIRINFIX)
271 @(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
272 echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \
273 echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \
274 if [ "$(HAS_WOCOMPONENTS)" != "" ]; then \
275 echo " HasWOComponents = \"$(HAS_WOCOMPONENTS)\";"; \
279 $(WOBUNDLE_DIR_NAME)/$(WORSRCDIRINFIX):
282 $(WOBUNDLE_DIR_NAME)/Resources/WebServer:
285 internal-wobundle-install_:: $(WOBUNDLE_INSTALL_DIR) shared-instance-headers-install
286 rm -rf $(WOBUNDLE_INSTALL_DIR)/$(WOBUNDLE_DIR_NAME); \
287 $(TAR) chf - --exclude=CVS --to-stdout $(WOBUNDLE_DIR_NAME) | (cd $(WOBUNDLE_INSTALL_DIR); $(TAR) xf -)
289 $(CHOWN) -R $(CHOWN_TO) $(WOBUNDLE_INSTALL_DIR)/$(WOBUNDLE_DIR_NAME)
292 $(STRIP) $(WOBUNDLE_INSTALL_DIR)/$(WOBUNDLE_FILE)
295 $(WOBUNDLE_INSTALL_DIR)::
298 internal-wobundle-uninstall_:: shared-instance-headers-uninstall
299 rm -rf $(WOBUNDLE_INSTALL_DIR)/$(WOBUNDLE_DIR_NAME)