home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Makefiles / project / app.make < prev    next >
Text File  |  1996-09-04  |  8KB  |  206 lines

  1. #
  2. #                                  app.make
  3. #
  4.  
  5. all:: app
  6.  
  7. PRODUCT = $(PRODUCT_ROOT)/$(PRODUCT_NAME)
  8. PROJECT_TYPE_SPECIFIC_GARBAGE = $(SYMROOT)/$(NAME).app \
  9.                 $(SYMROOT)/$(NAME).service \
  10.                 $(SYMROOT)/$(NAME).debug \
  11.                 $(SYMROOT)/$(NAME).profile
  12.  
  13. RESOURCES_ROOT = $(PRODUCT_ROOT)/Resources
  14. ifeq ("$(PLATFORM_OS)", "winnt")
  15. RESOURCE_OFILE = appResources.o
  16. REG_FILE = appResources.reg
  17. endif
  18.  
  19. projectType_specific_exported_vars = \
  20.     "BUILD_OFILES_LIST_ONLY = $(BUILD_OFILES_LIST_ONLY)" \
  21.      "CODE_GEN_STYLE = $(CODE_GEN_STYLE)" \
  22.     "DEV_HEADER_DIR_BASE = $$header_base" \
  23.     "PRODUCT_ROOT=$$prod_root/Resources"
  24.  
  25. ICONHEADER = $(NAME).iconheader
  26. APPICONFLAGS =  -sectcreate __ICON __header $(ICONHEADER) \
  27.         -segprot __ICON r r $(ICONSECTIONS) \
  28.                 $(OTHER_ICONSECTIONS)
  29.  
  30. include $(MAKEFILEDIR)/common.make
  31. -include $(LOCAL_MAKEFILEDIR)/app.make.preamble
  32.  
  33. # Override this for other types of wrappers, like .service wrappers
  34. APP_WRAPPER_EXTENSION = $@
  35.  
  36.  
  37. .PHONY : app debug profile
  38.  
  39. app debug profile::
  40.     @($(check_for_gnumake) ; \
  41.     $(process_target_archs) ; \
  42.     $(set_dynamic_flags) ; \
  43.     $(set_objdir) ; \
  44.     $(set_should_build) ; \
  45.     for arch in $$archs ; do \
  46.            $(set_should_build) ; \
  47.        if [ "$$should_build" = "no" ] ; then continue ; fi ; \
  48.        $(ECHO) == Making $(NAME).$(APP_WRAPPER_EXTENSION) for $$arch == ; \
  49.        ofile_dir="$(OBJROOT)/`$(ECHO) $$buildtype`_$$objdir/$$arch" ; \
  50.        $(MAKE) project \
  51.         "SYM_DIR = $(SYMROOT)/$(DERIVED_SRC_DIR_NAME)" \
  52.         "OFILE_DIR = $$ofile_dir" \
  53.         "BUILD_TYPE_CFLAGS = $($@_target_CFLAGS) $$dynamic_cflags" \
  54.         "BUILD_TYPE_LDFLAGS = $($@_target_LDFLAGS)" \
  55.         "RC_CFLAGS = -arch $$arch $$archless_rcflags" \
  56.         "RC_ARCHS = $$archs" \
  57.         "ALL_ARCH_FLAGS = $$arch_flags" \
  58.         "TARGET_ARCH = $$arch" \
  59.         "BUILD_TARGET = $@" \
  60.         "BUILD_TYPE_SUFFIX = $$build_type_suffix" \
  61.         "DEVROOT = $(DEVROOT)" \
  62.         "EXECUTABLE_DIR = $(SYMROOT)/$(DERIVED_SRC_DIR_NAME)" \
  63.         "PRODUCT_NAME = $(NAME).$$arch$(EXECUTABLE_EXT)" \
  64.         "PRODUCT_ROOT = $(SYMROOT)/$(NAME).$(APP_WRAPPER_EXTENSION)" \
  65.         "TOP_PRODUCT_ROOT = $(SYMROOT)/$(NAME).$(APP_WRAPPER_EXTENSION)" \
  66.         "IS_TOPLEVEL = YES" \
  67.         "CODE_GEN_STYLE = $(CODE_GEN_STYLE)" \
  68.         "MAKEFILEDIR = $(MAKEFILEDIR)" \
  69.         "DSTROOT = $(DSTROOT)" \
  70.         "SRCROOT = $(SRCROOT)" \
  71.         "OBJROOT = $(OBJROOT)" \
  72.         "SYMROOT = $(SYMROOT)" ; \
  73.        if [ -n "$$lipo_args" ] ; then \
  74.         multiple_archs=yes ; \
  75.        fi ; \
  76.        last_arch=$$arch ; \
  77.            lipo_args="$$lipo_args -arch $$arch $(SYMROOT)/$(NAME).$(APP_WRAPPER_EXTENSION)/$(NAME).$$arch$(EXECUTABLE_EXT)";\
  78.        dependencies="$$dependencies $(SYMROOT)/$(NAME).$(APP_WRAPPER_EXTENSION)/$(NAME).$$arch$(EXECUTABLE_EXT)" ; \
  79.         done ; \
  80.         $(set_should_build) ; \
  81.      if [ "$$should_build" != "no" ] ; then \
  82.        $(MAKE) configure_for_target_archs \
  83.         "TOP_PRODUCT_ROOT = $(SYMROOT)/$(NAME).$(APP_WRAPPER_EXTENSION)" \
  84.         "PRODUCT_ROOT = $(SYMROOT)/$(NAME).$(APP_WRAPPER_EXTENSION)" \
  85.         "DEPENDENCIES = $$dependencies" \
  86.         "BUILD_TYPE_SUFFIX = $$build_type_suffix" \
  87.         "OFILE_DIR = $(OBJROOT)/`$(ECHO) $$buildtype`_$$objdir" \
  88.         "MULTIPLE_ARCHS = $$multiple_archs" \
  89.         "SINGLE_ARCH = $$last_arch" \
  90.         "RC_ARCHS = $$archs" \
  91.         "ARCH_SPECIFIC_OFILELISTS = $$lists" \
  92.         "OBJROOT = $(OBJROOT)" \
  93.         "SYMROOT = $(SYMROOT)" \
  94.         "MAKEFILEDIR = $(MAKEFILEDIR)" ; \
  95.     fi)
  96.  
  97. configure_for_target_archs:: $(TOP_PRODUCT_ROOT)/$(NAME)$(EXECUTABLE_EXT)
  98.  
  99. $(TOP_PRODUCT_ROOT)/$(NAME)$(EXECUTABLE_EXT): $(DEPENDENCIES)
  100.     @(if [ -n "$(MULTIPLE_ARCHS)" ] ; then \
  101.         for arch in $(RC_ARCHS) ; do \
  102.         lipo_args="$$lipo_args -arch $$arch $(TOP_PRODUCT_ROOT)/$(NAME).$$arch$(EXECUTABLE_EXT)" ; \
  103.         done ; \
  104.         cmd="$(LIPO) -create $$lipo_args -o $@" ; \
  105.     else \
  106.         $(RM) -f $@ ; \
  107.         cmd="$(TRANSMOGRIFY) $(TOP_PRODUCT_ROOT)/$(NAME).$(SINGLE_ARCH)$(EXECUTABLE_EXT) $@" ; \
  108.     fi ; \
  109.     $(ECHO) $$cmd ; $$cmd ; \
  110.     if [ "$(DELETE_THIN_RESULTS)" = "YES" ] ; then \
  111.          cmd="$(RM) -f $(DEPENDENCIES)" ; \
  112.          $(ECHO) $$cmd ; $$cmd ; \
  113.     fi)
  114.  
  115. .PHONY : project
  116.  
  117. project:: initial_targets all_subprojects resources $(PRODUCT)
  118.  
  119. $(PRODUCT): $(PRODUCT_DEPENDS) $(RESOURCE_OFILE)
  120.     @($(set_dynamic_link_flags) ; \
  121.     frameworks=`$(FRAMEWORK_TOOL) $(FRAMEWORKS) $(BUILD_TARGET)` ; \
  122.     if [ "$(PLATFORM_OS)" = "winnt" ] ; then \
  123.        (cd $(OFILE_DIR) ; $(OFILE_LIST_TOOL) -removePrefix $(OFILE_DIR)/ -removePrefix ../ $(NON_SUBPROJ_OFILES) $(SUBPROJ_OFILELISTS) $(RESOURCE_OFILE) $(OTHER_OFILES) $(OTHER_GENERATED_OFILES) $$adaptors -o $(NAME).ofileList) ; \
  124.        cmd="$(CC) $$dynamic_ldflags $(ALL_CFLAGS) $(OBJCFLAG) $(ALL_LDFLAGS) \
  125.         -win -o $(PRODUCT) -filelist $(OFILE_DIR)/$(NAME).ofileList,$(OFILE_DIR)\
  126.         $$adaptors $$frameworks $(LIBS) $(OTHER_LIBS) $(WINDOWS_ENTRY_POINT_LIB)" ; \
  127.     else \
  128.        cmd="$(CC) $$dynamic_ldflags $(ALL_CFLAGS) $(OBJCFLAG) $(ALL_LDFLAGS) \
  129.         $(PLATFORM_APP_LDFLAGS) -o $(PRODUCT) $(OFILES) $(OTHER_OFILES) $(OTHER_GENERATED_OFILES) \
  130.         $$adaptors $$frameworks $(LIBS) $(OTHER_LIBS)" ; \
  131.         fi ; \
  132.     $(ECHO) $$cmd ; \
  133.     $$cmd)
  134.     
  135.  
  136. .PHONY : before_install install
  137.  
  138. before_install:: $(DSTROOT)$(INSTALLDIR)
  139.     @(if [ "$(APP_WRAPPER_EXTENSION)" != "$@" ] ; then \
  140.          wrapper_ext=$(APP_WRAPPER_EXTENSION) ; \
  141.     else \
  142.          wrapper_ext=app ; \
  143.     fi ; \
  144.     cmd="$(CHMOD) -R u+w $(DSTROOT)$(INSTALLDIR)/$(NAME).$$wrapper_ext || true" ; \
  145.     echo $$cmd ; eval $$cmd ; \
  146.     cmd="$(RM) -rf $(DSTROOT)$(INSTALLDIR)/$(NAME).$$wrapper_ext" ; \
  147.     echo $$cmd ; $$cmd)
  148.  
  149. ifeq ($(PLATFORM_OS)-$(REINSTALLING), winnt-)
  150. install:: all
  151.           $(MAKE) reinstall_stripped REINSTALLING=YES
  152. else
  153. install:: all before_install installhdrs $(OTHER_INSTALL_DEPENDS)
  154.     @($(set_should_build) ; \
  155.     if [ "$$should_build" = "yes" ] ; then \
  156.         if [ "$(APP_WRAPPER_EXTENSION)" != "install" ] ; then \
  157.           wrapper_ext=$(APP_WRAPPER_EXTENSION) ; \
  158.         else \
  159.           wrapper_ext=app ; \
  160.         fi ; \
  161.         $(ECHO) Copying $(NAME).$$wrapper_ext to $(DSTROOT)$(INSTALLDIR) ; \
  162.         (cd $(SYMROOT); $(TAR) chf - $(NAME).$$wrapper_ext) | (cd $(DSTROOT)$(INSTALLDIR); $(TAR) xf -) ; \
  163.         if [ "$(INSTALL_PERMISSIONS)" != "" ] ; then \
  164.         cmd="$(CHMOD) $(INSTALL_PERMISSIONS) $(DSTROOT)$(INSTALLDIR)/$(NAME).$$wrapper_ext/$(NAME)$(EXECUTABLE_EXT)" ; \
  165.         $(ECHO) $$cmd ; $$cmd ; \
  166.         fi ; \
  167.         $(process_target_archs) ; \
  168.         $(MAKE) finalize_install \
  169.         "DSTROOT = $(DSTROOT)" \
  170.         "SRCROOT = $(SRCROOT)" \
  171.                "OBJROOT = $(OBJROOT)" \
  172.                "SYMROOT = $(SYMROOT)" \
  173.         "SYM_DIR = $(SYMROOT)/$(DERIVED_SRC_DIR_NAME)" \
  174.         "DEVROOT = $(DEVROOT)" \
  175.         "INSTALLDIR = $(INSTALLDIR)" \
  176.         "PRODUCT_ROOT = $(DSTROOT)$(INSTALLDIR)/$(NAME).$$wrapper_ext" \
  177.         "PRODUCT = $(DSTROOT)$(INSTALLDIR)/$(NAME).$$wrapper_ext/$(NAME)" \
  178.         "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  179.         "PROJECT_SPECIFIC_CFLAGS = $(NORMAL_CFLAGS)" \
  180.         "MAKEFILEDIR = $(MAKEFILEDIR)" \
  181.         "RC_CFLAGS = $$arch_cflags" \
  182.         "RC_ARCHS = $$archs" ; \
  183.         $(CHOWN) -R $(INSTALL_AS_USER) $(DSTROOT)$(INSTALLDIR)/$(NAME).$$wrapper_ext || true; \
  184.         $(CHGRP) -R $(INSTALL_AS_GROUP) $(DSTROOT)$(INSTALLDIR)/$(NAME).$$wrapper_ext || true; \
  185.         $(CHMOD) -R a-w $(DSTROOT)$(INSTALLDIR)/$(NAME).$$wrapper_ext || true ;\
  186.     fi)
  187. endif
  188.  
  189.  
  190. extra_finalize_install_exported_vars = \
  191.     "PRODUCT_ROOT = $(PRODUCT_ROOT)/Resources"
  192.  
  193. strip_myself::
  194.     @(if [ "$(BUILD_OFILES_LIST_ONLY)" != "YES" \
  195.          -a "$(STRIP_ON_INSTALL)" = "YES" ] ; then \
  196.         cmd="$(STRIP) $(APP_STRIP_OPTS) $(PRODUCT)$(EXECUTABLE_EXT)"; \
  197.         $(ECHO) $$cmd ; $$cmd ; \
  198.     fi ; \
  199.     $(RM) -f $(PRODUCT_ROOT)/$(CHANGES_FILE_BASE).* ; \
  200.     for arch in $(RC_ARCHS) ; do \
  201.         cmd="$(RM) -f $(PRODUCT).$$arch$(EXECUTABLE_EXT)" ; \
  202.         $(ECHO) $$cmd ; $$cmd ; \
  203.     done )
  204.  
  205. -include $(LOCAL_MAKEFILEDIR)/app.make.postamble
  206.