home *** CD-ROM | disk | FTP | other *** search
/ OpenStep (Enterprise) / OpenStepENTCD.toast / OEDEV / DEV.Z / library.make < prev    next >
Encoding:
Text File  |  1996-09-08  |  9.2 KB  |  244 lines

  1. #
  2. #                                 library.make
  3. #
  4.  
  5. library:: all
  6.  
  7. include $(MAKEFILEDIR)/common.make
  8. -include $(LOCAL_MAKEFILEDIR)/library.make.preamble
  9.  
  10. DYLIB_SYMLINK_NAME = $(LIBRARY_PREF)$(NAME)$(BUILD_TYPE_SUFFIX).dylib
  11. DYLIB_INSTALL_NAME = $(LIBRARY_PREF)$(NAME)$(BUILD_TYPE_SUFFIX).$(DEPLOY_WITH_VERSION_NAME).dylib
  12. DYLIB_INSTALL_DIR = $(INSTALLDIR)
  13.  
  14. ENABLE_INFO_DICTIONARY = NO
  15.  
  16. RESOURCES_ROOT = $(PRODUCT_ROOT)
  17.  
  18. DYNAMIC_BUILD_TYPE_SUFFIX = ""
  19. DEBUG_BUILD_TYPE_SUFFIX = "_g"
  20. PROFILE_BUILD_TYPE_SUFFIX = "_p"
  21.  
  22. all debug profile posix shlib:: 
  23.     @($(check_for_gnumake) ; \
  24.     $(process_target_archs) ; \
  25.     $(set_dynamic_flags) ; \
  26.     $(set_objdir) ; \
  27.     for arch in $$archs ; do \
  28.            $(set_should_build) ; \
  29.        if [ "$$should_build" = "no" ] ; then continue ; fi ; \
  30.        echo == Making target $@ for $(NAME) \($$arch\) == ; \
  31.        ofile_dir="$(OBJROOT)/`echo $$buildtype`_$$objdir/$$arch" ; \
  32.        $(MAKE) project \
  33.         "SYM_DIR = $(SYMROOT)/$(DERIVED_SRC_DIR_NAME)" \
  34.         "OFILE_DIR = $$ofile_dir" \
  35.         "BUILD_TYPE_CFLAGS = $($@_target_CFLAGS) $$dynamic_cflags" \
  36.         "BUILD_TYPE_LDFLAGS = $($@_target_LDFLAGS)" \
  37.         "RC_CFLAGS = -arch $$arch $$archless_rcflags" \
  38.         "ALL_ARCH_FLAGS = $$arch_flags" \
  39.         "RC_ARCHS = $$archs" \
  40.         "TARGET_ARCH = $$arch" \
  41.         "BUILD_TARGET = $@" \
  42.         "BUILD_TYPE_SUFFIX = $$build_type_suffix" \
  43.         "DEVROOT = $(DEVROOT)" \
  44.         "BUILD_OFILES_LIST_ONLY = $(BUILD_OFILES_LIST_ONLY)" \
  45.         "PRODUCT_ROOT = $(SYMROOT)" \
  46.         "TOP_PRODUCT_ROOT = $(SYMROOT)" \
  47.         "IS_TOPLEVEL = YES" \
  48.         "CODE_GEN_STYLE = $(CODE_GEN_STYLE)" \
  49.         "INSTALLDIR = $(INSTALLDIR)" \
  50.         "MAKEFILEDIR = $(MAKEFILEDIR)" \
  51.         "DSTROOT = $(DSTROOT)" \
  52.         "SRCROOT = $(SRCROOT)" \
  53.         "OBJROOT = $(OBJROOT)" \
  54.         "SYMROOT = $(SYMROOT)" ; \
  55.         if [ -n "$$last_arch" ] ; then \
  56.         multiple_archs=yes ; \
  57.         fi ; \
  58.         last_arch=$$arch ; \
  59.         lists="$$lists $$ofile_dir/$(NAME).ofileList" ; \
  60.         done ; \
  61.     $(MAKE) configure_for_target_archs \
  62.         "TOP_PRODUCT_ROOT = $(SYMROOT)" \
  63.         "PRODUCT_ROOT = $(SYMROOT)" \
  64.         "BUILD_TYPE_SUFFIX = $$build_type_suffix" \
  65.         "BAD_PREFIX = `echo $$buildtype`_$$objdir/" \
  66.         "OFILE_DIR = $(OBJROOT)/`echo $$buildtype`_$$objdir" \
  67.         "MULTIPLE_ARCHS = $$multiple_archs" \
  68.         "SINGLE_ARCH = $$last_arch" \
  69.         "RC_ARCHS = $$archs" \
  70.         "ARCH_SPECIFIC_OFILELISTS = $$lists" \
  71.         "BUILD_OFILES_LIST_ONLY = $(BUILD_OFILES_LIST_ONLY)" \
  72.         "CODE_GEN_STYLE = $(CODE_GEN_STYLE)" \
  73.         "OBJROOT = $(OBJROOT)" \
  74.         "SYMROOT = $(SYMROOT)" \
  75.         "MAKEFILEDIR = $(MAKEFILEDIR)")
  76.  
  77. configure_for_target_archs::
  78.     @($(set_dynamic_flags) ; \
  79.     for arch in $(RC_ARCHS) ; do \
  80.         dependencies="$$dependencies $(SYMROOT)/$(LIBRARY_PREF)$(NAME)$(BUILD_TYPE_SUFFIX).$$arch$$library_ext" ;\
  81.         lipo_args="$$lipo_args -arch $$arch $(SYMROOT)/$(LIBRARY_PREF)$(NAME)$(BUILD_TYPE_SUFFIX).$$arch$$library_ext" ; \
  82.     done ; \
  83.     $(set_should_build) ; \
  84.     if [ "$$should_build" = "yes"  \
  85.        -a "$(BUILD_OFILES_LIST_ONLY)" != "YES" ] ; then \
  86.        $(MAKE) final \
  87.         "SYMROOT = $(SYMROOT)" \
  88.         "LIB_NAME = $(LIBRARY_PREF)$(NAME)$(BUILD_TYPE_SUFFIX)$$library_ext" \
  89.         "DEPENDENCIES = $$dependencies" \
  90.         "LIPO_ARGS = $$lipo_args" \
  91.         "MULTIPLE_ARCHS = $(MULTIPLE_ARCHS)" \
  92.         "SINGLE_ARCH = $(SINGLE_ARCH)" \
  93.         "RC_ARCHS = $(RC_ARCHS)" \
  94.         "CODE_GEN_STYLE = $(CODE_GEN_STYLE)" \
  95.         "MAKEFILEDIR = $(MAKEFILEDIR)" ; \
  96.     else \
  97.         $(ECHO) Not configuring library $(NAME). ; \
  98.     fi)
  99.  
  100. .PHONY : final
  101.  
  102. final: $(SYMROOT)/$(LIB_NAME)
  103.         
  104. $(SYMROOT)/$(LIB_NAME): $(DEPENDENCIES)
  105.     @($(set_dynamic_flags) ; \
  106.     if [ -n "$(MULTIPLE_ARCHS)" ] ; then \
  107.         cmd="$(LIPO) -create $(LIPO_ARGS) -o $@" ; \
  108.     else \
  109.         $(RM) -f $@ ; \
  110.         cmd="$(TRANSMOGRIFY)  $(SYMROOT)/$(LIBRARY_PREF)$(NAME)$(BUILD_TYPE_SUFFIX).$(SINGLE_ARCH)$$library_ext $@" ; \
  111.     fi ; \
  112.     echo $$cmd ; $$cmd ; \
  113.         if [ "$(PLATFORM_OS)" = "winnt" -a -r $(NAME).def ] ; then \
  114.        $(RM) -f $(PRODUCT_ROOT)/$(LIBRARY_PREF)$(NAME)$(BUILD_TYPE_SUFFIX).$(SINGLE_ARCH).exp ; \
  115.        cmd="$(TRANSMOGRIFY) $(SYMROOT)/$(LIBRARY_PREF)$(NAME)$(BUILD_TYPE_SUFFIX).$(SINGLE_ARCH).lib $(SYMROOT)/$(LIBRARY_PREF)$(NAME)$(BUILD_TYPE_SUFFIX).lib" ; \
  116.        $(ECHO) $$cmd ; $$cmd ; \
  117.         fi ; \
  118.     if [ "$(DELETE_THIN_RESULTS)" = "YES" ] ; then \
  119.          cmd="$(RM) -f $(DEPENDENCIES)" ; \
  120.          echo $$cmd ; $$cmd ; \
  121.     fi)
  122.  
  123.  
  124. MY_OFILE_LIST = $(OFILE_DIR)/$(NAME).ofileList
  125.  
  126. # The following needs to detect when the project rule has not been invoked 
  127. # from above as a top-level library project.
  128.  
  129. project:: initial_targets all_subprojects resources
  130.     @($(set_dynamic_flags) ; \
  131.     $(MAKE) build_product \
  132.            "PRODUCT = $(SYMROOT)/$(LIBRARY_PREF)$(NAME)$(BUILD_TYPE_SUFFIX).$(TARGET_ARCH)$$library_ext" \
  133.                   "OFILE_DIR = $(OFILE_DIR)" \
  134.                   "SYM_DIR = $(SYM_DIR)" \
  135.                   "DEV_HEADER_DIR_BASE = $(DEV_HEADER_DIR_BASE)" \
  136.            "CODE_GEN_STYLE = $(CODE_GEN_STYLE)" \
  137.            "BUILD_OFILES_LIST_ONLY = $(BUILD_OFILES_LIST_ONLY)" \
  138.                   "MAKEFILEDIR = $(MAKEFILEDIR)" \
  139.                   "DSTROOT = $(DSTROOT)" \
  140.                   "SRCROOT = $(SRCROOT)" \
  141.                   "OBJROOT = $(OBJROOT)" \
  142.                   "SYMROOT = $(SYMROOT)" )
  143.  
  144. build_product: $(PRODUCT) 
  145.  
  146. set_extra_libtool_flags = \
  147.     ofileList_flags="-filelist $(MY_OFILE_LIST),$(OFILE_DIR)"
  148.  
  149. $(PRODUCT): $(PRODUCT_DEPENDS)
  150.     @((cd $(OFILE_DIR) ; $(OFILE_LIST_TOOL) -removePrefix $(OFILE_DIR)/ -removePrefix ../ $(NON_SUBPROJ_OFILES) $(SUBPROJ_OFILELISTS) $(OTHER_OFILES) $(OTHER_GENERATED_OFILES) -o $(NAME).ofileList) ; \
  151.       $(set_dynamic_link_flags) ; \
  152.       $(set_extra_libtool_flags) ; \
  153.       frameworks=`$(FRAMEWORK_TOOL) $(FRAMEWORKS) $(BUILD_TARGET)` ; \
  154.       if [ "$(BUILD_OFILES_LIST_ONLY)" != "YES" ] ; then \
  155.          cmd="$(LIBTOOL) $$dynamic_libtool_flags $(OTHER_LIBTOOL_FLAGS) $(PLATFORM_SPECIFIC_LIBTOOL_FLAGS) $(ALL_LDFLAGS) -arch_only $(TARGET_ARCH) -o $@ $$ofileList_flags $$frameworks $(LIBS) $(OTHER_LIBS)" ; \
  156.            echo $$cmd ; $$cmd ; \
  157.       fi)
  158.  
  159. PROJECT_TYPE_SPECIFIC_GARBAGE = $(SYMROOT)/$(LIBRARY_PREF)$(NAME)*.a $(SYMROOT)/$(LIBRARY_PREF)$(NAME)*.dylib 
  160.  
  161. projectType_specific_exported_vars = \
  162.     "BUILD_OFILES_LIST_ONLY = $(BUILD_OFILES_LIST_ONLY)" \
  163.      "CODE_GEN_STYLE = $(CODE_GEN_STYLE)" \
  164.     "DEV_HEADER_DIR_BASE = $$header_base" \
  165.     "BUILD_OFILES_LIST_ONLY = YES"
  166.  
  167.  
  168. ifeq ($(PLATFORM_OS)-$(REINSTALLING), winnt-)
  169. install:: all
  170.           $(MAKE) reinstall_stripped REINSTALLING=YES
  171. else
  172. install:: all before_install $(OTHER_INSTALL_DEPENDS) common_install
  173. endif
  174.  
  175. debug_install:: debug before_install $(OTHER_DEBUG_INSTALL_DEPENDS) common_debug_install
  176. profile_install:: profile before_install $(OTHER_PROFILE_INSTALL_DEPENDS) common_profile_install
  177.  
  178. before_install::
  179.  
  180. ifeq ("$(PLATFORM_OS)", "winnt")
  181. $(DSTROOT)$(IMPORT_LIBRARY_DIR):
  182.     $(MKDIRS) $(DSTROOT)$(IMPORT_LIBRARY_DIR)
  183.  
  184. common_install common_debug_install common_profile_install:: installhdrs $(DSTROOT)$(IMPORT_LIBRARY_DIR)
  185. else
  186. common_install common_debug_install common_profile_install:: installhdrs
  187. endif
  188.     @($(process_target_archs) ; \
  189.     if [ "$(BUILD_OFILES_LIST_ONLY)" != "YES" ] ; then \
  190.         $(set_dynamic_flags) ; \
  191.         $(set_objdir) ; \
  192.         libname="$(LIBRARY_PREF)$(NAME)$$build_type_suffix$$library_ext" ; \
  193.         import_libname="$(LIBRARY_PREF)$(NAME)$$build_type_suffix.lib" ; \
  194.         $(MKDIRS) $(DSTROOT)$(INSTALLDIR) ; \
  195.         if [ "$(PLATFORM_OS)" = "nextstep" -a \
  196.           "$(LIBRARY_STYLE)" != "STATIC" -a \
  197.           "$(CODE_GEN_STYLE)" = "DYNAMIC" ] ; then \
  198.               dylib_install_name=$(LIBRARY_PREF)$(NAME)$$build_type_suffix.$(DEPLOY_WITH_VERSION_NAME)$$library_ext ; \
  199.              installed_library="$(DSTROOT)$(INSTALLDIR)/$$dylib_install_name" ; \
  200.         $(RM) -f $(DSTROOT)$(INSTALLDIR)/$$libname ; \
  201.             cmd="$(SYMLINK) $$dylib_install_name $(DSTROOT)$(INSTALLDIR)/$$libname" ; \
  202.             $(ECHO) $$cmd ; $$cmd ; \
  203.         else \
  204.             installed_library="$(DSTROOT)$(INSTALLDIR)/$$libname" ; \
  205.             installed_import_library="$(DSTROOT)$(IMPORT_LIBRARY_DIR)/$$import_libname" ; \
  206.         fi ; \
  207.         if [ "$(STRIP_ON_INSTALL)" = "YES" ] ; then \
  208.         strip_install_flags="$(LIBRARY_INSTALL_OPTS)" ;\
  209.         fi ; \
  210.         $(RM) -f $$installed_library ; \
  211.         cmd="$(INSTALL) $$strip_install_flags -m 555 -o $(INSTALL_AS_USER) -g $(INSTALL_AS_GROUP) $(SYMROOT)/$$libname $$installed_library" ; \
  212.         $(ECHO) $$cmd ; $$cmd || exit 1; \
  213.         if [ "$(INSTALL_PERMISSIONS)" != "" ] ; then \
  214.         $(ECHO) $(CHMOD) $(INSTALL_PERMISSIONS) $$installed_library ; \
  215.         $(CHMOD) $(INSTALL_PERMISSIONS) $$installed_library ; \
  216.         fi ; \
  217.         if [ "$(PLATFORM_OS)" = "winnt" ] ; then \
  218.           $(RM) -f $$installed_import_library ; \
  219.           cmd="$(INSTALL) $$strip_install_flags -m 555 -o $(INSTALL_AS_USER) -g $(INSTALL_AS_GROUP) $(SYMROOT)/$$import_libname $$installed_import_library" ; \
  220.           $(ECHO) $$cmd ; $$cmd || exit 1; \
  221.           if [ "$(INSTALL_PERMISSIONS)" != "" ] ; then \
  222.           $(ECHO) $(CHMOD) $(INSTALL_PERMISSIONS) $$installed_import_library ; \
  223.           $(CHMOD) $(INSTALL_PERMISSIONS) $$installed_import_library ; \
  224.           fi ; \
  225.         fi ; \
  226.     fi ; \
  227.     $(MAKE) finalize_install \
  228.         "DSTROOT = $(DSTROOT)" \
  229.         "SRCROOT = $(SRCROOT)" \
  230.         "OBJROOT = $(OBJROOT)" \
  231.         "SYMROOT = $(SYMROOT)" \
  232.         "DEVROOT = $(DEVROOT)" \
  233.         "CODE_GEN_STYLE = $(CODE_GEN_STYLE)" \
  234.         "INSTALLDIR = $(INSTALLDIR)" \
  235.         "PRODUCT_ROOT = $(DSTROOT)$(INSTALLDIR)" \
  236.         "PRODUCT = $$installed_library" \
  237.         "SYM_DIR = $(SYMROOT)/$(DERIVED_SRC_DIR_NAME)" \
  238.         "OFILE_DIR = $(OBJROOT)/$$objdir/$$arch" \
  239.         "MAKEFILEDIR = $(MAKEFILEDIR)" \
  240.         "RC_CFLAGS = $$arch_cflags" \
  241.         "RC_ARCHS = $$archs" )
  242.  
  243. -include $(LOCAL_MAKEFILEDIR)/library.make.postamble
  244.