home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Makefiles / app / app.make next >
Text File  |  1995-03-07  |  9KB  |  249 lines

  1. #
  2. #                                  app.make
  3. #
  4.  
  5. APPICONFLAGS =  -sectcreate __ICON __header $(NAME).iconheader  \
  6.         -segprot __ICON r r $(ICONSECTIONS) \
  7.                 $(OTHER_ICONSECTIONS)
  8. ICONHEADER = $(NAME).iconheader
  9. PRODUCT_ROOT = $(SYMROOT)/$(NAME).app
  10.  
  11. APP_MAKEFILE_DIR = /NextDeveloper/Makefiles/app
  12. include $(APP_MAKEFILE_DIR)/common.make
  13.  
  14.  
  15. all:: app
  16.     
  17. app::
  18.     @($(MKDIRS) $(PRODUCT_ROOT) ; \
  19.      $(process_target_archs)_obj ; \
  20.     $(set_bundle_ext) ; \
  21.     if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
  22.         language_cflags="" ; \
  23.         libs="$(LIBS)" ; \
  24.         other_libs="$(OTHER_LIBS)" ; \
  25.     else \
  26.         language_cflags="-DKANJI" ; \
  27.         libs="$(LIBS:lNeXT_s=lNeXTJ_s)" ; \
  28.         other_libs="$(OTHER_LIBS:lNeXT_s=lNeXTJ_s)" ; \
  29.     fi ; \
  30.     $(MAKE) project \
  31.         "PRODUCT_ROOT = $(PRODUCT_ROOT)" \
  32.         "TOP_PRODUCT_ROOT = $(PRODUCT_ROOT)" \
  33.         "PRODUCT = $(PRODUCT_ROOT)/$(NAME)" \
  34.         "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  35.         "PROJ_CFLAGS = $(NORMAL_CFLAGS) $$language_cflags" \
  36.         "LIBS = $$libs" \
  37.         "OTHER_LIBS = $$other_libs" \
  38.         "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
  39.         "BUNDLE_EXTENSION = $$bundle_ext" \
  40.         "DEVROOT = $(DEVROOT)" \
  41.         "RC_CFLAGS = $$arch_cflags" \
  42.         "RC_ARCHS = $$archs" \
  43.         "SRCROOT = $(SRCROOT)" \
  44.         "DSTROOT = $(DSTROOT)" \
  45.         "OBJROOT = $(OBJROOT)" \
  46.         "SYMROOT = $(SYMROOT)/sym" \
  47.         "SYM_DIR = $(SYMROOT)/sym" )
  48.  
  49. debug::
  50.     @($(MKDIRS) $(NAME).debug ; \
  51.      $(process_target_archs)_debug_obj ; \
  52.     $(set_bundle_ext) ; \
  53.     if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
  54.         language_cflags="" ; \
  55.         libs="$(DEBUG_LIBS)" ; \
  56.         other_libs="$(OTHER_DEBUG_LIBS)" ; \
  57.         other_japanese_libs="" ; \
  58.     else \
  59.         language_cflags="-DKANJI" ; \
  60.         libs="$(DEBUG_LIBS:lNeXT_s=lNeXTJ_s)" ; \
  61.         other_libs="$(OTHER_DEBUG_LIBS:lNeXT_s=lNeXTJ_s)" ; \
  62.         other_japanese_libs="$(OTHER_JAPANESE_DEBUG_LIBS)" ; \
  63.     fi ; \
  64.     $(MAKE) project \
  65.         "PRODUCT_ROOT = $(PRODUCT_ROOT:.app=.debug)" \
  66.         "TOP_PRODUCT_ROOT = $(PRODUCT_ROOT:.app=.debug)" \
  67.         "PRODUCT = $(PRODUCT_ROOT:.app=.debug)/$(NAME)" \
  68.         "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  69.         "PROJ_CFLAGS = $(DEBUG_CFLAGS) $$language_cflags" \
  70.         "LIBS = $$libs" "OTHER_LIBS = $$other_libs" \
  71.         "OTHER_JAPANESE_LIBS = $$other_japanese_libs" \
  72.         "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
  73.         "BUNDLE_EXTENSION = $$bundle_ext" \
  74.         "DEVROOT = $(DEVROOT)" \
  75.         "RC_CFLAGS = $$arch_cflags" \
  76.         "RC_ARCHS = $$archs" \
  77.         "SRCROOT = $(SRCROOT)" \
  78.         "DSTROOT = $(DSTROOT)" \
  79.         "OBJROOT = $(OBJROOT)" \
  80.         "SYMROOT = $(SYMROOT)/sym" \
  81.         "SYM_DIR = $(SYMROOT)/sym" )
  82.  
  83. profile::
  84.     @($(MKDIRS) $(NAME).profile ; \
  85.      $(process_target_archs)_profile_obj ; \
  86.     $(set_bundle_ext) ; \
  87.     if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
  88.         language_cflags="" ; \
  89.         libs="$(PROF_LIBS)" ; \
  90.         other_libs="$(OTHER_PROF_LIBS)" ; \
  91.         other_japanese_libs="" ; \
  92.     else \
  93.         language_cflags="-DKANJI" ; \
  94.         libs="$(PROF_LIBS:lNeXT_s=lNeXTJ_s)" ; \
  95.         other_libs="$(OTHER_PROF_LIBS:lNeXT_s=lNeXTJ_s)" ; \
  96.         other_japanese_libs="$(OTHER_JAPANESE_PROF_LIBS)" ; \
  97.     fi ; \
  98.     $(MAKE) project \
  99.         "PRODUCT_ROOT = $(PRODUCT_ROOT:.app=.profile)" \
  100.         "TOP_PRODUCT_ROOT = $(PRODUCT_ROOT:.app=.profile)" \
  101.         "PRODUCT = $(PRODUCT_ROOT:.app=.profile)/$(NAME)" \
  102.         "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  103.         "PROJ_CFLAGS = $(PROFILE_CFLAGS) $$language_cflags" \
  104.         "LIBS = $$libs" "OTHER_LIBS = $$other_libs" \
  105.         "OTHER_JAPANESE_LIBS = $$other_japanese_libs" \
  106.         "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
  107.         "BUNDLE_EXTENSION = $$bundle_ext" \
  108.         "DEVROOT = $(DEVROOT)" \
  109.         "RC_CFLAGS = $$arch_cflags" \
  110.         "RC_ARCHS = $$archs" \
  111.         "SRCROOT = $(SRCROOT)" \
  112.         "DSTROOT = $(DSTROOT)" \
  113.         "OBJROOT = $(OBJROOT)" \
  114.         "SYMROOT = $(SYMROOT)/sym" \
  115.         "SYM_DIR = $(SYMROOT)/sym" )
  116.  
  117.  
  118.  
  119. depend:: Makefile.dependencies $(SUBPROJECTS:.subproj=.depend) $(BUNDLES:.bproj=.depend) $(TOOLS:.tproj=.depend)
  120.  
  121. # Note: The order of the following project dependencies is very important.  subcomponents must be after $(PROJECT_OFILES) in case a subcomponent relies upon something (e.g. generated .h file) at the top level, but all subprojects must be built (hopefully by one invocation of make in that subdirectory) before the $(PRODUCT) can be linked.
  122.  
  123. project::   $(INITIAL_TARGETS) toplevel_subcomponents resources $(PRODUCT)
  124.  
  125. toplevel_subcomponents:: subprojs bundles tools
  126.     -@($(RM) -f $(TOP_PRODUCT_ROOT)/$(CHANGES_FILE) ; \
  127.     $(ECHO) "$(OFILE_DIR)" > $(TOP_PRODUCT_ROOT)/$(CHANGES_FILE))
  128.  
  129. $(PRODUCT): $(PRODUCT_DEPENDS) $(OTHER_PRODUCT_DEPENDS)
  130.     @(adaptors="" ; \
  131.     for adaptor in $(OTHERRELOCATABLES) none ; do \
  132.         if [ $$adaptor = "none" ] ; then break; fi ; \
  133.         for path in $(ADAPTOR_SEARCH_PATH) none ; do \
  134.             if [ $$path = "none" ] ; then break; fi ;\
  135.             if [ -r $$path/$$adaptor ] ; then \
  136.             adaptors="$$adaptors $$path/$$adaptor" ; \
  137.             break ; \
  138.         fi ; \
  139.         done ; \
  140.     done ; \
  141.     if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
  142.         other_japanese_libs=""; \
  143.     else \
  144.         other_japanese_libs="$(OTHER_JAPANESE_LIBS)" ; \
  145.     fi ; \
  146.     cmd="$(CC) $(ALL_CFLAGS) $(OBJCFLAG) $(ALL_LDFLAGS) \
  147.         $(APPICONFLAGS) -o $(PRODUCT) $(OFILES) $(OTHER_OFILES) \
  148.         $$adaptors $$other_japanese_libs $(OTHER_LIBS) $(LIBS)" ; \
  149.     echo $$cmd ; \
  150.     $$cmd    )
  151.     
  152.  
  153. $(DSTROOT)$(INSTALLDIR):
  154.     $(MKDIRS) $(DSTROOT)$(INSTALLDIR)
  155.  
  156. before_install:: $(DSTROOT)$(INSTALLDIR)
  157.     $(RM) -rf $(DSTROOT)$(INSTALLDIR)/$(NAME).app
  158.  
  159. after_install::
  160.  
  161. install:: app before_install installhdrs $(OTHER_INSTALL_DEPENDS)
  162.     (cd $(SYMROOT); $(TAR) chf - $(NAME).app) | (cd $(DSTROOT)$(INSTALLDIR); $(TAR) xf -)
  163.     @somebundles=no; \
  164.     for i in $(BUNDLES:.bproj=) none ; do \
  165.         if [ $$i = none ] ; then continue; fi; \
  166.         if [ -f $(DSTROOT)$(INSTALLDIR)/$(NAME).app/$$i*/$$i ] ; then \
  167.             somebundles=yes; \
  168.         fi ; \
  169.     done; \
  170.     (if [ $$somebundles = yes ] ; then \
  171.         cmd="$(STRIP) $(DYLD_APP_STRIP_OPTS) $(DSTROOT)$(INSTALLDIR)/$(NAME).app/$(NAME)"; \
  172.     else \
  173.         cmd="$(STRIP) $(APP_STRIP_OPTS) $(DSTROOT)$(INSTALLDIR)/$(NAME).app/$(NAME)"; \
  174.     fi ; \
  175.            echo $$cmd ; $$cmd)
  176.     @($(MAKE) strip "DSTROOT = $(DSTROOT)" \
  177.               "PARENT_DIR = $(INSTALLDIR)/$(NAME).app" ; \
  178.     $(RM) -f $(DSTROOT)$(INSTALLDIR)/$(NAME).app/$(CHANGES_FILE))
  179.     -$(CHOWN) -Rf $(INSTALL_AS_USER).$(INSTALL_AS_GROUP) \
  180.         $(DSTROOT)$(INSTALLDIR)/$(NAME).app
  181.     -$(CHMOD) -Rf go-w $(DSTROOT)$(INSTALLDIR)/$(NAME).app
  182.     @(if [ "$(INSTALL_PERMISSIONS)" != "" ] ; then \
  183.         $(ECHO) $(CHMOD) -f $(INSTALL_PERMISSIONS) \
  184.             $(DSTROOT)$(INSTALLDIR)/$(NAME).app/$(NAME); \
  185.         $(CHMOD) -f $(INSTALL_PERMISSIONS) \
  186.             $(DSTROOT)$(INSTALLDIR)/$(NAME).app/$(NAME); \
  187.     fi)
  188.     @($(process_target_archs)_obj ; \
  189.     if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
  190.         language_cflags="" ; \
  191.     else \
  192.         language_cflags="-DKANJI" ; \
  193.     fi ; \
  194.     $(MAKE) after_install     "DSTROOT=$(DSTROOT)" \
  195.                        "OBJROOT=$(OBJROOT)" \
  196.                 "SYMROOT = $(SYMROOT)/sym" \
  197.                 "SYM_DIR = $(SYMROOT)/sym" \
  198.                 "DEVROOT = $(DEVROOT)" \
  199.                 "INSTALLDIR = $(INSTALLDIR)" \
  200.                 "PRODUCT_ROOT = $(PRODUCT_ROOT)" \
  201.                 "PRODUCT = $(PRODUCT_ROOT)/$(NAME)" \
  202.                 "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  203.                 "PROJ_CFLAGS = $(NORMAL_CFLAGS) $$language_cflags" \
  204.                 "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
  205.                 "RC_CFLAGS = $$arch_cflags" \
  206.                 "RC_ARCHS = $$archs" )
  207.                 
  208.  
  209. #.DEFAULT 
  210.  
  211. help:
  212.     @if (test "$<"); then        \
  213.         $(ECHO) 'ERROR: Unrecognized Makefile target "$<"';    \
  214.     fi
  215.     @$(ECHO) 'The following targets are available:'
  216.     @$(ECHO) 
  217.     @$(ECHO) ' all         Makes the app target (below).  This is the default target.'
  218.     @$(ECHO) 
  219.     @$(ECHO) ' app         Compiles and links an optimized (and debuggable) version of the'
  220.     @$(ECHO) '             project, ready to install, into <ProjectName>.app.'
  221.     @$(ECHO)      
  222.     @$(ECHO) ' debug       Compiles (with all warnings and -DDEBUG on) and links a '
  223.     @$(ECHO) '             fully-debuggable version of the project into a <ProjectName>.debug' 
  224.     @$(ECHO) '             "app wrapper".'
  225.     @$(ECHO) 
  226.     @$(ECHO) ' profile     Compiles (with all warnings and -DPROFILE on) and links a'
  227.     @$(ECHO) '             version of the project into <ProjectName>.profile.'
  228.     @$(ECHO) '             "app wrapper" that will, when run, generate a gprof report.'
  229.     @$(ECHO) 
  230.     @$(ECHO) ' depend      Generates an optional Makefile.dependencies file for every level'
  231.     @$(ECHO) '             of the project to reflect the complete dependency graph'
  232.     @$(ECHO) '             (including headers).'
  233.     @$(ECHO) 
  234.     @$(ECHO) ' install     Builds (if needed) and copies <ProjectName>.app into the'
  235.     @$(ECHO) '             installation directory, setting permissions and owners as'
  236.     @$(ECHO) '             appropriate.'
  237.     @$(ECHO) 
  238.     @$(ECHO) ' installsrc  Installs the source files for the project into the directory'
  239.     @$(ECHO) '             specified in the SRCROOT variable in a command-line argument.'
  240.     @$(ECHO) '             Note: the target directory will be removed and recreated.'
  241.     @$(ECHO)        
  242.     @$(ECHO) ' installhdrs Installs the source files for the project.'
  243.     @$(ECHO) 
  244.     @$(ECHO) ' clean       Removes all files in the project derived from previous builds.'
  245.     @$(ECHO)  
  246.     @$(ECHO) ' help        Lists these targets with their descriptions.'
  247.     @$(ECHO) 
  248.     @$(ECHO) 'For more details, see the comments in /NextDeveloper/Makefiles/app/*.make.'
  249.