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