]> git.saurik.com Git - apple/xnu.git/blob - makedefs/MakeInc.def
xnu-124.13.tar.gz
[apple/xnu.git] / makedefs / MakeInc.def
1
2 export SOURCE=$(shell /bin/pwd)
3
4 #
5 # gnumake 3.77 support
6 #
7 export USE_APPLE_PB_SUPPORT = all
8
9 #
10 # Incremental Build option
11 #
12 ifndef INCR_EXPORTHDRS
13 ifeq ($(shell test -d $$OBJROOT/EXPORT_HDRS;echo $$?),0)
14 export INCR_EXPORTHDRS = TRUE
15 else
16 export INCR_EXPORTHDRS = FALSE
17 endif
18 endif
19
20 ifndef INCR_INSTALLHDRS
21 ifeq ($(shell test -d $$DSTROOT/$INCDIR;echo $$?),0)
22 export INCR_INSTALLHDRS = TRUE
23 else
24 export INCR_INSTALLHDRS = FALSE
25 endif
26 endif
27
28 #
29 # Component List
30 #
31 export COMPONENT_LIST = osfmk bsd iokit pexpert libkern libsa
32 export COMPONENT = $(firstword $(subst /, ,$(shell $(RELPATH) $(SRCROOT) $(SOURCE))))
33 export COMPONENT_IMPORT_LIST = $(filter-out $(COMPONENT),$(COMPONENT_LIST))
34
35 # Architecture options
36 #
37 # supported configurations : PPC I386
38 #
39 ifdef RC_ARCHS
40 export ARCH_CONFIGS = $(shell echo -n $(RC_ARCHS) | tr a-z A-Z)
41 else
42 ifndef ARCH_CONFIGS
43 export ARCH_CONFIGS = $(shell arch | tr a-z A-Z)
44 endif
45 endif
46 export ARCH_CONFIG = $(firstword $(ARCH_CONFIGS))
47 export arch_config = $(shell echo -n $(ARCH_CONFIG) | tr A-Z a-z)
48
49
50 # Kernel Configuration options
51 #
52 # supported configurations : RELEASE DEBUG PROFILE
53 #
54 ifndef KERNEL_CONFIGS
55 export KERNEL_CONFIGS = RELEASE
56 endif
57 export KERNEL_CONFIG = $(firstword $(KERNEL_CONFIGS))
58
59 #
60 # Kernel Configuration to install
61 #
62 # supported install architecture : PPC I386
63 #
64 export INSTALL_TYPE = RELEASE
65 ifdef RC_ARCHS
66 export INSTALL_ARCHS = $(ARCH_CONFIGS)
67 else
68 export INSTALL_ARCHS = $(ARCH_CONFIGS)
69 endif
70 export INSTALL_ARCH = $(ARCH_CONFIG)
71
72 export INSTALL_ARCH_DEFAULT = PPC
73
74 #
75 # Standard defines list
76 #
77 export DEFINES = -DAPPLE -DNeXT -DKERNEL_PRIVATE -D__MACHO__=1 -Dvolatile=__volatile $(IDENT)
78
79 #
80 # Compiler command
81 #
82 CC = /usr/bin/cc
83 KCC = /usr/bin/cc
84
85 #
86 # Default CFLAGS
87 #
88 ifdef RC_CFLAGS
89 export OTHER_CFLAGS = $(subst $(addprefix -arch ,$(RC_ARCHS)),,$(RC_CFLAGS))
90 endif
91
92 export CFLAGS_GEN = -static -g -nostdinc -nostdlib -traditional-cpp -fno-builtin -finline -fno-keep-inline-functions -msoft-float -fsigned-bitfields -Wpointer-arith $(OTHER_CFLAGS) -fpermissive
93
94 export CFLAGS_RELEASE =
95 export CFLAGS_DEBUG = -fno-omit-frame-pointer
96 export CFLAGS_PROFILE =
97
98 export CFLAGS_PPC = -arch ppc -Dppc -DPPC -D__PPC__ -D_BIG_ENDIAN=__BIG_ENDIAN__
99 export CFLAGS_I386 = -arch i386 -Di386 -DI386 -D__I386__ -D_BIG_ENDIAN=__LITTLE_ENDIAN__
100
101 export CFLAGS_RELEASEPPC = -O2 -mcpu=750 -fschedule-insns
102 export CFLAGS_RELEASE_TRACEPPC = -O2 -mcpu=750 -fschedule-insns
103 export CFLAGS_DEBUGPPC = -O1 -mcpu=750 -fschedule-insns
104 export CFLAGS_RELEASEI386 = -O2
105 export CFLAGS_DEBUGI386 = -O2
106
107 export CFLAGS = $(CFLAGS_GEN) \
108 $($(addsuffix $(ARCH_CONFIG),CFLAGS_)) \
109 $($(addsuffix $(KERNEL_CONFIG),CFLAGS_)) \
110 $($(addsuffix $(ARCH_CONFIG), $(addsuffix $(KERNEL_CONFIG),CFLAGS_))) \
111 $(DEFINES)
112
113 # Default CCFLAGS
114 #(we do not call it CPPFLAGS as that has a special meaning in unix tradition
115 # and in gcc: CPPFLAGS is for C Pre-Processor flags. CCFLAGS has precedent
116 # in ProjectBuilder because of the .cc extension)
117 #
118 CPPFLAGS_GEN = -x c++ -fno-rtti -fno-exceptions -fcheck-new -fvtable-thunks
119 CPPFLAGS_PPC =
120 CPPFLAGS_I386 =
121
122 CPPFLAGS = $(CPPFLAGS_GEN) \
123 $($(addsuffix $(ARCH_CONFIG),CCFLAGS_)) \
124 $($(addsuffix $(KERNEL_CONFIG),CCFLAGS_))
125
126 #
127 # Assembler command
128 #
129 AS = /usr/bin/cc
130 S_KCC = /usr/bin/cc
131
132 #
133 # Default SFLAGS
134 #
135 export SFLAGS_GEN = -static -D__ASSEMBLER__ -force_cpusubtype_ALL $(OTHER_CFLAGS)
136
137 export SFLAGS_RELEASE =
138 export SFLAGS_DEBUG =
139 export SFLAGS_PROFILE =
140
141 export SFLAGS_PPC = $(CFLAGS_PPC)
142 export SFLAGS_I386 = $(CFLAGS_I386)
143
144 export SFLAGS = $(SFLAGS_GEN) \
145 $($(addsuffix $(ARCH_CONFIG),SFLAGS_)) \
146 $($(addsuffix $(KERNEL_CONFIG),SFLAGS_)) \
147 $(DEFINES)
148
149 #
150 # Linker command
151 #
152 LD = /usr/bin/ld
153
154 #
155 # Default LDFLAGS
156 #
157 export LDFLAGS_COMPONENT_GEN = -static -r
158
159 export LDFLAGS_COMPONENT_RELEASE =
160 export LDFLAGS_COMPONENT_DEBUG =
161 export LDFLAGS_COMPONENT_PROFILE =
162
163 export LDFLAGS_COMPONENT_PPC = -arch ppc
164 export LDFLAGS_COMPONENT_I386 = -arch i386
165
166 export LDFLAGS_COMPONENT = $(LDFLAGS_COMPONENT_GEN) \
167 $($(addsuffix $(ARCH_CONFIG),LDFLAGS_COMPONENT_)) \
168 $($(addsuffix $(KERNEL_CONFIG),LDFLAGS_COMPONENT_))
169
170 export LDFLAGS_KERNEL_GEN = -static -force_cpusubtype_ALL -segalign 0x1000
171
172 export LDFLAGS_KERNEL_RELEASE =
173 # -noseglinkedit
174 export LDFLAGS_KERNEL_DEBUG =
175 export LDFLAGS_KERNEL_PROFILE =
176
177 export LDFLAGS_KERNEL_PPC = -arch ppc -segaddr __VECTORS 0x0 -segaddr __TEXT 0x11000 -e __start -sectalign __DATA __common 0x1000 -sectalign __DATA __bss 0x1000
178 export LDFLAGS_KERNEL_I386 = -arch i386 -segaddr __TEXT 0x100000 -segaddr __LINKEDIT 0x780000 -e _pstart
179
180 export LDFLAGS_KERNEL = $(LDFLAGS_KERNEL_GEN) \
181 $($(addsuffix $(ARCH_CONFIG),LDFLAGS_KERNEL_)) \
182 $($(addsuffix $(KERNEL_CONFIG),LDFLAGS_KERNEL_))
183
184
185 #
186 # Default runtime libraries to be linked with the kernel
187 #
188 export LD_KERNEL_LIBS = -lcc_kext
189
190 #
191 # Default INCFLAGS
192 #
193 export INCFLAGS_IMPORT = $(patsubst %, -I$(OBJROOT)/EXPORT_HDRS/%, $(COMPONENT_IMPORT_LIST))
194 export INCFLAGS_EXTERN = -I$(OBJROOT)/EXTERN_HDRS -I$(SRCROOT)/EXTERNAL_HEADERS -I$(SRCROOT)/EXTERNAL_HEADERS/bsd
195 export INCFLAGS_GEN = -I$(SRCROOT)/$(COMPONENT)
196 export INCFLAGS_POSIX = -I$(OBJROOT)/EXPORT_HDRS/bsd
197 export INCFLAGS_LOCAL = -I.
198
199 export INCFLAGS = -nostdinc $(INCFLAGS_LOCAL) $(INCFLAGS_GEN) $(INCFLAGS_IMPORT) $(INCFLAGS_EXTERN) $(INCFLAGS_MAKEFILE)
200
201 #
202 # Default MIGFLAGS
203 #
204 export MIGFLAGS = $(DEFINES) $(INCFLAGS) $($(addsuffix $(ARCH_CONFIG),CFLAGS_))
205
206 #
207 # Default VPATH
208 #
209 empty:=
210 space:= $(empty) $(empty)
211 export VPATH_IMPORT = $(subst $(space),:,$(patsubst %,$(OBJROOT)/EXPORT_HDRS/%,$(strip $(COMPONENT_IMPORT_LIST)))):
212 export VPATH_EXTERN = $(OBJROOT)/EXTERN_HDRS:
213 export VPATH_GEN = .:$(SOURCE):
214
215 export VPATH = $(VPATH_GEN)$(VPATH_IMPORT)$(VPATH_EXTERN)$(VPATH_MAKEFILE)
216
217 #
218 # Macros that control installation of kernel and it's header files
219 #
220 # install flags for header files
221 #
222 INSTALL_FLAGS = -c -m 0444
223
224 #
225 # Header file destinations
226 #
227 FRAMEDIR = System/Library/Frameworks
228 ifndef INCDIR
229 INCDIR = /usr/include
230 endif
231 ifndef LCLDIR
232 LCLDIR = $(FRAMEDIR)/System.framework/Versions/B/PrivateHeaders
233 endif
234
235 KINCVERS = A
236 KINCFRAME = $(FRAMEDIR)/Kernel.framework
237 KINCDIR = $(KINCFRAME)/Versions/$(KINCVERS)/Headers
238
239 #
240 # Compononent Header file destinations
241 #
242 EXPDIR = EXPORT_HDRS/$(COMPONENT)
243
244 #
245 # Strip Flags
246 #
247 export STRIP_FLAGS_RELEASE = -S
248 export STRIP_FLAGS_RELEASE_TRACE = -S
249 export STRIP_FLAGS_DEBUG = -S
250 export STRIP_FLAGS_PROFILE = -S
251
252 export STRIP_FLAGS = $($(addsuffix $(KERNEL_CONFIG),STRIP_FLAGS_))
253
254 #
255 # This must be here before any rules are possibly defined by the
256 # machine dependent makefile fragment so that a plain "make" command
257 # always works. The config program will emit an appropriate rule to
258 # cause "all" to depend on every kernel configuration it generates.
259 #
260
261 default: all
262