]>
Commit | Line | Data |
---|---|---|
1c79356b A |
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 |