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

  1. #
  2. #                               subproj.make
  3. #
  4.  
  5.  
  6. all::
  7.     @echo Sorry, you must run make from the top-level project.
  8.  
  9. RESOURCES_ROOT = $(PRODUCT_ROOT)
  10.  
  11. include $(MAKEFILEDIR)/common.make
  12. -include $(LOCAL_MAKEFILEDIR)/subproj.make.preamble
  13.  
  14. PRODUCT = $(PRODUCT_PREFIX:.subproj=_subproj.o)
  15. ENABLE_INFO_DICTIONARY = NO
  16.  
  17. HELP_OUTPUT_FILE_DIR = $(DERIVED_SRC_DIR)
  18.  
  19. projectType_specific_exported_vars = \
  20.     "DEV_HEADER_DIR_BASE = $$header_base" \
  21.     "BUILD_OFILES_LIST_ONLY = $(BUILD_OFILES_LIST_ONLY)" \
  22.     "CODE_GEN_STYLE = $(CODE_GEN_STYLE)"
  23.  
  24. .PHONY : project build_project ofileList link_subproject
  25.  
  26. project::
  27.     @(arch=$(TARGET_ARCH) ; \
  28.     $(set_should_build) ; \
  29.     if [ "$$should_build" = "no" ] ; then \
  30.        $(ECHO) " ..... $(NAME) not built for architecture $(TARGET_ARCH), platform $(PLATFORM_OS)" ; \
  31.            $(build_empty) ; \
  32.     else \
  33.        $(MAKE) build_project \
  34.                   "OFILE_DIR = $(OFILE_DIR)" \
  35.                   "SYM_DIR = $(SYM_DIR)" \
  36.            "PROPOGATED_CFLAGS = $(PROPOGATED_CFLAGS)" \
  37.            "BUILD_TYPE_SUFFIX = $(BUILD_TYPE_SUFFIX)" \
  38.                   "DEV_HEADER_DIR_BASE = $(DEV_HEADER_DIR_BASE)" \
  39.            "DEV_PROJECT_HEADER_DIR_BASE = $(DEV_PROJECT_HEADER_DIR_BASE)" \
  40.                   "BUILD_OFILES_LIST_ONLY = $(BUILD_OFILES_LIST_ONLY)" \
  41.                   "MAKEFILEDIR = $(MAKEFILEDIR)" \
  42.                   "SRCROOT = $(SRCROOT)" \
  43.                   "OBJROOT = $(OBJROOT)" \
  44.                   "SYMROOT = $(SYMROOT)" $(stop_if_error_in_name) ; \
  45.        $(MAKE) ofileList \
  46.                "MY_OFILES = $(NON_SUBPROJ_OFILES)" \
  47.                   "OFILE_DIR = $(OFILE_DIR)" \
  48.                   "SYM_DIR = $(SYM_DIR)" \
  49.                   "PRODUCT_PREFIX = $(PRODUCT_PREFIX)" \
  50.                   "VPATH = " \
  51.                   "MAKEFILEDIR = $(MAKEFILEDIR)" \
  52.                   "SRCROOT = $(SRCROOT)" \
  53.                   "OBJROOT = $(OBJROOT)" \
  54.                   "SYMROOT = $(SYMROOT)" $(stop_if_error_in_name) ; \
  55.     fi)
  56.  
  57. build_project: initial_targets all_subprojects resources $(PRODUCT)
  58.  
  59. ofileList:
  60.     @(cd $(OFILE_DIR) ; \
  61.     if [ "$(MAKE_SINGLE_MODULE)" = "YES" ] ; then \
  62.         $(OFILE_LIST_TOOL) -removePrefix ../ $(PRODUCT) $(OTHER_OFILES) $(SUBPROJ_OFILELISTS) -o ../$(NAME)_subproj.ofileList ; \
  63.     else \
  64.         $(OFILE_LIST_TOOL) -removePrefix ../ $(MY_OFILES) $(OTHER_OFILES) $(SUBPROJ_OFILELISTS) -inDirectory $(OFILE_DIR) -o ../$(NAME)_subproj.ofileList ; \
  65.     fi)
  66.  
  67. $(PRODUCT): $(PRODUCT_DEPENDS)
  68.     @(if [ \( "$(MAKE_SINGLE_MODULE)" != "YES" \
  69.                   -a "$(BUILD_OFILES_LIST_ONLY)" = "YES" \) \
  70.            -o  "$(PLATFORM_OS)" = "winnt" ] ; then \
  71.              $(build_empty) ; \
  72.         else \
  73.          if [ "`$(ECHO) $(OFILES) | wc -w`" = "       0" ] ; then \
  74.             $(ECHO) Warning: Subproject $(NAME) is empty. ; \
  75.                 $(build_empty) ; \
  76.          else \
  77.             $(MAKE) link_subproject \
  78.                   "OFILE_DIR = $(OFILE_DIR)" \
  79.                   "SYM_DIR = $(SYM_DIR)" \
  80.            "PROPOGATED_CFLAGS = $(PROPOGATED_CFLAGS)" \
  81.                   "MAKEFILEDIR = $(MAKEFILEDIR)" \
  82.                   "SRCROOT = $(SRCROOT)" \
  83.                   "OBJROOT = $(OBJROOT)" \
  84.                   "SYMROOT = $(SYMROOT)" $(stop_if_error_in_name) ; \
  85.              fi ; \
  86.         fi)
  87.  
  88. link_subproject: $(OFILES) $(OTHER_OFILES)
  89.     $(CC) $(ALL_CFLAGS) -nostdlib $(OFILES) $(OTHER_OFILES) -r -o $(PRODUCT)
  90.  
  91. build_empty = \
  92.           $(RM) -f $(TEMP_C_FILE) ; \
  93.          $(TOUCH) $(TEMP_C_FILE) ; \
  94.          $(CC) $(ALL_CFLAGS) -c $(TEMP_C_FILE) -o  $(PRODUCT_PREFIX:.subproj=_subproj.o) ; \
  95.          $(RM) -f $(TEMP_C_FILE)
  96.  
  97. TEMP_C_FILE = $(PRODUCT_PREFIX:.subproj=)_empty.c
  98.  
  99. PROJECT_TYPE_SPECIFIC_GARBAGE = 
  100.  
  101. -include $(LOCAL_MAKEFILEDIR)/subproj.make.postamble
  102.