home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OpenStep 4.2J (Developer)
/
os42jdev.iso
/
NextDeveloper
/
Makefiles
/
pb_makefiles
/
common.make
< prev
next >
Wrap
Text File
|
1997-03-20
|
9KB
|
358 lines
#
# Top-Level Rule
#
.PHONY: all
ifeq "AGGREGATE" "$(PROJTYPE)"
all:
else
all: build
endif
#
# Local site-wide Makefile customization
#
ifndef LOCAL_MAKEFILEDIR
LOCAL_MAKEFILEDIR = $(NEXT_ROOT)/LocalDeveloper/Makefiles/pb_makefiles
endif
-include $(LOCAL_MAKEFILEDIR)/common.make.preamble
#
# merging OS-specific variables
#
ifndef INSTALLDIR
ifeq "SOLARIS" "$(OS)"
INSTALLDIR = $(PDO_UNIX_INSTALLDIR)
else
ifeq "HPUX" "$(OS)"
INSTALLDIR = $(PDO_UNIX_INSTALLDIR)
else
INSTALLDIR = $($(OS)_INSTALLDIR)
endif
endif
endif
#
# Miscellaneous variables
#
SILENT = @
ARCH = $(shell $(ARCH_CMD))
ifndef RC_ARCHS
RC_ARCHS = $(ARCH)
endif
TARGET_ARCHS = $(RC_ARCHS)
MAKEFILE_SOURCE = pb_makefiles
ifeq "WINDOWS" "$(OS)"
LINK_SUBPROJECTS = NO
DISABLE_OBJCPLUSPLUS = NO
EXECUTABLE_EXT = .exe
ifeq "STATIC" "$(LIBRARY_STYLE)"
LIBRARY_EXT = .lib
else
LIBRARY_EXT = .dll
endif
LIBRARY_PREFIX =
DLL_EXT = .dll
EXP_EXT = .exp
NULL = NUL
ifneq "$(LIBRARY_STYLE)" "STATIC"
WINDOWS_DEF_FILE = $(NAME).def
endif
else
LINK_SUBPROJECTS = YES
EXECUTABLE_EXT =
LIBRARY_PREFIX = lib
ifeq "SOLARIS" "$(OS)"
ifeq "STATIC" "$(LIBRARY_STYLE)"
LIBRARY_EXT = .a
else
LIBRARY_EXT = .so
endif
else
ifeq "STATIC" "$(LIBRARY_STYLE)"
LIBRARY_EXT = .a
else
LIBRARY_EXT = .dylib
endif
endif
DLL_EXT =
NULL = /dev/null
endif
ifneq "NO" "$(INCLUDE_COMPATIBILITY_MAKEFILE)"
include $(MAKEFILEDIR)/compatibility.make
endif
#
# Roots
#
SRCROOT := $(shell pwd)
# BUILD_OUTPUT_DIR is defined below under Directories
ifndef OBJROOT
OBJROOT = $(BUILD_OUTPUT_DIR)
endif
ifndef SYMROOT
SYMROOT = $(BUILD_OUTPUT_DIR)
endif
#
# Directories
#
ifneq "" "$($(OS)_BUILD_OUTPUT_DIR)"
BUILD_OUTPUT_DIR = $($(OS)_BUILD_OUTPUT_DIR)
endif
ifeq "" "$(BUILD_OUTPUT_DIR)"
BUILD_OUTPUT_DIR = $(SRCROOT)
endif
# Directories for derived files
PRODUCT_DIR = $(SYMROOT)
OFILE_DIR = $(OBJROOT)/obj$(OFILE_DIR_SUFFIX)
SFILE_DIR = $(SYMROOT)/derived_src
JAVA_SRC_DIR = $(SYMROOT)/java_src
JAVA_OBJ_DIR = $(OBJROOT)/java_obj
PROJECT_HDR_DIR = $(SYMROOT)/ProjectHeaders
ifneq "" "$(PUBLIC_HDR_DIR)"
PUBLIC_HDR_DIR = $(SYMROOT)/Headers/$(notdir $(PUBLIC_HDR_INSTALLDIR))
endif
ifeq "YES" "$(WRAPPED)"
PUBLIC_HDR_DIR = $(PRODUCT)/Headers
endif
ifneq "" "$(PRIVATE_HDR_DIR)"
PRIVATE_HDR_DIR = $(SYMROOT)/PrivateHeaders/$(notdir $(PRIVATE_HDR_INSTALLDIR))
endif
ifeq "YES" "$(WRAPPED)"
PRIVATE_HDR_DIR = $(PRODUCT)/PrivateHeaders
endif
export PUBLIC_HDR_DIR
export PRIVATE_HDR_DIR
export PUBLIC_HDR_INSTALLDIR
export PRIVATE_HDR_INSTALLDIR
#
# File Lists
#
VPATH = $(OFILE_DIR) $(SFILE_DIR) $(LANGUAGE).lproj
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)
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)
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)
ifeq "YES" "$(LINK_SUBPROJECTS)"
SUBPROJ_OFILES = $(addsuffix _subproj.o,$(SUBPROJECTS))
OFILES = $(LOCAL_OFILES) $(SUBPROJ_OFILES)
OFILELISTS =
else
OFILES = $(LOCAL_OFILES)
ifneq "" "$(SUBPROJECTS)"
OFILELISTS = $(NAME).ofileList
endif
endif
ifneq "$(JAVA_CLASSES)" ""
JAVA_ENABLED = YES
endif
ALL_PRECOMPS = $(PRECOMPILED_HEADERS:.h=.p) $(PRECOMPS)
PRECOMPILED_PUBLIC_HEADERS = $(foreach X, $(PRECOMPILED_HEADERS), $(findstring $(X), $(PUBLIC_HEADERS)))
PRECOMPILED_PRIVATE_HEADERS = $(foreach X, $(PRECOMPILED_HEADERS), $(findstring $(X), $(PRIVATE_HEADERS)))
PRECOMPILED_PROJECT_HEADERS = $(foreach X, $(PRECOMPILED_HEADERS), $(findstring $(X), $(PROJECT_HEADERS)))
SUBPROJ_OFILELISTS = $(addsuffix _subproj.ofileList,$(SUBPROJECTS))
$(OFILELISTS): $(SUBPROJ_OFILELISTS) Makefile
$(OFILE_LIST_TOOL) -o $(OFILE_DIR)/$(NAME).ofileList $(SUBPROJ_OFILELISTS)
ifeq "$(BUILD_TYPE)" "normal"
FRAMEWORK_FLAGS = $(FRAMEWORKS)
PROJTYPE_FRAMEWORK_FLAGS = $(PROJTYPE_FRAMEWORKS)
OTHER_FRAMEWORK_FLAGS = $(OTHER_FRAMEWORKS)
OPTIONAL_FRAMEWORK_FLAGS = $(OPTIONAL_FRAMEWORKS)
else
FRAMEWORK_FLAGS = $(shell $(FRAMEWORK_TOOL) $(FRAMEWORKS) $(BUILD_TYPE))
PROJTYPE_FRAMEWORK_FLAGS = $(shell $(FRAMEWORK_TOOL) $(PROJTYPE_FRAMEWORKS) $(BUILD_TYPE))
OTHER_FRAMEWORK_FLAGS = $(shell $(FRAMEWORK_TOOL) $(OTHER_FRAMEWORKS) $(BUILD_TYPE))
OPTIONAL_FRAMEWORK_FLAGS = $(shell $(FRAMEWORK_TOOL) $(OPTIONAL_FRAMEWORKS) $(BUILD_TYPE))
endif
DEPENDENCIES = $(OFILES) $(OFILELISTS) $(OTHER_PRODUCT_DEPENDS)
ifeq "$(LIBRARY_STYLE)" "STATIC"
LOADABLES = $(OFILES) $(OFILELISTS:%=-filelist %) $(LIBS) $(PROJTYPE_LIBS) $(OTHER_LIBS) $(OPTIONAL_LIBS)
else
LOADABLES = $(OFILES) $(OFILELISTS:%=-filelist %) $(LIBS) $(FRAMEWORK_FLAGS) $(PROJTYPE_LIBS) $(PROJTYPE_FRAMEWORK_FLAGS) $(OTHER_LIBS) $(OTHER_FRAMEWORK_FLAGS) $(OPTIONAL_LIBS) $(OPTIONAL_FRAMEWORK_FLAGS)
endif
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)
include $(MAKEFILEDIR)/versions.make
include $(MAKEFILEDIR)/commands-$(OS).make
include $(MAKEFILEDIR)/flags.make
include $(MAKEFILEDIR)/implicitrules.make
include $(MAKEFILEDIR)/recursion.make
include $(MAKEFILEDIR)/depend.make
# "Versioning Systems" adapt these makefiles to an SCM system in the following 2 ways:
# 1. Provide a rule for an object file that can be linked into binaries produced here
# (e.g. $(VERS_OFILE) could then be included in OTHER_GENERATED_OFILES).
# 2. Provide a decimal number that can be used as the current project version to be
# stored in a Mach dylib (i.e. $(CURRENT_PROJECT_VERSION)).
ifndef VERSIONING_SYSTEM_MAKEFILEDIR
VERSIONING_SYSTEM_MAKEFILEDIR = $(NEXT_ROOT)/NextDeveloper/Makefiles/VersioningSystems
endif
ifndef LOCAL_VERSIONING_SYSTEM_MAKEFILEDIR
LOCAL_VERSIONING_SYSTEM_MAKEFILEDIR = $(NEXT_ROOT)/LocalDeveloper/Makefiles/VersioningSystems
endif
-include $(VERSIONING_SYSTEM_MAKEFILEDIR)/$(VERSIONING_SYSTEM).make
-include $(LOCAL_VERSIONING_SYSTEM_MAKEFILEDIR)/$(VERSIONING_SYSTEM).make
# In case $(VERSIONING_SYSTEM).make didn't set CURRENT_PROJECT_VERSION...
ifeq "" "$(CURRENT_PROJECT_VERSION)"
CURRENT_PROJECT_VERSION = 1
endif
ifeq "" "$(COMPATIBILITY_PROJECT_VERSION)"
COMPATIBILITY_PROJECT_VERSION = 1
endif
# STRIP_ON_INSTALL must have a value
ifneq "$(STRIP_ON_INSTALL)" "NO"
STRIP_ON_INSTALL = YES
endif
ifneq "AGGREGATE" "$(PROJTYPE)"
include $(MAKEFILEDIR)/prebuild.make
include $(MAKEFILEDIR)/build.make
include $(MAKEFILEDIR)/installhdrs.make
include $(MAKEFILEDIR)/install.make
endif
include $(MAKEFILEDIR)/installsrc.make
-include $(SFILE_DIR)/Makefile.dependencies
always:
#
# Sequencing
#
ifneq "YES" "$(RECURSING)"
announce-prebuild announce-build announce-installhdrs announce-install: display-masthead
endif
ifneq "AGGREGATE" "$(PROJTYPE)"
ifneq "YES" "$(RECURSING)"
ifneq "YES" "$(SKIP_BUILD)"
announce-install: build
endif
ifneq "YES" "$(SKIP_PREBUILD)"
announce-build: prebuild
endif
endif
endif
#
# Conveniences
#
profile:
$(SILENT) $(MAKE) PROFILE=YES \
BUILD_TYPE=$@ \
BUILD_TYPE_SUFFIX=_profile \
APP_WRAPPER_EXTENSION=.profile \
$(RESET_CUMULATIVE_VARIABLES)
debug:
$(SILENT) $(MAKE) DEBUG=YES PROFILE=NO OPTIMIZE=NO \
BUILD_TYPE=$@ \
BUILD_TYPE_SUFFIX=_debug \
APP_WRAPPER_EXTENSION=.debug \
$(RESET_CUMULATIVE_VARIABLES)
BUILD_TYPE = normal
#
# Masthead
#
display-masthead:
ifeq "$(BUILD_TYPE)" "normal"
$(SILENT) $(ECHO) == Making $(NAME) for $(TARGET_ARCHS) ==
else
$(SILENT) $(ECHO) == Making $(BUILD_TYPE) on $(NAME) for $(TARGET_ARCHS) ==
endif
#
# Makefile-Debugging and Variable-Access Rules
#
.PHONY: show-variable sv show-expression se
VARIABLE=$(V)
show-variables sv:
$(SILENT) $(foreach X, $(VARIABLE), $(ECHO) "$($(X))";)
EXPRESSION=$(E)
show-expression se:
$(SILENT) $(foreach X, $(EXPRESSION), $(ECHO) "$(X)";)
echo_makefile_variable:
$(SILENT) $(foreach X, $(VAR_NAME), $(ECHO) "$($(X))";)
echo_makefile_expression:
$(SILENT) $(foreach X, $(EXPR_STRING), $(ECHO) "$(X)";)
#
# Cleaning Rules
#
.PHONY: clean mostlyclean announce-clean
clean: announce-clean
$(RM) -rf $(GARBAGE) $(PRODUCTS)
mostlyclean: announce-clean
$(RM) -rf $(GARBAGE)
announce-clean:
$(SILENT) $(ECHO) == Cleaning $(NAME) ==
#
# Some install conveniences that apply to all projects
#
install_debug:
$(MAKE) install DEBUG=YES PROFILE=NO OPTIMIZE=NO STRIP_ON_INSTALL=NO
install_unstripped:
$(MAKE) install DEBUG=NO PROFILE=NO OPTIMIZE=YES STRIP_ON_INSTALL=NO
install_profile:
$(MAKE) install DEBUG=YES PROFILE=YES OPTIMIZE=YES STRIP_ON_INSTALL=NO
-include $(LOCAL_MAKEFILEDIR)/common.make.postamble