]> git.saurik.com Git - apple/xnu.git/blame - makedefs/MakeInc.def
xnu-124.7.tar.gz
[apple/xnu.git] / makedefs / MakeInc.def
CommitLineData
1c79356b
A
1
2export SOURCE=$(shell /bin/pwd)
3
4#
5# gnumake 3.77 support
6#
7export USE_APPLE_PB_SUPPORT = all
8
9#
10# Incremental Build option
11#
12ifndef INCR_EXPORTHDRS
13ifeq ($(shell test -d $$OBJROOT/EXPORT_HDRS;echo $$?),0)
14export INCR_EXPORTHDRS = TRUE
15else
16export INCR_EXPORTHDRS = FALSE
17endif
18endif
19
20ifndef INCR_INSTALLHDRS
21ifeq ($(shell test -d $$DSTROOT/$INCDIR;echo $$?),0)
22export INCR_INSTALLHDRS = TRUE
23else
24export INCR_INSTALLHDRS = FALSE
25endif
26endif
27
28#
29# Component List
30#
31export COMPONENT_LIST = osfmk bsd iokit pexpert libkern libsa
32export COMPONENT = $(firstword $(subst /, ,$(shell $(RELPATH) $(SRCROOT) $(SOURCE))))
33export COMPONENT_IMPORT_LIST = $(filter-out $(COMPONENT),$(COMPONENT_LIST))
34
35# Architecture options
36#
37# supported configurations : PPC I386
38#
39ifdef RC_ARCHS
40export ARCH_CONFIGS = $(shell echo -n $(RC_ARCHS) | tr a-z A-Z)
41else
42ifndef ARCH_CONFIGS
43export ARCH_CONFIGS = $(shell arch | tr a-z A-Z)
44endif
45endif
46export ARCH_CONFIG = $(firstword $(ARCH_CONFIGS))
47export 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#
54ifndef KERNEL_CONFIGS
55export KERNEL_CONFIGS = RELEASE
56endif
57export KERNEL_CONFIG = $(firstword $(KERNEL_CONFIGS))
58
59#
60# Kernel Configuration to install
61#
62# supported install architecture : PPC I386
63#
64export INSTALL_TYPE = RELEASE
65ifdef RC_ARCHS
66export INSTALL_ARCHS = $(ARCH_CONFIGS)
67else
68export INSTALL_ARCHS = $(ARCH_CONFIGS)
69endif
70export INSTALL_ARCH = $(ARCH_CONFIG)
71
72export INSTALL_ARCH_DEFAULT = PPC
73
74#
75# Standard defines list
76#
77export DEFINES = -DAPPLE -DNeXT -DKERNEL_PRIVATE -D__MACHO__=1 -Dvolatile=__volatile $(IDENT)
78
79#
80# Compiler command
81#
82CC = /usr/bin/cc
83KCC = /usr/bin/cc
84
85#
86# Default CFLAGS
87#
88ifdef RC_CFLAGS
89export OTHER_CFLAGS = $(subst $(addprefix -arch ,$(RC_ARCHS)),,$(RC_CFLAGS))
90endif
91
92export 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
94export CFLAGS_RELEASE =
95export CFLAGS_DEBUG = -fno-omit-frame-pointer
96export CFLAGS_PROFILE =
97
98export CFLAGS_PPC = -arch ppc -Dppc -DPPC -D__PPC__ -D_BIG_ENDIAN=__BIG_ENDIAN__
99export CFLAGS_I386 = -arch i386 -Di386 -DI386 -D__I386__ -D_BIG_ENDIAN=__LITTLE_ENDIAN__
100
101export CFLAGS_RELEASEPPC = -O2 -mcpu=750 -fschedule-insns
102export CFLAGS_RELEASE_TRACEPPC = -O2 -mcpu=750 -fschedule-insns
103export CFLAGS_DEBUGPPC = -O1 -mcpu=750 -fschedule-insns
104export CFLAGS_RELEASEI386 = -O2
105export CFLAGS_DEBUGI386 = -O2
106
107export 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#
118CPPFLAGS_GEN = -x c++ -fno-rtti -fno-exceptions -fcheck-new -fvtable-thunks
119CPPFLAGS_PPC =
120CPPFLAGS_I386 =
121
122CPPFLAGS = $(CPPFLAGS_GEN) \
123 $($(addsuffix $(ARCH_CONFIG),CCFLAGS_)) \
124 $($(addsuffix $(KERNEL_CONFIG),CCFLAGS_))
125
126#
127# Assembler command
128#
129AS = /usr/bin/cc
130S_KCC = /usr/bin/cc
131
132#
133# Default SFLAGS
134#
135export SFLAGS_GEN = -static -D__ASSEMBLER__ -force_cpusubtype_ALL $(OTHER_CFLAGS)
136
137export SFLAGS_RELEASE =
138export SFLAGS_DEBUG =
139export SFLAGS_PROFILE =
140
141export SFLAGS_PPC = $(CFLAGS_PPC)
142export SFLAGS_I386 = $(CFLAGS_I386)
143
144export SFLAGS = $(SFLAGS_GEN) \
145 $($(addsuffix $(ARCH_CONFIG),SFLAGS_)) \
146 $($(addsuffix $(KERNEL_CONFIG),SFLAGS_)) \
147 $(DEFINES)
148
149#
150# Linker command
151#
152LD = /usr/bin/ld
153
154#
155# Default LDFLAGS
156#
157export LDFLAGS_COMPONENT_GEN = -static -r
158
159export LDFLAGS_COMPONENT_RELEASE =
160export LDFLAGS_COMPONENT_DEBUG =
161export LDFLAGS_COMPONENT_PROFILE =
162
163export LDFLAGS_COMPONENT_PPC = -arch ppc
164export LDFLAGS_COMPONENT_I386 = -arch i386
165
166export LDFLAGS_COMPONENT = $(LDFLAGS_COMPONENT_GEN) \
167 $($(addsuffix $(ARCH_CONFIG),LDFLAGS_COMPONENT_)) \
168 $($(addsuffix $(KERNEL_CONFIG),LDFLAGS_COMPONENT_))
169
170export LDFLAGS_KERNEL_GEN = -static -force_cpusubtype_ALL -segalign 0x1000
171
172export LDFLAGS_KERNEL_RELEASE =
173# -noseglinkedit
174export LDFLAGS_KERNEL_DEBUG =
175export LDFLAGS_KERNEL_PROFILE =
176
177export LDFLAGS_KERNEL_PPC = -arch ppc -segaddr __VECTORS 0x0 -segaddr __TEXT 0x11000 -e __start -sectalign __DATA __common 0x1000 -sectalign __DATA __bss 0x1000
178export LDFLAGS_KERNEL_I386 = -arch i386 -segaddr __TEXT 0x100000 -segaddr __LINKEDIT 0x780000 -e _pstart
179
180export 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#
188export LD_KERNEL_LIBS = -lcc_kext
189
190#
191# Default INCFLAGS
192#
193export INCFLAGS_IMPORT = $(patsubst %, -I$(OBJROOT)/EXPORT_HDRS/%, $(COMPONENT_IMPORT_LIST))
194export INCFLAGS_EXTERN = -I$(OBJROOT)/EXTERN_HDRS -I$(SRCROOT)/EXTERNAL_HEADERS -I$(SRCROOT)/EXTERNAL_HEADERS/bsd
195export INCFLAGS_GEN = -I$(SRCROOT)/$(COMPONENT)
196export INCFLAGS_POSIX = -I$(OBJROOT)/EXPORT_HDRS/bsd
197export INCFLAGS_LOCAL = -I.
198
199export INCFLAGS = -nostdinc $(INCFLAGS_LOCAL) $(INCFLAGS_GEN) $(INCFLAGS_IMPORT) $(INCFLAGS_EXTERN) $(INCFLAGS_MAKEFILE)
200
201#
202# Default MIGFLAGS
203#
204export MIGFLAGS = $(DEFINES) $(INCFLAGS) $($(addsuffix $(ARCH_CONFIG),CFLAGS_))
205
206#
207# Default VPATH
208#
209empty:=
210space:= $(empty) $(empty)
211export VPATH_IMPORT = $(subst $(space),:,$(patsubst %,$(OBJROOT)/EXPORT_HDRS/%,$(strip $(COMPONENT_IMPORT_LIST)))):
212export VPATH_EXTERN = $(OBJROOT)/EXTERN_HDRS:
213export VPATH_GEN = .:$(SOURCE):
214
215export 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#
222INSTALL_FLAGS = -c -m 0444
223
224#
225# Header file destinations
226#
227FRAMEDIR = System/Library/Frameworks
228ifndef INCDIR
229 INCDIR = /usr/include
230endif
231ifndef LCLDIR
232 LCLDIR = $(FRAMEDIR)/System.framework/Versions/B/PrivateHeaders
233endif
234
235KINCVERS = A
236KINCFRAME = $(FRAMEDIR)/Kernel.framework
237KINCDIR = $(KINCFRAME)/Versions/$(KINCVERS)/Headers
238
239#
240# Compononent Header file destinations
241#
242EXPDIR = EXPORT_HDRS/$(COMPONENT)
243
244#
245# Strip Flags
246#
247export STRIP_FLAGS_RELEASE = -S
248export STRIP_FLAGS_RELEASE_TRACE = -S
249export STRIP_FLAGS_DEBUG = -S
250export STRIP_FLAGS_PROFILE = -S
251
252export 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
261default: all
262