-
Notifications
You must be signed in to change notification settings - Fork 2
/
Makefile.postamble
145 lines (127 loc) · 6.08 KB
/
Makefile.postamble
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
###############################################################################
# Makefile.postamble
# Copyright 1997, Apple Computer, Inc.
#
# Use this makefile, which is imported after all other makefiles, to
# override attributes for a project's Makefile environment. This allows you
# to take advantage of the environment set up by the other Makefiles.
# You can also define custom rules at the end of this file.
#
###############################################################################
#
# These variables are exported by the standard makefiles and can be
# used in any customizations you make. They are *outputs* of
# the Makefiles and should be used, not set.
#
# PRODUCTS: products to install. All of these products will be placed in
# the directory $(DSTROOT)$(INSTALLDIR)
# GLOBAL_RESOURCE_DIR: The directory to which resources are copied.
# LOCAL_RESOURCE_DIR: The directory to which localized resources are copied.
# OFILE_DIR: Directory into which .o object files are generated.
# DERIVED_SRC_DIR: Directory used for all other derived files
#
# ALL_CFLAGS: flags to pass when compiling .c files
# ALL_MFLAGS: flags to pass when compiling .m files
# ALL_CCFLAGS: flags to pass when compiling .cc, .cxx, and .C files
# ALL_MMFLAGS: flags to pass when compiling .mm, .mxx, and .M files
# ALL_PRECOMPFLAGS: flags to pass when precompiling .h files
# ALL_LDFLAGS: flags to pass when linking object files
# ALL_LIBTOOL_FLAGS: flags to pass when libtooling object files
# ALL_PSWFLAGS: flags to pass when processing .psw and .pswm (pswrap) files
# ALL_RPCFLAGS: flags to pass when processing .rpc (rpcgen) files
# ALL_YFLAGS: flags to pass when processing .y (yacc) files
# ALL_LFLAGS: flags to pass when processing .l (lex) files
#
# NAME: name of application, bundle, subproject, palette, etc.
# LANGUAGES: langages in which the project is written (default "English")
# English_RESOURCES: localized resources (e.g. nib's, images) of project
# GLOBAL_RESOURCES: non-localized resources of project
#
# SRCROOT: base directory in which to place the new source files
# SRCPATH: relative path from SRCROOT to present subdirectory
#
# INSTALLDIR: Directory the product will be installed into by 'install' target
# PUBLIC_HDR_INSTALLDIR: where to install public headers. Don't forget
# to prefix this with DSTROOT when you use it.
# PRIVATE_HDR_INSTALLDIR: where to install private headers. Don't forget
# to prefix this with DSTROOT when you use it.
#
# EXECUTABLE_EXT: Executable extension for the platform (i.e. .exe on Windows)
#
###############################################################################
# Some compiler flags can be overridden here for certain build situations.
#
# WARNING_CFLAGS: flag used to set warning level (defaults to -Wmost)
# DEBUG_SYMBOLS_CFLAGS: debug-symbol flag passed to all builds (defaults
# to -g)
# DEBUG_BUILD_CFLAGS: flags passed during debug builds (defaults to -DDEBUG)
# OPTIMIZE_BUILD_CFLAGS: flags passed during optimized builds (defaults
# to -O)
# PROFILE_BUILD_CFLAGS: flags passed during profile builds (defaults
# to -pg -DPROFILE)
# LOCAL_DIR_INCLUDE_DIRECTIVE: flag used to add current directory to
# the include path (defaults to -I.)
# DEBUG_BUILD_LDFLAGS, OPTIMIZE_BUILD_LDFLAGS, PROFILE_BUILD_LDFLAGS: flags
# passed to ld/libtool (defaults to nothing)
WARNING_CFLAGS = -Wall
OPTIMIZE_BUILD_CFLAGS = -O2 -DOPTIMIZED
# Library and Framework projects only:
# INSTALL_NAME_DIRECTIVE: This directive ensures that executables linked
# against the framework will run against the correct version even if
# the current version of the framework changes. You may override this
# to "" as an alternative to using the DYLD_LIBRARY_PATH during your
# development cycle, but be sure to restore it before installing.
# Ownership and permissions of files installed by 'install' target
#INSTALL_AS_USER = root
# User/group ownership
#INSTALL_AS_GROUP = wheel
# (probably want to set both of these)
#INSTALL_PERMISSIONS =
# If set, 'install' chmod's executable to this
# Options to strip. Note: -S strips debugging symbols (executables can be stripped
# down further with -x or, if they load no bundles, with no options at all).
#STRIPFLAGS = -S
#########################################################################
# Put rules to extend the behavior of the standard Makefiles here. Include them in
# the dependency tree via cvariables like AFTER_INSTALL in the Makefile.preamble.
#
# You should avoid redefining things like "install" or "app", as they are
# owned by the top-level Makefile API and no context has been set up for where
# derived files should go.
#
# Add awk for solaris
ifeq "$(OS)" "SOLARIS"
ifeq "$(AWK)" ""
AWK = /usr/bin/nawk
endif
endif
# Include some additional definitions from parent project (if possible)
-include ../Makefiles/common.make.postamble
# Include YOUR custom definitions (if you did provide such)
-include Makefile.postamble.local
# Rules fix/precompile installed headers
fix-headers:
ifeq "$(BUILD_WO_VERSION)" "YES"
$(SILENT) ( \
for ph in $(PUBLIC_HEADERS); \
do \
h_path=$(DSTROOT)$(PUBLIC_HDR_INSTALLDIR)$(PUBLIC_HEADER_DIR_SUFFIX)/$$ph; \
$(AWK) '/#ifndef.*WOBUILD/, /#endif.*WOBUILD/ { next; } { print $0; }' $$h_path >> $$h_path.fixed; \
$(MV) $$h_path.fixed $$h_path; \
done ; \
$(ECHO) "Fixed for WO build $(PUBLIC_HEADERS)"; \
)
endif
precompile-headers:
$(SILENT) ( \
$(ECHO) "Precompiling public headers... (non-apple extension)" ; \
$(CHMOD) u+w $(DSTROOT)$(PUBLIC_HDR_INSTALLDIR)$(PUBLIC_HEADER_DIR_SUFFIX) ; \
for pph in $(PUBLIC_PRECOMPILED_HEADERS) ; \
do \
h_path=$(DSTROOT)$(PUBLIC_HDR_INSTALLDIR)$(PUBLIC_HEADER_DIR_SUFFIX)/$$pph ; \
p_path=$(DSTROOT)$(PUBLIC_HDR_INSTALLDIR)$(PUBLIC_HEADER_DIR_SUFFIX)/`basename $$pph .h`.p ; \
$(ECHO) "$(CC) -precomp $(PUBLIC_PRECOMPILED_HEADERS_CFLAGS) -o $$p_path $$h_path" ; \
$(CC) -precomp $(PUBLIC_PRECOMPILED_HEADERS_CFLAGS) -o $$p_path $$h_path ; \
done ; \
$(CHMOD) $(INSTALL_PERMISSIONS) $(DSTROOT)$(PUBLIC_HDR_INSTALLDIR)$(PUBLIC_HEADER_DIR_SUFFIX) ; \
)