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

  1. #
  2. # Top-Level Rule
  3. #
  4.  
  5. .PHONY: all
  6.  
  7. ifeq "AGGREGATE" "$(PROJTYPE)"
  8. all:
  9. else
  10. all: build
  11. endif
  12.  
  13. #
  14. # Local site-wide Makefile customization
  15. #
  16.  
  17. ifndef LOCAL_MAKEFILEDIR
  18.         LOCAL_MAKEFILEDIR = $(NEXT_ROOT)/LocalDeveloper/Makefiles/pb_makefiles
  19. endif
  20.  
  21. -include $(LOCAL_MAKEFILEDIR)/common.make.preamble
  22.  
  23. #
  24. # merging OS-specific variables
  25. #
  26.  
  27. ifndef INSTALLDIR
  28. ifeq "SOLARIS" "$(OS)"
  29. INSTALLDIR = $(PDO_UNIX_INSTALLDIR)
  30. else
  31. ifeq "HPUX" "$(OS)"
  32. INSTALLDIR = $(PDO_UNIX_INSTALLDIR)
  33. else
  34. INSTALLDIR = $($(OS)_INSTALLDIR)
  35. endif
  36. endif
  37. endif
  38.  
  39. #
  40. # Miscellaneous variables
  41. #
  42.  
  43. SILENT = @
  44. ARCH = $(shell $(ARCH_CMD))
  45. ifndef RC_ARCHS
  46. RC_ARCHS = $(ARCH)
  47. endif
  48. TARGET_ARCHS = $(RC_ARCHS)
  49. MAKEFILE_SOURCE = pb_makefiles
  50.  
  51. ifeq "WINDOWS" "$(OS)"
  52.  
  53. LINK_SUBPROJECTS = NO
  54. DISABLE_OBJCPLUSPLUS = NO
  55. EXECUTABLE_EXT = .exe
  56. ifeq "STATIC" "$(LIBRARY_STYLE)"
  57. LIBRARY_EXT = .lib
  58. else
  59. LIBRARY_EXT = .dll
  60. endif
  61. LIBRARY_PREFIX =
  62. DLL_EXT = .dll
  63. EXP_EXT = .exp
  64. NULL = NUL
  65. ifneq "$(LIBRARY_STYLE)" "STATIC"
  66. WINDOWS_DEF_FILE = $(NAME).def 
  67. endif
  68.  
  69. else
  70.  
  71. LINK_SUBPROJECTS = YES
  72. EXECUTABLE_EXT = 
  73. LIBRARY_PREFIX = lib
  74.  
  75. ifeq "SOLARIS" "$(OS)"
  76. ifeq "STATIC" "$(LIBRARY_STYLE)"
  77. LIBRARY_EXT = .a
  78. else
  79. LIBRARY_EXT = .so
  80. endif
  81. else
  82. ifeq "STATIC" "$(LIBRARY_STYLE)"
  83. LIBRARY_EXT = .a
  84. else
  85. LIBRARY_EXT = .dylib
  86. endif
  87. endif
  88.  
  89. DLL_EXT =
  90. NULL = /dev/null
  91.  
  92. endif
  93.  
  94. ifneq "NO" "$(INCLUDE_COMPATIBILITY_MAKEFILE)"
  95. include $(MAKEFILEDIR)/compatibility.make
  96. endif
  97.  
  98. #
  99. # Roots
  100. #
  101.  
  102. SRCROOT := $(shell pwd)
  103. # BUILD_OUTPUT_DIR is defined below under Directories
  104. ifndef OBJROOT
  105. OBJROOT = $(BUILD_OUTPUT_DIR)
  106. endif
  107. ifndef SYMROOT
  108. SYMROOT = $(BUILD_OUTPUT_DIR)
  109. endif
  110.  
  111. #
  112. # Directories
  113. #
  114.  
  115. ifneq "" "$($(OS)_BUILD_OUTPUT_DIR)"
  116. BUILD_OUTPUT_DIR = $($(OS)_BUILD_OUTPUT_DIR)
  117. endif
  118. ifeq "" "$(BUILD_OUTPUT_DIR)"
  119. BUILD_OUTPUT_DIR = $(SRCROOT)
  120. endif
  121.  
  122. # Directories for derived files
  123. PRODUCT_DIR = $(SYMROOT)
  124. OFILE_DIR = $(OBJROOT)/obj$(OFILE_DIR_SUFFIX)
  125. SFILE_DIR = $(SYMROOT)/derived_src
  126. JAVA_SRC_DIR = $(SYMROOT)/java_src
  127. JAVA_OBJ_DIR = $(OBJROOT)/java_obj
  128.  
  129. PROJECT_HDR_DIR = $(SYMROOT)/ProjectHeaders
  130. ifneq "" "$(PUBLIC_HDR_DIR)"
  131.    PUBLIC_HDR_DIR = $(SYMROOT)/Headers/$(notdir $(PUBLIC_HDR_INSTALLDIR))
  132. endif
  133. ifeq "YES" "$(WRAPPED)"
  134.    PUBLIC_HDR_DIR = $(PRODUCT)/Headers
  135. endif
  136. ifneq "" "$(PRIVATE_HDR_DIR)"
  137.    PRIVATE_HDR_DIR = $(SYMROOT)/PrivateHeaders/$(notdir $(PRIVATE_HDR_INSTALLDIR))
  138. endif
  139. ifeq "YES" "$(WRAPPED)"
  140.    PRIVATE_HDR_DIR = $(PRODUCT)/PrivateHeaders
  141. endif
  142. export PUBLIC_HDR_DIR
  143. export PRIVATE_HDR_DIR
  144. export PUBLIC_HDR_INSTALLDIR
  145. export PRIVATE_HDR_INSTALLDIR
  146.  
  147. #
  148. # File Lists
  149. #
  150.  
  151. VPATH = $(OFILE_DIR) $(SFILE_DIR) $(LANGUAGE).lproj
  152. GENERATED_SRCFILES = $(MSGFILES:%.msg=%Speaker.h) $(MSGFILES:%.msg=%Speaker.m) $(MSGFILES:%.msg=%Listener.h) $(MSGFILES:%.msg=%Listener.m) $(DEFSFILES:%.defs=%.h) $(DEFSFILES:%.defs=%User.c) $(DEFSFILES:%.defs=%Server.c) $(MIGFILES:%.mig=%.h) $(MIGFILES:%.mig=%User.c) $(MIGFILES:%.mig=%Server.c) $(PSWFILES:.psw=.h) $(PSWFILES:.psw=.c) $(PSWMFILES:.pswm=.h) $(PSWMFILES:.pswm=.m) $(subst .x_svc,.c, $(subst .x_clnt,.c, $(subst .x_xdr,.c, $(subst .x,.h, $(RPCFILES))))) $(YFILES:.y=.c) $(YFILES:.y=.h) $(LFILES:.l=.c) $(OTHER_GENERATED_SRCFILES)
  153. SRCFILES = PB.project $(JAVA_CLASSES) $(OTHERSRCS) $(HFILES) $(CLASSES) $(MFILES) $(CFILES) $(CAPCFILES) $(CAPMFILES) $(YFILES) $(LFILES) $(PSWFILES) $(PSWMFILES) $(LOCAL_RESOURCES) $(GLOBAL_RESOURCES) $(HELP_FILES) $(OTHERLINKED) $(OTHER_SOURCEFILES)
  154.  
  155. LOCAL_OFILES = $(CLASSES:.m=.o) $(MFILES:.m=.o) $(CFILES:.c=.o) $(CAPCFILES:.C=.o) $(CAPMFILES:.M=.o) $(CCFILES:.cc=.o) $(CPPFILES:.cpp=.o) $(CXXFILES:.cxx=.o) $(PSWFILES:.psw=.o) $(PSWMFILES:.pswm=.o) $(PROJTYPE_OFILES) $(OTHERLINKEDOFILES) $(OTHER_OFILES) $(OTHER_GENERATED_OFILES)
  156.  
  157. ifeq "YES" "$(LINK_SUBPROJECTS)"
  158.  SUBPROJ_OFILES = $(addsuffix _subproj.o,$(SUBPROJECTS))
  159.  OFILES = $(LOCAL_OFILES) $(SUBPROJ_OFILES)
  160.  OFILELISTS =
  161. else
  162.  OFILES = $(LOCAL_OFILES)
  163.  ifneq "" "$(SUBPROJECTS)"
  164.   OFILELISTS = $(NAME).ofileList
  165.  endif
  166. endif
  167.  
  168. ifneq "$(JAVA_CLASSES)" ""
  169. JAVA_ENABLED = YES
  170. endif
  171.  
  172. ALL_PRECOMPS = $(PRECOMPILED_HEADERS:.h=.p) $(PRECOMPS)
  173. PRECOMPILED_PUBLIC_HEADERS = $(foreach X, $(PRECOMPILED_HEADERS), $(findstring $(X), $(PUBLIC_HEADERS)))
  174. PRECOMPILED_PRIVATE_HEADERS = $(foreach X, $(PRECOMPILED_HEADERS), $(findstring $(X), $(PRIVATE_HEADERS)))
  175. PRECOMPILED_PROJECT_HEADERS = $(foreach X, $(PRECOMPILED_HEADERS), $(findstring $(X), $(PROJECT_HEADERS)))
  176.  
  177. SUBPROJ_OFILELISTS = $(addsuffix _subproj.ofileList,$(SUBPROJECTS))
  178.  
  179. $(OFILELISTS): $(SUBPROJ_OFILELISTS) Makefile
  180.     $(OFILE_LIST_TOOL) -o $(OFILE_DIR)/$(NAME).ofileList $(SUBPROJ_OFILELISTS)
  181.  
  182. ifeq "$(BUILD_TYPE)" "normal"
  183. FRAMEWORK_FLAGS = $(FRAMEWORKS)
  184. PROJTYPE_FRAMEWORK_FLAGS = $(PROJTYPE_FRAMEWORKS)
  185. OTHER_FRAMEWORK_FLAGS = $(OTHER_FRAMEWORKS)
  186. OPTIONAL_FRAMEWORK_FLAGS = $(OPTIONAL_FRAMEWORKS)
  187.  
  188. else
  189.  
  190. FRAMEWORK_FLAGS = $(shell $(FRAMEWORK_TOOL) $(FRAMEWORKS) $(BUILD_TYPE))
  191. PROJTYPE_FRAMEWORK_FLAGS = $(shell $(FRAMEWORK_TOOL) $(PROJTYPE_FRAMEWORKS) $(BUILD_TYPE))
  192. OTHER_FRAMEWORK_FLAGS = $(shell $(FRAMEWORK_TOOL) $(OTHER_FRAMEWORKS) $(BUILD_TYPE))
  193. OPTIONAL_FRAMEWORK_FLAGS = $(shell $(FRAMEWORK_TOOL) $(OPTIONAL_FRAMEWORKS) $(BUILD_TYPE))
  194. endif
  195.  
  196. DEPENDENCIES = $(OFILES) $(OFILELISTS) $(OTHER_PRODUCT_DEPENDS)
  197.  
  198. ifeq "$(LIBRARY_STYLE)" "STATIC"
  199. LOADABLES = $(OFILES) $(OFILELISTS:%=-filelist %) $(LIBS) $(PROJTYPE_LIBS) $(OTHER_LIBS) $(OPTIONAL_LIBS)
  200. else
  201. LOADABLES = $(OFILES) $(OFILELISTS:%=-filelist %) $(LIBS) $(FRAMEWORK_FLAGS) $(PROJTYPE_LIBS) $(PROJTYPE_FRAMEWORK_FLAGS) $(OTHER_LIBS) $(OTHER_FRAMEWORK_FLAGS) $(OPTIONAL_LIBS) $(OPTIONAL_FRAMEWORK_FLAGS)
  202. endif
  203.  
  204. GARBAGE = $(OBJROOT)/obj $(OBJROOT)/obj-* $(SFILE_DIR) $(PROJECT_HDR_DIR) $(PROJTYPE_GARBAGE) $(OTHER_GARBAGE) $(PRECOMPILED_HEADERS:.h=.p) $(PRECOMPS) $(JAVA_SRC_DIR) $(JAVA_OBJ_DIR)
  205.  
  206.  
  207. include $(MAKEFILEDIR)/versions.make
  208. include $(MAKEFILEDIR)/commands-$(OS).make
  209. include $(MAKEFILEDIR)/flags.make
  210. include $(MAKEFILEDIR)/implicitrules.make
  211. include $(MAKEFILEDIR)/recursion.make
  212. include $(MAKEFILEDIR)/depend.make
  213.  
  214. # "Versioning Systems" adapt these makefiles to an SCM system in the following 2 ways:
  215. #  1. Provide a rule for an object file that can be linked into binaries produced here
  216. #      (e.g. $(VERS_OFILE) could then be included in OTHER_GENERATED_OFILES).
  217. #  2. Provide a decimal number that can be used as the current project version to be
  218. #      stored in a Mach dylib (i.e. $(CURRENT_PROJECT_VERSION)).
  219.  
  220. ifndef VERSIONING_SYSTEM_MAKEFILEDIR
  221. VERSIONING_SYSTEM_MAKEFILEDIR = $(NEXT_ROOT)/NextDeveloper/Makefiles/VersioningSystems
  222. endif
  223.  
  224. ifndef LOCAL_VERSIONING_SYSTEM_MAKEFILEDIR
  225. LOCAL_VERSIONING_SYSTEM_MAKEFILEDIR = $(NEXT_ROOT)/LocalDeveloper/Makefiles/VersioningSystems
  226. endif
  227.  
  228. -include $(VERSIONING_SYSTEM_MAKEFILEDIR)/$(VERSIONING_SYSTEM).make
  229. -include $(LOCAL_VERSIONING_SYSTEM_MAKEFILEDIR)/$(VERSIONING_SYSTEM).make
  230.  
  231. # In case $(VERSIONING_SYSTEM).make didn't set CURRENT_PROJECT_VERSION...
  232.  
  233. ifeq "" "$(CURRENT_PROJECT_VERSION)"
  234. CURRENT_PROJECT_VERSION = 1
  235. endif
  236. ifeq "" "$(COMPATIBILITY_PROJECT_VERSION)"
  237. COMPATIBILITY_PROJECT_VERSION = 1
  238. endif
  239.  
  240. # STRIP_ON_INSTALL must have a value
  241. ifneq "$(STRIP_ON_INSTALL)" "NO"
  242. STRIP_ON_INSTALL = YES
  243. endif
  244.  
  245.  
  246. ifneq "AGGREGATE" "$(PROJTYPE)"
  247. include $(MAKEFILEDIR)/prebuild.make
  248. include $(MAKEFILEDIR)/build.make
  249. include $(MAKEFILEDIR)/installhdrs.make
  250. include $(MAKEFILEDIR)/install.make
  251. endif
  252. include $(MAKEFILEDIR)/installsrc.make
  253. -include $(SFILE_DIR)/Makefile.dependencies
  254.  
  255. always:
  256.  
  257.  
  258. #
  259. # Sequencing
  260. #
  261.  
  262. ifneq "YES" "$(RECURSING)"
  263. announce-prebuild announce-build announce-installhdrs announce-install: display-masthead
  264. endif
  265.  
  266. ifneq "AGGREGATE" "$(PROJTYPE)"
  267. ifneq "YES" "$(RECURSING)"
  268. ifneq "YES" "$(SKIP_BUILD)"
  269. announce-install: build
  270. endif
  271. ifneq "YES" "$(SKIP_PREBUILD)"
  272. announce-build: prebuild
  273. endif
  274. endif
  275. endif
  276.  
  277. #
  278. # Conveniences
  279. #
  280.  
  281. profile:
  282.     $(SILENT) $(MAKE) PROFILE=YES \
  283.         BUILD_TYPE=$@ \
  284.         BUILD_TYPE_SUFFIX=_profile \
  285.         APP_WRAPPER_EXTENSION=.profile \
  286.         $(RESET_CUMULATIVE_VARIABLES)
  287.  
  288. debug:
  289.     $(SILENT) $(MAKE) DEBUG=YES PROFILE=NO OPTIMIZE=NO \
  290.         BUILD_TYPE=$@ \
  291.         BUILD_TYPE_SUFFIX=_debug \
  292.         APP_WRAPPER_EXTENSION=.debug \
  293.         $(RESET_CUMULATIVE_VARIABLES)
  294.  
  295. BUILD_TYPE = normal
  296.  
  297. #
  298. # Masthead
  299. #
  300.  
  301. display-masthead:
  302. ifeq "$(BUILD_TYPE)" "normal"
  303.     $(SILENT) $(ECHO) == Making $(NAME) for $(TARGET_ARCHS) ==
  304. else
  305.     $(SILENT) $(ECHO) == Making $(BUILD_TYPE) on $(NAME) for $(TARGET_ARCHS) ==
  306. endif
  307.  
  308. #
  309. # Makefile-Debugging and Variable-Access Rules
  310. #
  311.  
  312. .PHONY: show-variable sv show-expression se
  313.  
  314. VARIABLE=$(V)
  315. show-variables sv:
  316.     $(SILENT) $(foreach X, $(VARIABLE), $(ECHO) "$($(X))";)
  317. EXPRESSION=$(E)
  318. show-expression se:
  319.     $(SILENT) $(foreach X, $(EXPRESSION), $(ECHO) "$(X)";)
  320.  
  321. echo_makefile_variable:
  322.     $(SILENT) $(foreach X, $(VAR_NAME), $(ECHO) "$($(X))";)
  323.  
  324. echo_makefile_expression:
  325.     $(SILENT) $(foreach X, $(EXPR_STRING), $(ECHO) "$(X)";)
  326.  
  327. #
  328. # Cleaning Rules
  329. #
  330.  
  331. .PHONY: clean mostlyclean announce-clean
  332.  
  333. clean: announce-clean
  334.     $(RM) -rf $(GARBAGE) $(PRODUCTS)
  335.  
  336. mostlyclean: announce-clean
  337.     $(RM) -rf $(GARBAGE)
  338.     
  339. announce-clean:
  340.     $(SILENT) $(ECHO) == Cleaning $(NAME) ==
  341.  
  342.  
  343. #
  344. # Some install conveniences that apply to all projects
  345. #
  346.  
  347. install_debug:
  348.     $(MAKE) install DEBUG=YES PROFILE=NO OPTIMIZE=NO STRIP_ON_INSTALL=NO 
  349.  
  350. install_unstripped:
  351.     $(MAKE) install DEBUG=NO PROFILE=NO OPTIMIZE=YES STRIP_ON_INSTALL=NO
  352.  
  353. install_profile:
  354.     $(MAKE) install DEBUG=YES PROFILE=YES OPTIMIZE=YES STRIP_ON_INSTALL=NO
  355.  
  356.  
  357. -include $(LOCAL_MAKEFILEDIR)/common.make.postamble
  358.