]> err.no Git - sope/blob - sope-appserver/NGObjWeb/woapp-gs.make
hotfix
[sope] / sope-appserver / NGObjWeb / woapp-gs.make
1 #
2 #   woapp.make
3 #
4 #   Makefile rules to build GNUstep web based applications.
5 #
6 #   Copyright (C) 2002 Free Software Foundation, Inc.
7 #
8 #   Author:  Nicola Pero <nicola@brainstorm.co.uk>
9 #
10 #   This file is part of the GNUstep Makefile Package.
11 #
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.
16 #   
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.
21
22 ifeq ($(GNUSTEP_INSTANCE),)
23 ifeq ($(RULES_MAKE_LOADED),)
24 include $(GNUSTEP_MAKEFILES)/rules.make
25 endif
26
27 # Determine the application directory extension
28 WOAPP_EXTENSION=woa
29
30 WOAPP_NAME := $(strip $(WOAPP_NAME))
31
32 internal-all:: $(WOAPP_NAME:=.all.woapp.variables)
33
34 internal-install:: $(WOAPP_NAME:=.install.woapp.variables)
35
36 internal-uninstall:: $(WOAPP_NAME:=.uninstall.woapp.variables)
37
38 internal-clean:: $(WOAPP_NAME:=.clean.woapp.subprojects)
39         rm -rf $(GNUSTEP_OBJ_DIR)
40 ifeq ($(OBJC_COMPILER), NeXT)
41         rm -f *.iconheader
42         for f in *.$(WOAPP_EXTENSION); do \
43           rm -f $$f/`basename $$f .$(WOAPP_EXTENSION)`; \
44         done
45 else
46 ifeq ($(GNUSTEP_FLATTENED),)
47         rm -rf *.$(WOAPP_EXTENSION)/$(GNUSTEP_TARGET_LDIR)
48 else
49         rm -rf *.$(WOAPP_EXTENSION)
50 endif
51 endif
52
53 internal-distclean:: $(WOAPP_NAME:=.distclean.woapp.subprojects)
54         rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \
55           static_debug_obj static_profile_obj shared_profile_debug_obj \
56           static_profile_debug_obj *.woa *.debug *.profile *.iconheader
57
58 $(WOAPP_NAME):
59         @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
60                     $@.all.woapp.variables
61 else
62
63 ifeq ($(GNUSTEP_TYPE),woapp)
64 ifeq ($(RULES_MAKE_LOADED),)
65 include $(GNUSTEP_MAKEFILES)/rules.make
66 endif
67
68 # FIXME/TODO - this file has not been updated to use
69 # Instance/Shared/bundle.make because it is linking resources instead of
70 # copying them.
71
72
73 #
74 # The name of the application is in the WOAPP_NAME variable.
75 # The list of languages the app is localized in are in xxx_LANGUAGES <==
76 # The list of application resource file are in xxx_RESOURCE_FILES
77 # The list of localized application resource file are in 
78 #  xxx_LOCALIZED_RESOURCE_FILES <==
79 # The list of application resource directories are in xxx_RESOURCE_DIRS
80 # The list of application web server resource directories are in 
81 #  xxx_WEBSERVER_RESOURCE_DIRS <==
82 # The list of localized application web server resource directories are in 
83 #  xxx_LOCALIZED_WEBSERVER_RESOURCE_DIRS
84 # where xxx is the application name <==
85
86 COMPONENTS = $($(GNUSTEP_INSTANCE)_COMPONENTS)
87 LANGUAGES = $($(GNUSTEP_INSTANCE)_LANGUAGES)
88 WEBSERVER_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_FILES)
89 LOCALIZED_WEBSERVER_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_LOCALIZED_WEBSERVER_RESOURCE_FILES)
90 WEBSERVER_RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_DIRS)
91 LOCALIZED_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_FILES)
92 RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_RESOURCE_FILES)
93 RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_RESOURCE_DIRS)
94
95 ifeq ($(FOUNDATION_LIB),apple)
96 WORSRCDIRINFIX:=Contents/Resources
97 WORSRCLINKUP:=../../..
98 else
99 WORSRCDIRINFIX:=Resources
100 WORSRCLINKUP:=../..
101 endif
102
103 # Determine the application directory extension
104 WOAPP_EXTENSION = woa
105
106 GNUSTEP_WOAPPS = $(GNUSTEP_INSTALLATION_DIR)/WOApps
107
108 .PHONY: internal-woapp-all_ \
109         internal-woapp-install_ \
110         internal-woapp-uninstall_ \
111         woapp-components \
112         woapp-webresource-dir \
113         woapp-webresource-files \
114         woapp-localized-webresource-files \
115         woapp-resource-dir \
116         woapp-resource-files \
117         woapp-localized-resource-files
118
119 # Libraries that go before the WO libraries
120 ifndef WHICH_LIB_SCRIPT
121 ALL_WO_LIBS =                                                           \
122         $(ALL_LIB_DIRS)                                                 \
123         $(ADDITIONAL_WO_LIBS) $(AUXILIARY_WO_LIBS) $(WO_LIBS)   \
124         $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS)                  \
125         $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS)      \
126         $(OBJC_LIBS) $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS)
127 else
128 ALL_WO_LIBS =                                                           \
129     $(shell $(WHICH_LIB_SCRIPT)                                         \
130         $(ALL_LIB_DIRS)                                                 \
131         $(ADDITIONAL_WO_LIBS) $(AUXILIARY_WO_LIBS) $(WO_LIBS)   \
132         $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS)                  \
133         $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS)      \
134         $(OBJC_LIBS) $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS)               \
135         debug=$(debug) profile=$(profile) shared=$(shared)              \
136         libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT))
137 endif
138
139 # Don't include these definitions the first time make is invoked. This part is
140 # included when make is invoked the second time from the %.build rule (see
141 # rules.make).
142 WOAPP_DIR_NAME = $(GNUSTEP_INSTANCE:=.$(WOAPP_EXTENSION))
143 WOAPP_RESOURCE_DIRS =  $(foreach d, $(RESOURCE_DIRS), $(WOAPP_DIR_NAME)/$(WORSRCDIRINFIX)/$(d))
144 WOAPP_WEBSERVER_RESOURCE_DIRS =  $(foreach d, $(WEBSERVER_RESOURCE_DIRS), $(WOAPP_DIR_NAME)/WebServerResources/$(d))
145 ifeq ($(strip $(LANGUAGES)),)
146   LANGUAGES="English"
147 endif
148
149 # Support building NeXT applications
150 ifneq ($(OBJC_COMPILER), NeXT)
151 WOAPP_FILE = \
152     $(WOAPP_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(EXEEXT)
153 else
154 WOAPP_FILE = $(WOAPP_DIR_NAME)/$(GNUSTEP_INSTANCE)$(EXEEXT)
155 endif
156
157 #
158 # Internal targets
159 #
160
161 $(WOAPP_FILE): $(OBJ_FILES_TO_LINK)
162         $(LD) $(ALL_LDFLAGS) -o $(LDOUT)$@ $(OBJ_FILES_TO_LINK) \
163               $(ALL_WO_LIBS)
164
165 ifeq ($(OBJC_COMPILER), NeXT)
166         @$(TRANSFORM_PATHS_SCRIPT) $(subst -L,,$(ALL_LIB_DIRS)) \
167                 >$(WOAPP_DIR_NAME)/library_paths.openapp
168 # This is a hack for OPENSTEP systems to remove the iconheader file
169 # automatically generated by the makefile package.
170         rm -f $(GNUSTEP_INSTANCE).iconheader
171 else
172         @$(TRANSFORM_PATHS_SCRIPT) $(subst -L,,$(ALL_LIB_DIRS)) \
173         >$(WOAPP_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/library_paths.openapp
174 endif
175
176 #
177 # Compilation targets
178 #
179 ifeq ($(OBJC_COMPILER), NeXT)
180 internal-woapp-all_:: \
181         $(GNUSTEP_OBJ_DIR) $(WOAPP_DIR_NAME) $(WOAPP_FILE) \
182         woapp-components \
183         woapp-localized-webresource-files \
184         woapp-webresource-files \
185         woapp-localized-resource-files \
186         woapp-resource-files \
187         $(WOAPP_DIR_NAME)/$(GNUSTEP_INSTANCE).sh
188
189 $(GNUSTEP_INSTANCE).iconheader:
190         @(echo "F       $(GNUSTEP_INSTANCE).$(WOAPP_EXTENSION)  $(GNUSTEP_INSTANCE)     $(WOAPP_EXTENSION)"; \
191           echo "F       $(GNUSTEP_INSTANCE)     $(GNUSTEP_INSTANCE)     app") >$@
192
193 $(WOAPP_DIR_NAME):
194         mkdir $@
195 else
196
197 internal-woapp-all_:: \
198    $(GNUSTEP_OBJ_DIR) \
199    $(WOAPP_DIR_NAME)/$(GNUSTEP_TARGET_LDIR) $(WOAPP_FILE) \
200    woapp-components \
201    woapp-localized-webresource-files \
202    woapp-webresource-files \
203    woapp-localized-resource-files \
204    woapp-resource-files \
205    $(WOAPP_DIR_NAME)/$(GNUSTEP_INSTANCE).sh
206
207 $(WOAPP_DIR_NAME)/$(GNUSTEP_TARGET_LDIR):
208         @$(MKDIRS) $(WOAPP_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)
209 endif
210
211 ifeq ($(GNUSTEP_INSTANCE)_GEN_SCRIPT,yes) #<==
212 $(WOAPP_DIR_NAME)/$(GNUSTEP_INSTANCE).sh: $(WOAPP_DIR_NAME)
213         @(echo "#!/bin/sh"; \
214           echo '# Automatically generated, do not edit!'; \
215           echo '$${GNUSTEP_HOST_LDIR}/$(GNUSTEP_INSTANCE) $$1 $$2 $$3 $$4 $$5 $$6 $$7 $$8') >$@
216         chmod +x $@
217 else
218 $(WOAPP_DIR_NAME)/$(GNUSTEP_INSTANCE).sh:
219
220 endif
221
222 woapp-components:: $(WOAPP_DIR_NAME)/$(WORSRCDIRINFIX)
223 ifneq ($(strip $(COMPONENTS)),)
224         @ echo "Linking components into the application wrapper..."; \
225         cd $(WOAPP_DIR_NAME)/$(WORSRCDIRINFIX); \
226         for component in $(COMPONENTS); do \
227           if [ -d $(WORSRCLINKUP)/$$component ]; then \
228              $(LN_S) -f $(WORSRCLINKUP)/$$component ./;\
229           fi; \
230         done; \
231         echo "Linking localized components into the application wrapper..."; \
232         for l in $(LANGUAGES); do \
233           if [ -d $(WORSRCLINKUP)/$$l.lproj ]; then \
234             $(MKDIRS) $$l.lproj; \
235             cd $$l.lproj; \
236             for f in $(COMPONENTS); do \
237               if [ -d $(WORSRCLINKUP)/../$$l.lproj/$$f ]; then \
238                 $(LN_S) -f $(WORSRCLINKUP)/../$$l.lproj/$$f .;\
239               fi;\
240             done;\
241             cd ..; \
242           fi;\
243         done
244 endif
245
246 # FIXME - this is behaving differently than in wobundle.make !
247 # It's also not behaving consistently with xxx_RESOURCE_DIRS
248 woapp-webresource-dir:: $(WOAPP_WEBSERVER_RESOURCE_DIRS)
249 ifneq ($(strip $(WEBSERVER_RESOURCE_DIRS)),)
250         @ echo "Linking webserver Resource Dirs into the application wrapper..."; \
251         cd $(WOAPP_DIR_NAME)/$(WORSRCDIRINFIX); \
252         for dir in $(WEBSERVER_RESOURCE_DIRS); do \
253           if [ -d $(WORSRCLINKUP)/$$dir ]; then \
254              $(LN_S) -f $(WORSRCLINKUP)/$$dir ./;\
255           fi; \
256         done;
257 endif
258
259 $(WOAPP_WEBSERVER_RESOURCE_DIRS):
260         #@$(MKDIRS) $(WOAPP_WEBSERVER_RESOURCE_DIRS)
261
262 woapp-webresource-files:: $(WOAPP_DIR_NAME)/WebServerResources \
263                            woapp-webresource-dir
264 ifneq ($(strip $(WEBSERVER_RESOURCE_FILES)),)
265         @echo "Linking webserver resources into the application wrapper..."; \
266         cd $(WOAPP_DIR_NAME)/WebServerResources; \
267         for ff in $(WEBSERVER_RESOURCE_FILES); do \
268           $(LN_S) -f ../../$$ff .;\
269         done
270 endif
271
272 woapp-localized-webresource-files:: $(WOAPP_DIR_NAME)/WebServerResources woapp-webresource-dir
273 ifneq ($(strip $(LOCALIZED_WEBSERVER_RESOURCE_FILES)),)
274         @ echo "Linking localized web resources into the application wrapper..."; \
275         cd $(WOAPP_DIR_NAME)/WebServerResources; \
276         for l in $(LANGUAGES); do \
277           if [ -d ../../WebServerResources/$$l.lproj ]; then \
278             $(MKDIRS) $$l.lproj;\
279             cd $$l.lproj; \
280             for f in $(LOCALIZED_WEBSERVER_RESOURCE_FILES); do \
281               if [ -f ../../../$$l.lproj/$$f ]; then \
282                 if [ ! -r $$f ]; then \
283                   $(LN_S) ../../../$$l.lproj/$$f $$f;\
284                 fi;\
285               fi;\
286             done;\
287             cd ..; \
288           else\
289            echo "Warning - WebServerResources/$$l.lproj not found - ignoring";\
290           fi;\
291         done
292 endif
293
294 # This is not consistent with what other projects do ... so it can't stay
295 # this way.  Use COMPONENTS instead.
296 woapp-resource-dir:: $(WOAPP_RESOURCE_DIRS)
297 ifneq ($(strip $(RESOURCE_DIRS)),)
298         @ echo "Linking Resource Dirs into the application wrapper..."; \
299         cd $(WOAPP_DIR_NAME)/$(WORSRCDIRINFIX); \
300         for dir in $(RESOURCE_DIRS); do \
301           if [ -d $(WORSRCLINKUP)/$$dir ]; then \
302              $(LN_S) -f $(WORSRCLINKUP)/$$dir ./;\
303           fi; \
304         done;
305 endif
306
307 $(WOAPP_RESOURCE_DIRS):
308         #@$(MKDIRS) $(WOAPP_RESOURCE_DIRS)
309
310 woapp-resource-files:: $(WOAPP_DIR_NAME)/$(WORSRCDIRINFIX)/Info-gnustep.plist \
311                         woapp-resource-dir
312 ifneq ($(strip $(RESOURCE_FILES)),)
313         @ echo "Linking resources into the application wrapper..."; \
314         cd $(WOAPP_DIR_NAME)/$(WORSRCDIRINFIX)/; \
315         for ff in $(RESOURCE_FILES); do \
316           $(LN_S) -f $(WORSRCLINKUP)/$$ff .;\
317         done
318 endif
319
320 woapp-localized-resource-files:: $(WOAPP_DIR_NAME)/$(WORSRCDIRINFIX) \
321                                   woapp-resource-dir
322 ifneq ($(strip $(LOCALIZED_RESOURCE_FILES)),)
323         @ echo "Linking localized resources into the application wrapper..."; \
324         cd $(WOAPP_DIR_NAME)/$(WORSRCDIRINFIX); \
325         for l in $(LANGUAGES); do \
326           if [ -d $(WORSRCLINKUP)/$$l.lproj ]; then \
327             $(MKDIRS) $$l.lproj; \
328             cd $$l.lproj; \
329             for f in $(LOCALIZED_RESOURCE_FILES); do \
330               if [ -f $(WORSRCLINKUP)/../$$l.lproj/$$f ]; then \
331                 $(LN_S) -f $(WORSRCLINKUP)/../$$l.lproj/$$f .;\
332               fi;\
333             done;\
334             cd ..; \
335           else \
336            echo "Warning - $$l.lproj not found - ignoring";\
337           fi;\
338         done
339 endif
340
341 PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS))
342
343 ifeq ($(PRINCIPAL_CLASS),)
344   PRINCIPAL_CLASS = $(GNUSTEP_INSTANCE)
345 endif
346
347 HAS_WOCOMPONENTS = $($(GNUSTEP_INSTANCE)_HAS_WOCOMPONENTS)
348 WOAPP_INFO_PLIST = $($(GNUSTEP_INSTANCE)_WOAPP_INFO_PLIST)
349 MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE)))))
350
351 $(WOAPP_DIR_NAME)/$(WORSRCDIRINFIX)/Info-gnustep.plist: $(WOAPP_DIR_NAME)/$(WORSRCDIRINFIX)
352         @(echo "{"; echo '  NOTE = "Automatically generated, do not edit!";'; \
353           echo "  NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \
354           echo "  NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \
355           if [ "$(HAS_WOCOMPONENTS)" != "" ]; then \
356             echo "  HasWOComponents = \"$(HAS_WOCOMPONENTS)\";"; \
357           fi; \
358           echo "  NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \
359           if [ -r "$(GNUSTEP_INSTANCE)Info.plist" ]; then \
360             cat $(GNUSTEP_INSTANCE)Info.plist; \
361           fi; \
362           if [ "$(WOAPP_INFO_PLIST)" != "" ]; then \
363             cat $(WOAPP_INFO_PLIST); \
364           fi; \
365           echo "}") >$@
366
367 $(WOAPP_DIR_NAME)/$(WORSRCDIRINFIX):
368         @$(MKDIRS) $@
369
370 $(WOAPP_DIR_NAME)/WebServerResources:
371         @$(MKDIRS) $@
372
373 internal-woapp-install_::
374         @($(MKINSTALLDIRS) $(GNUSTEP_WOAPPS); \
375         rm -rf $(GNUSTEP_WOAPPS)/$(WOAPP_DIR_NAME); \
376         $(TAR) chf - --exclude=CVS --exclude=.svn --to-stdout $(WOAPP_DIR_NAME) | (cd $(GNUSTEP_WOAPPS); $(TAR) xf -))
377 ifneq ($(CHOWN_TO),)
378         $(CHOWN) -R $(CHOWN_TO) $(GNUSTEP_WOAPPS)/$(WOAPP_DIR_NAME)
379 endif
380 ifeq ($(strip),yes)
381         $(STRIP) $(GNUSTEP_WOAPPS)/$(WOAPP_FILE) 
382 endif
383
384 internal-woapp-uninstall_::
385         (cd $(GNUSTEP_WOAPPS); rm -rf $(WOAPP_DIR_NAME))
386 endif
387
388 endif
389
390 ## Local variables:
391 ## mode: makefile
392 ## End: