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

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