home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Makefiles / pb_makefiles / depend.make < prev    next >
Text File  |  1997-03-20  |  3KB  |  119 lines

  1. #
  2. # depend.make
  3. #
  4. # Rules for updating dependencies
  5. #
  6. # PUBLIC TARGETS
  7. #    depend: builds individual dependency files and consolidates them into
  8. #      Makefile.dependencies.
  9. #
  10. # IMPORTED VARIABLES
  11. #    AUTOMATIC_DEPENDENCY_INFO: if YES, then the dependency file is
  12. #      updated every time the project is built.  If NO, the dependency
  13. #      file is only built when the depend target is invoked.
  14. #    BEFORE_DEPEND: targets to build before building dependencies for a
  15. #      subproject
  16. #    AFTER_DEPEND: targets to build after building dependencies for a
  17. #      subproject
  18. #
  19.  
  20. #
  21. # Implicit rule that creates a dependency file from a source file
  22. #
  23. .SUFFIXES: .d .dd
  24.  
  25. .c.d:
  26.     $(CC) $(ALL_COMMON_CFLAGS) -MM $< > $(SFILE_DIR)/$(*F).d
  27.  
  28. .m.d:
  29.     $(CC) $(ALL_COMMON_MFLAGS) -MM $< > $(SFILE_DIR)/$(*F).d
  30.  
  31. .C.d .cc.d .cxx.d .cpp.d:
  32.     $(CC) $(ALL_COMMON_CCFLAGS) -MM $< > $(SFILE_DIR)/$(*F).d
  33.  
  34. .M.d:
  35.     $(CC) $(ALL_COMMON_MMFLAGS) -MM $< > $(SFILE_DIR)/$(*F).d
  36.  
  37. .d.dd:
  38.     $(SED) 's/\.o[ :][ :]*/.d : /' < $< > $(SFILE_DIR)/$(*F).dd
  39.  
  40. ifeq "YES" "$(COMPUTE_DEPENDENCY_INFO)"
  41. AFTER_PREBUILD += update-dependencies
  42. endif
  43.  
  44. .PHONY: local-build depend local-depend recursive-depend announce-depend \
  45.     update-dependencies recompute-dependencies remove-Makefile.dependencies
  46.  
  47. #
  48. # Variable definitions
  49. #
  50.  
  51. ACTUAL_DEPEND = recompute-dependencies
  52. ifeq "YES" "$(INCREMENTAL_DEPENDENCY_INFO)"
  53. DEPENDS_CFLAGS = -MMD -dependency-file $(SFILE_DIR)/$*.d
  54. # use only dependency info from modules that have been compiled so far
  55. DFILES = $(shell ls $(SFILE_DIR)/*.d 2> $(NULL))
  56. else
  57. DFILES = $(CLASSES:.m=.d) $(MFILES:.m=.d) $(CFILES:.c=.d) $(CAPCFILES:.C=.d)  $(CXXFILES:.cxx=.d) $(CPPFILES:.cpp=.d) $(CAPMFILES:.M=.d)
  58. endif
  59.  
  60. DDFILES = $(DFILES:.d=.dd)
  61.  
  62. #
  63. # First we update local dependencies, then we recurse.
  64. #
  65.  
  66. depend: local-depend recursive-depend
  67. recursive-depend: $(ALL_SUBPROJECTS:%=depend@%) local-depend
  68. $(ALL_SUBPROJECTS:%=depend@%): local-depend
  69.  
  70. #
  71. # Local dependencies update
  72. #
  73.  
  74. local-depend: announce-depend $(BEFORE_DEPEND) $(ACTUAL_DEPEND) $(AFTER_DEPEND)
  75. $(BEFORE_DEPEND): announce-depend
  76. $(ACTUAL_DEPEND): announce-depend $(BEFORE_DEPEND)
  77. $(AFTER_DEPEND): announce-depend $(BEFORE_DEPEND) $(ACTUAL_DEPEND)
  78.  
  79. #
  80. # Before we do anything we must announce our intentions.
  81. # We don't announce our intentions if we were hooked in from the
  82. # post-depend recursion, since the post-depend has already been announced.
  83. #
  84.  
  85. announce-depend:
  86. ifndef RECURSING
  87.     $(SILENT) $(ECHO) Updating Makefile.dependencies...
  88. else
  89.     $(SILENT) $(ECHO) $(RECURSIVE_ELLIPSIS)in $(NAME)
  90. endif
  91.  
  92. #
  93. # We may want to delete the old dependencies file before creating a new
  94. # one in case some dependencies in the old file must be deleted.
  95. #
  96.  
  97. recompute-dependencies: remove-Makefile.dependencies Makefile.dependencies
  98. update-dependencies: Makefile.dependencies
  99.  
  100. #
  101. # Remove Makefile dependencies
  102. #
  103.  
  104. remove-Makefile.dependencies:
  105.     $(RM) -f $(SFILE_DIR)/Makefile.dependencies
  106.  
  107. remove-dependency-info:
  108.     $(CD) $(SFILE_DIR) && $(RM) -f $(DFILES) $(DDFILES)
  109.  
  110. #
  111. # Update Makefile.dependencies
  112. #
  113.  
  114. Makefile.dependencies: $(DFILES) $(DDFILES)
  115. ifneq "$(words $(DFILES) $(DDFILES))" "0"
  116.     $(CAT) $(DFILES) $(DDFILES) > $(SFILE_DIR)/$(@F)
  117. endif
  118.  
  119.