home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Makefiles / app / library.make < prev    next >
Text File  |  1995-03-22  |  7KB  |  226 lines

  1. #
  2. #                                 library.make
  3. #
  4.  
  5. # Defaults for NeXT-specific Release Control options
  6. SRCROOT = .
  7. SYMROOT = .
  8. OBJROOT = .
  9.  
  10. PRODUCT_ROOT = $(SYMROOT)
  11. LIB_NAME = lib$(NAME).a
  12.  
  13. LIBRARY_DIR = .
  14.  
  15. set_libdir = \
  16.     if [ "$(PRODUCT_ROOT)" != "." ]; then \
  17.         libdir="$(PRODUCT_ROOT)" ; \
  18.     else \
  19.         libdir="$(LIBRARY_DIR)" ; \
  20.     fi
  21.  
  22.  
  23. APP_MAKEFILE_DIR = /NextDeveloper/Makefiles/app
  24. include $(APP_MAKEFILE_DIR)/common.make
  25. include $(APP_MAKEFILE_DIR)/specialrules.make
  26.  
  27. all:: library
  28.  
  29. bundle:: library    # temporary hack until PB supports Libraries
  30.  
  31. library::
  32.     @($(process_target_archs)_obj ; \
  33.     $(set_libdir) ; \
  34.     $(set_language_cflags) ; \
  35.     $(MAKE) project \
  36.         "DSTROOT = $(DSTROOT)" \
  37.         "INSTALLDIR = $(INSTALLDIR)" \
  38.         "TOP_PRODUCT_ROOT = $(PRODUCT_ROOT)" \
  39.         "LIBRARY_DIR = $$libdir" \
  40.         "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  41.         "SUBPROJ_OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  42.         "REL_OFILE_DIR = $$obj_dir" \
  43.         "PROJ_CFLAGS = $(NORMAL_CFLAGS) $$language_cflags" \
  44.         "MAKEFILEDIR = $(MAKEFILEDIR)" \
  45.         "BUNDLE_EXTENSION = $$bundle_ext" \
  46.         "DEVROOT = $(DEVROOT)" \
  47.         "RC_CFLAGS = $$arch_cflags" \
  48.         "RC_ARCHS = $$archs" \
  49.         "LIB_NAME = $(LIB_NAME)" \
  50.         "BUILD_TARGET = $@" \
  51.         "SRCROOT = $(SRCROOT)" \
  52.         "OBJROOT = $(OBJROOT)" \
  53.         "SYMROOT = $(SYMROOT)/sym" \
  54.         "SYM_DIR = $(SYMROOT)/sym" )
  55.  
  56. debug::
  57.     @($(process_target_archs)_debug_obj ; \
  58.     $(set_bundle_ext) ; \
  59.     $(set_libdir) ; \
  60.     $(set_language_cflags) ; \
  61.     $(MAKE) project \
  62.         "DSTROOT = $(DSTROOT)" \
  63.         "INSTALLDIR = $(INSTALLDIR)" \
  64.         "TOP_PRODUCT_ROOT = $(PRODUCT_ROOT)" \
  65.         "LIBRARY_DIR = $$libdir" \
  66.         "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  67.         "SUBPROJ_OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  68.         "REL_OFILE_DIR = $$obj_dir" \
  69.         "PROJ_CFLAGS = $(DEBUG_CFLAGS) $$language_cflags" \
  70.         "MAKEFILEDIR = $(MAKEFILEDIR)" \
  71.         "BUNDLE_EXTENSION = $$bundle_ext" \
  72.         "DEVROOT = $(DEVROOT)" \
  73.         "RC_CFLAGS = $$arch_cflags" \
  74.         "RC_ARCHS = $$archs" \
  75.         "LIB_NAME = $(LIB_NAME)" \
  76.         "BUILD_TARGET = $@" \
  77.         "SRCROOT = $(SRCROOT)" \
  78.         "OBJROOT = $(OBJROOT)" \
  79.         "SYMROOT = $(SYMROOT)/sym" \
  80.         "SYM_DIR = $(SYMROOT)/sym" )
  81.  
  82. profile::
  83.     @($(process_target_archs)_profile_obj ; \
  84.     $(set_bundle_ext) ; \
  85.     $(set_libdir) ; \
  86.     $(set_language_cflags) ; \
  87.     $(MAKE) project \
  88.         "DSTROOT = $(DSTROOT)" \
  89.         "INSTALLDIR = $(INSTALLDIR)" \
  90.         "TOP_PRODUCT_ROOT = $(PRODUCT_ROOT)" \
  91.         "LIBRARY_DIR = $$libdir" \
  92.         "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  93.         "SUBPROJ_OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  94.         "REL_OFILE_DIR = $$obj_dir" \
  95.         "PROJ_CFLAGS = $(PROFILE_CFLAGS) $$language_cflags" \
  96.         "MAKEFILEDIR = $(MAKEFILEDIR)" \
  97.         "BUNDLE_EXTENSION = $$bundle_ext" \
  98.         "DEVROOT = $(DEVROOT)" \
  99.         "RC_CFLAGS = $$arch_cflags" \
  100.         "RC_ARCHS = $$archs" \
  101.         "LIB_NAME = $(LIB_NAME)" \
  102.         "BUILD_TARGET = $@" \
  103.         "SRCROOT = $(SRCROOT)" \
  104.         "OBJROOT = $(OBJROOT)" \
  105.         "SYMROOT = $(SYMROOT)/sym" \
  106.         "SYM_DIR = $(SYMROOT)/sym" )
  107.  
  108. # 'project' in library.make builds tools last, so that they can depend on 
  109. # the library being built
  110. project:: $(INITIAL_TARGETS) toplevel_subcomponents resources $(LIBRARY_DIR)/$(LIB_NAME) tools
  111.     -@($(RM) -f $(TOP_PRODUCT_ROOT)/$(CHANGES_FILE) ; \
  112.     $(ECHO) "$(OFILE_DIR)" > $(TOP_PRODUCT_ROOT)/$(CHANGES_FILE))
  113.  
  114. toplevel_subcomponents:: subprojs
  115.  
  116.  
  117. $(LIBRARY_DIR)/$(LIB_NAME): $(LIBRARY_NAME) $(PRODUCT_DEPENDS) $(OTHER_PRODUCT_DEPENDS)
  118.     libtool -static -o $@ $(OFILES) $(OTHER_OFILES)
  119.  
  120. # Restriction: Libraries don't have sub-libraries
  121. depend:: Makefile.dependencies $(SUBPROJECTS:.subproj=.depend) $(BUNDLES:.bproj=.depend) $(TOOLS:.tproj=.depend)
  122.  
  123. $(PRODUCT_ROOT) \
  124. $(DSTROOT)$(INSTALLDIR) \
  125. $(LIBRARY_DIR):
  126.     $(MKDIRS) $@
  127.  
  128. THING_TO_STRIP = $(DSTROOT)$(INSTALLDIR)/$(LIB_NAME)
  129.  
  130. strip_myself::
  131.     @(if [ -f $(THING_TO_STRIP) ] ; then \
  132.         cmd="$(STRIP) $(LIBRARY_STRIP_OPTS) $(THING_TO_STRIP)" ; \
  133.         echo $$cmd ; $$cmd ; \
  134.     else \
  135.         echo Warning: Not able to strip $(THING_TO_STRIP) ; \
  136.     fi)
  137.  
  138. .bproj.strip .tproj.strip:
  139.     @(cd $<; \
  140.     $(MAKE_CMD) strip \
  141.         "DSTROOT = $(DSTROOT)" \
  142.         "INSTALLDIR = $(INSTALLDIR)" \
  143.         "PARENT_DIR = $(PARENT_DIR)" \
  144.         "NAME=$*")
  145.  
  146. before_install:: $(DSTROOT)$(INSTALLDIR)
  147.     $(RM) -f $(DSTROOT)$(INSTALLDIR)/$(LIB_NAME)
  148.  
  149. after_install::
  150.  
  151. # Note that the following will not correctly install a standalone
  152. # bundle under a Jasper build.  
  153.  
  154. install:: library before_install installhdrs $(OTHER_INSTALL_DEPENDS)
  155.     @($(set_libdir) ; \
  156.     lib_name="$(DSTROOT)$(INSTALLDIR)/$(LIB_NAME)" ; \
  157.     $(MKDIRS) $(DSTROOT)$(INSTALLDIR) ; \
  158.     cmd="$(CP) -p $$libdir/$(LIB_NAME) $$lib_name" ; \
  159.     $(ECHO) $$cmd ; $$cmd || exit 1; \
  160.     if [ "$(INSTALL_STRIP)" != "" ] ; then \
  161.         $(MAKE) strip \
  162.             "DSTROOT = $(DSTROOT)" \
  163.             "INSTALLDIR = $(INSTALLDIR)" \
  164.             "PARENT_DIR = $(INSTALLDIR)" ; \
  165.     fi ; \
  166.     cmd="$(CHOWN) -f $(INSTALL_AS_USER).$(INSTALL_AS_GROUP) $$lib_name" ; \
  167.     $(ECHO) $$cmd ; \
  168.     $$cmd || $(ECHO) Couldn\'t chown $$lib_name ; \
  169.     cmd="$(CHMOD) -f go-w $$lib_name" ; \
  170.     $(ECHO) $$cmd ; \
  171.     $$cmd || $(ECHO) Couldn\'t chmod $$lib_name ; \
  172.     if [ "$(INSTALL_PERMISSIONS)" != "" ] ; then \
  173.         $(ECHO) $(CHMOD) -f $(INSTALL_PERMISSIONS) $$lib_name ; \
  174.         $(CHMOD) -f $(INSTALL_PERMISSIONS) $$lib_name ; \
  175.     fi ; \
  176.     $(process_target_archs)_obj ; \
  177.     $(set_bundle_ext) ; \
  178.     $(MAKE) after_install \
  179.         "DSTROOT=$(DSTROOT)" \
  180.         "OBJROOT=$(OBJROOT)" \
  181.         "DEVROOT = $(DEVROOT)" \
  182.         "BUILD_TARGET = $@" \
  183.         "SYMROOT=$(SYMROOT)" \
  184.         "INSTALLDIR = $(INSTALLDIR)" \
  185.         "PRODUCT_ROOT = $(PRODUCT_ROOT)" \
  186.         "SYM_DIR = $(SYMROOT)/sym" \
  187.         "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  188.         "PROJ_CFLAGS = $(NORMAL_CFLAGS)" \
  189.         "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
  190.         "RC_CFLAGS = $$arch_cflags" \
  191.         "RC_ARCHS = $$archs" )
  192.  
  193. #.DEFAULT 
  194.  
  195. help:
  196.     @if (test "$<"); then        \
  197.         $(ECHO) 'ERROR: Unrecognized Makefile target "$<"';    \
  198.     fi
  199.     @$(ECHO) 'The following targets are available:'
  200.     @$(ECHO) 
  201.     @$(ECHO) ' all         Makes the library target (below).  This is the default target.'
  202.     @$(ECHO) 
  203.     @$(ECHO) ' library      Compiles and links an optimized (and debuggable) version of the'
  204.     @$(ECHO) '             library into $(NAME).a'
  205.     @$(ECHO)     
  206.     @$(ECHO) ' depend      Generates an optional Makefile.dependencies file for every level'
  207.     @$(ECHO) '             of the library to reflect the complete dependency graph'
  208.     @$(ECHO) '             (including headers).'
  209.     @$(ECHO) 
  210.     @$(ECHO) ' install     Builds (if needed) and copies <LibraryName>.a'
  211.     @$(ECHO) '             into the installation directory, setting permissions'
  212.     @$(ECHO) '             and owners as appropriate.'
  213.     @$(ECHO)     
  214.     @$(ECHO) ' installsrc  Installs the source files for the library into the directory'
  215.     @$(ECHO) '             specified in the SRCROOT variable in a command-line argument.'
  216.     @$(ECHO) '             Note: the target directory will be removed and recreated.'
  217.     @$(ECHO) 
  218.     @$(ECHO) ' installhdrs Installs the header files for the library.'
  219.     @$(ECHO) 
  220.     @$(ECHO) ' clean       Removes all files in the library derived from previous builds.'
  221.     @$(ECHO) 
  222.     @$(ECHO) ' help        Lists these targets with their descriptions.'
  223.     @$(ECHO) 
  224.     @$(ECHO) 'For more details, see the comments in /NextDeveloper/Makefiles/app/*.make.'
  225.     
  226.