1#
2#   Instance/gswbundle.make
3#
4#   Instance Makefile rules to build GNUstep web bundles.
5#
6#   Copyright (C) 1997 Free Software Foundation, Inc.
7#
8#   Author:  Manuel Guesdon <mguesdon@sbuilders.com>
9#   Based on WOBundle.make by Helge Hess, MDlink online service center GmbH.
10#   Based on bundle.make by Ovidiu Predescu <ovidiu@net-community.com>
11#
12#   This file is part of the GNUstep Makefile Package.
13#
14#   This library is free software; you can redistribute it and/or
15#   modify it under the terms of the GNU General Public License
16#   as published by the Free Software Foundation; either version 3
17#   of the License, or (at your option) any later version.
18#
19#   You should have received a copy of the GNU General Public
20#   License along with this library; see the file COPYING.
21#   If not, write to the Free Software Foundation,
22#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23
24ifeq ($(NEEDS_GUI),)
25  NEEDS_GUI = no
26endif
27
28ifeq ($(RULES_MAKE_LOADED),)
29include $(GNUSTEP_MAKEFILES)/rules.make
30endif
31
32# FIXME - this file has not been updated to use Shared/bundle.make
33# because it is using symlinks rather than copying resources.
34
35# TODO: We should remove this makefile since it's not really supported.
36
37COMPONENTS = $($(GNUSTEP_INSTANCE)_COMPONENTS)
38WEBSERVER_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_FILES)
39LOCALIZED_WEBSERVER_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_LOCALIZED_WEBSERVER_RESOURCE_FILES)
40WEBSERVER_RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_DIRS)
41LOCALIZED_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_FILES)
42RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_RESOURCE_FILES)
43RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_RESOURCE_DIRS)
44
45include $(GNUSTEP_MAKEFILES)/Instance/Shared/headers.make
46
47ifeq ($(strip $(GSWBUNDLE_EXTENSION)),)
48GSWBUNDLE_EXTENSION = .gswbundle
49endif
50
51GSWBUNDLE_LD = $(BUNDLE_LD)
52GSWBUNDLE_LDFLAGS = $(BUNDLE_LDFLAGS)
53
54ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),)
55  GSWBUNDLE_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)
56endif
57
58ifeq ($(GSWBUNDLE_INSTALL_DIR),)
59  GSWBUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARIES)
60endif
61# The name of the bundle is in the BUNDLE_NAME variable.
62# The list of languages the bundle is localized in are in xxx_LANGUAGES
63# The list of bundle resource file are in xxx_RESOURCE_FILES
64# The list of localized bundle resource file are in xxx_LOCALIZED_RESOURCE_FILES
65# The list of bundle resource directories are in xxx_RESOURCE_DIRS
66# The name of the principal class is xxx_PRINCIPAL_CLASS
67# The header files are in xxx_HEADER_FILES
68# The directory where the header files are located is xxx_HEADER_FILES_DIR
69# The directory where to install the header files inside the library
70# installation directory is xxx_HEADER_FILES_INSTALL_DIR
71# where xxx is the bundle name
72#  xxx_WEBSERVER_RESOURCE_DIRS <==
73# The list of localized application web server resource directories are in
74#  xxx_LOCALIZED_WEBSERVER_RESOURCE_DIRS
75# where xxx is the application name <==
76
77.PHONY: internal-gswbundle-all_ \
78        internal-gswbundle-install_ \
79        internal-gswbundle-uninstall_ \
80        build-bundle-dir \
81        build-bundle \
82        gswbundle-components \
83        gswbundle-resource-files \
84        gswbundle-localized-resource-files \
85        gswbundle-webresource-dir \
86        gswbundle-webresource-files \
87        gswbundle-localized-webresource-files
88
89# On Solaris we don't need to specifies the libraries the bundle needs.
90# How about the rest of the systems? ALL_BUNDLE_LIBS is temporary empty.
91#ALL_GSWBUNDLE_LIBS = $(ADDITIONAL_GSW_LIBS) $(AUXILIARY_GSW_LIBS) $(GSW_LIBS) $(ALL_LIBS)
92
93internal-gswbundle-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) \
94                          $(OBJ_DIRS_TO_CREATE) \
95                          build-bundle-dir \
96                          build-bundle
97
98GSWBUNDLE_DIR_NAME = $(GNUSTEP_INSTANCE:=$(GSWBUNDLE_EXTENSION))
99GSWBUNDLE_DIR = $(GNUSTEP_BUILD_DIR)/$(GSWBUNDLE_DIR_NAME)
100GSWBUNDLE_FILE_NAME = \
101    $(GSWBUNDLE_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)
102GSWBUNDLE_FILE = $(GNUSTEP_BUILD_DIR)/$(GSWBUNDLE_FILE_NAME)
103GSWBUNDLE_RESOURCE_DIRS = $(foreach d, $(RESOURCE_DIRS), $(GSWBUNDLE_DIR)/Resources/$(d))
104GSWBUNDLE_WEBSERVER_RESOURCE_DIRS =  $(foreach d, $(WEBSERVER_RESOURCE_DIRS), $(GSWBUNDLE_DIR)/Resources/WebServer/$(d))
105
106build-bundle-dir: $(GSWBUNDLE_DIR)/Resources \
107                  $(GSWBUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR) \
108                  $(GSWBUNDLE_RESOURCE_DIRS)
109
110$(GSWBUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR):
111	$(ECHO_CREATING)$(MKDIRS) $(GSWBUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR)$(END_ECHO)
112
113$(GSWBUNDLE_RESOURCE_DIRS):
114	$(ECHO_CREATING)$(MKDIRS) $(GSWBUNDLE_RESOURCE_DIRS)$(END_ECHO)
115
116build-bundle: $(GSWBUNDLE_FILE) \
117              gswbundle-components \
118              gswbundle-resource-files \
119              gswbundle-localized-resource-files \
120              gswbundle-localized-webresource-files \
121              gswbundle-webresource-files
122
123
124$(GSWBUNDLE_FILE): $(OBJ_FILES_TO_LINK)
125ifeq ($(OBJ_FILES_TO_LINK),)
126	$(WARNING_EMPTY_LINKING)
127endif
128	$(ECHO_LINKING)$(GSWBUNDLE_LD) $(GSWBUNDLE_LDFLAGS) \
129	                $(ALL_LDFLAGS) -o $(LDOUT)$(GSWBUNDLE_FILE) \
130			$(OBJ_FILES_TO_LINK) \
131	                $(ALL_LIB_DIRS) $(ALL_GSWBUNDLE_LIBS)$(END_ECHO)
132
133gswbundle-components: $(GSWBUNDLE_DIR)
134ifneq ($(strip $(COMPONENTS)),)
135	@(echo "Linking components into the bundle wrapper..."; \
136        cd $(GSWBUNDLE_DIR)/Resources; \
137        for component in $(COMPONENTS); do \
138	  if [ -d ../../$$component ]; then \
139	    $(LN_S) -f ../../$$component ./;\
140	  fi; \
141        done; \
142	echo "Linking localized components into the bundle wrapper..."; \
143        for l in $(LANGUAGES); do \
144	  if [ -d ../../$$l.lproj ]; then \
145	    $(MKDIRS) $$l.lproj; \
146	    cd $$l.lproj; \
147	    for f in $(COMPONENTS); do \
148	      if [ -d ../../../$$l.lproj/$$f ]; then \
149	        $(LN_S) -f ../../../$$l.lproj/$$f .;\
150	      fi;\
151	    done;\
152	    cd ..; \
153	  fi;\
154	done)
155endif
156
157gswbundle-resource-files: $(GSWBUNDLE_DIR)/bundle-info.plist \
158                          $(GSWBUNDLE_DIR)/Resources/Info-gnustep.plist
159ifneq ($(strip $(RESOURCE_FILES)),)
160	@(echo "Linking resources into the bundle wrapper..."; \
161	cd $(GSWBUNDLE_DIR)/Resources/; \
162	for ff in $(RESOURCE_FILES); do \
163	  $(LN_S) -f ../../$$ff .;\
164	done)
165endif
166
167gswbundle-localized-resource-files: $(GSWBUNDLE_DIR)/Resources/Info-gnustep.plist
168ifneq ($(strip $(LOCALIZED_RESOURCE_FILES)),)
169	@(echo "Linking localized resources into the bundle wrapper..."; \
170	cd $(GSWBUNDLE_DIR)/Resources; \
171	for l in $(LANGUAGES); do \
172	  if [ -d ../../$$l.lproj ]; then \
173	    $(MKDIRS) $$l.lproj; \
174	    cd $$l.lproj; \
175	    for f in $(LOCALIZED_RESOURCE_FILES); do \
176	      if [ -f ../../../$$l.lproj/$$f ]; then \
177	        $(LN_S) -f ../../../$$l.lproj/$$f .;\
178	      fi;\
179	    done;\
180	    cd ..;\
181	  else\
182	   echo "Warning - $$l.lproj not found - ignoring";\
183	  fi;\
184	done)
185endif
186
187gswbundle-webresource-dir:
188	$(ECHO_CREATING)$(MKDIRS) $(GSWBUNDLE_WEBSERVER_RESOURCE_DIRS)$(END_ECHO)
189
190gswbundle-webresource-files: $(GSWBUNDLE_DIR)/Resources/WebServer \
191                              gswbundle-webresource-dir
192ifneq ($(strip $(WEBSERVER_RESOURCE_FILES)),)
193	@(echo "Linking webserver resources into the application wrapper..."; \
194	cd $(GSWBUNDLE_DIR)/Resources/WebServer; \
195	for ff in $(WEBSERVER_RESOURCE_FILES); do \
196	  $(LN_S) -f ../../WebServerResources/$$ff .;\
197	done)
198endif
199
200gswbundle-localized-webresource-files: $(GSWBUNDLE_DIR)/Resources/WebServer \
201                                        gswbundle-webresource-dir
202ifneq ($(strip $(LOCALIZED_WEBSERVER_RESOURCE_FILES)),)
203	@(echo "Linking localized web resources into the application wrapper..."; \
204	cd $(GSWBUNDLE_DIR)/Resources/WebServer; \
205	for l in $(LANGUAGES); do \
206	  if [ -d ../../WebServerResources/$$l.lproj ]; then \
207	    $(MKDIRS) $$l.lproj; \
208	    cd $$l.lproj; \
209	    for f in $(LOCALIZED_WEBSERVER_RESOURCE_FILES); do \
210	      if [ -f ../../../WebServerResources/$$l.lproj/$$f ]; then \
211	        if [ ! -r $$f ]; then \
212	          $(LN_S) ../../../WebServerResources/$$l.lproj/$$f $$f;\
213	        fi;\
214	      fi;\
215	    done;\
216	    cd ..; \
217	  else \
218	    echo "Warning - WebServerResources/$$l.lproj not found - ignoring";\
219	  fi;\
220	done)
221endif
222
223PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS))
224
225ifeq ($(PRINCIPAL_CLASS),)
226  PRINCIPAL_CLASS = $(GNUSTEP_INSTANCE)
227endif
228
229$(GSWBUNDLE_DIR)/bundle-info.plist: $(GSWBUNDLE_DIR)
230	@(cd $(GSWBUNDLE_DIR); $(LN_S) -f ../bundle-info.plist .)
231
232HAS_GSWCOMPONENTS = $($(GNUSTEP_INSTANCE)_HAS_GSWCOMPONENTS)
233
234$(GSWBUNDLE_DIR)/Resources/Info-gnustep.plist: $(GSWBUNDLE_DIR)/Resources
235	$(ECHO_CREATING)(echo "{"; echo '  NOTE = "Automatically generated, do not edit!";'; \
236	  echo "  NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \
237	  echo "  NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \
238	  if [ "$(HAS_GSWCOMPONENTS)" != "" ]; then \
239	    echo "  HasGSWComponents = \"$(HAS_GSWCOMPONENTS)\";"; \
240	  fi; \
241	  echo "}") >$@$(END_ECHO)
242
243$(GSWBUNDLE_DIR)/Resources:
244	$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
245
246$(GSWBUNDLE_DIR)/Resources/WebServer:
247	$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
248
249internal-gswbundle-install_:: $(GSWBUNDLE_INSTALL_DIR) shared-instance-headers-install
250	$(ECHO_INSTALLING)rm -rf $(GSWBUNDLE_INSTALL_DIR)/$(GSWBUNDLE_DIR_NAME); \
251	(cd $(GNUSTEP_BUILD_DIR); $(TAR) chX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GSWBUNDLE_DIR_NAME)) | (cd $(GSWBUNDLE_INSTALL_DIR); $(TAR) xf -)$(END_ECHO)
252ifneq ($(CHOWN_TO),)
253	$(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $(GSWBUNDLE_INSTALL_DIR)/$(GSWBUNDLE_DIR_NAME)$(END_ECHO)
254endif
255ifeq ($(strip),yes)
256	$(ECHO_STRIPPING)$(STRIP) $(GSWBUNDLE_INSTALL_DIR)/$(GSWBUNDLE_FILE_NAME)$(END_ECHO)
257endif
258
259$(GSWBUNDLE_INSTALL_DIR):
260	$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
261
262internal-gswbundle-uninstall_:: shared-instance-headers-uninstall
263	$(ECHO_UNINSTALLING)rm -rf $(GSWBUNDLE_INSTALL_DIR)/$(GSWBUNDLE_DIR_NAME)$(END_ECHO)
264
265include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make
266