]> git.saurik.com Git - apple/xnu.git/blob - makedefs/MakeInc.rule
xnu-1228.12.14.tar.gz
[apple/xnu.git] / makedefs / MakeInc.rule
1 #
2 # Generic Install rules
3 #
4
5 ifndef INSTALL_MI_LCL_LIST
6 INSTALL_MI_LCL_LIST = $(INSTALL_MI_LIST)
7 endif
8
9 ifndef INSTALL_MI_LCL_GEN_LIST
10 INSTALL_MI_LCL_GEN_LIST = $(INSTALL_MI_GEN_LIST)
11 endif
12
13 ifndef INSTALL_MD_LCL_LIST
14 INSTALL_MD_LCL_LIST = $(INSTALL_MD_LIST)
15 endif
16
17 ifndef INSTALL_MD_LCL_GEN_LIST
18 INSTALL_MD_LCL_GEN_LIST = $(INSTALL_MD_GEN_LIST)
19 endif
20
21 ifndef INSTALL_KF_MI_LCL_LIST
22 INSTALL_KF_MI_LCL_LIST = $(EXPORT_MI_LIST)
23 endif
24
25 ifndef INSTALL_KF_MI_LCL_GEN_LIST
26 INSTALL_KF_MI_LCL_GEN_LIST = $(EXPORT_MI_GEN_LIST)
27 endif
28
29 ifndef INSTALL_KF_MD_LCL_LIST
30 INSTALL_KF_MD_LCL_LIST = $(EXPORT_MD_LIST)
31 endif
32
33 ifndef INSTALL_KF_MD_LCL_GEN_LIST
34 INSTALL_KF_MD_LCL_GEN_LIST = $(EXPORT_MD_GEN_LIST)
35 endif
36
37 ifndef INSTALL_KF_MI_LIST
38 INSTALL_KF_MI_LIST = $(EXPORT_MI_LIST)
39 endif
40
41 ifndef INSTALL_KF_MI_GEN_LIST
42 INSTALL_KF_MI_GEN_LIST = $(EXPORT_MI_GEN_LIST)
43 endif
44
45 ifndef INSTALL_KF_MD_LIST
46 INSTALL_KF_MD_LIST = $(EXPORT_MD_LIST)
47 endif
48
49 ifndef INSTALL_KF_MD_GEN_LIST
50 INSTALL_KF_MD_GEN_LIST = $(EXPORT_MD_GEN_LIST)
51 endif
52
53 ifneq ($(MACHINE_CONFIG), DEFAULT)
54 OBJPATH = $(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)_$(MACHINE_CONFIG)
55 else
56 OBJPATH = $(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)
57 endif
58
59 INSTALL_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_GEN_LIST))
60
61 $(INSTALL_MI_GEN_FILES): $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/% : %
62 @true echo Installing $< in $(dir $@)
63 $(_v)[ -d $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR) ] ||$(MKDIR) $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR); \
64 filename=`$(BASENAME) $<`; \
65 filename_strip=$(addsuffix .strip,$${filename}); \
66 $(RM) $(RMFLAGS) $@; \
67 [ -d ./incmidir ] || $(MKDIR) ./incmidir; \
68 echo garbage > ./incmidir/$${filename_strip}; \
69 $(UNIFDEF) $(SINCFRAME_UNIFDEF) \
70 $< > ./incmidir/$${filename} || \
71 $(DECOMMENT) ./incmidir/$${filename} r > \
72 ./incmidir/$${filename_strip}; \
73 if [ -s ./incmidir/$${filename_strip} ]; \
74 then ( \
75 $(INSTALL) $(INSTALL_FLAGS) ./incmidir/$${filename} $(dir $@);\
76 ); \
77 else \
78 echo Header file $< not exported; \
79 fi;
80
81 INSTALL_KF_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_GEN_LIST))
82
83 $(INSTALL_KF_MI_GEN_FILES): $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/% : %
84 @true echo Installing $< in $(midir $@)
85 $(_v)[ -d $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR) ] ||$(MKDIR) $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR); \
86 filename=`$(BASENAME) $<`; \
87 filename_strip=$(addsuffix .strip,$${filename}); \
88 $(RM) $(RMFLAGS) $@; \
89 [ -d ./kincmidir ] || $(MKDIR) ./kincmidir; \
90 echo garbage > ./kincmidir/$${filename_strip}; \
91 $(UNIFDEF) $(KINCFRAME_UNIFDEF) \
92 $< > ./kincmidir/$${filename} || \
93 $(DECOMMENT) ./kincmidir/$${filename} r > \
94 ./kincmidir/$${filename_strip}; \
95 if [ -s ./kincmidir/$${filename_strip} ]; \
96 then ( \
97 $(INSTALL) $(INSTALL_FLAGS) ./kincmidir/$${filename} $(dir $@);\
98 ); \
99 else \
100 echo Header file $< not exported; \
101 fi;
102
103 INSTALL_MI_GEN_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LCL_GEN_LIST))
104
105 $(INSTALL_MI_GEN_LCL_FILES): $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/% : %
106 @true echo Installing $< in $(dir $@)
107 $(_v)[ -d $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR) ] ||$(MKDIR) $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR); \
108 filename=`$(BASENAME) $<`; \
109 filename_strip=$(addsuffix .strip,$${filename}); \
110 $(RM) $(RMFLAGS) $@; \
111 [ -d ./pincmidir ] || $(MKDIR) ./pincmidir; \
112 echo garbage > ./pincmidir/$${filename_strip}; \
113 $(UNIFDEF) $(SPINCFRAME_UNIFDEF) \
114 $< > ./pincmidir/$${filename} || \
115 $(DECOMMENT) ./pincmidir/$${filename} r > \
116 ./pincmidir/$${filename_strip}; \
117 if [ -s ./pincmidir/$${filename_strip} ]; \
118 then ( \
119 $(INSTALL) $(INSTALL_FLAGS) ./pincmidir/$${filename} $(dir $@);\
120 ); \
121 else \
122 echo Header file $< not exported; \
123 fi;
124
125 INSTALL_KF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_GEN_LIST))
126
127 $(INSTALL_KF_MI_LCL_GEN_FILES): $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/% : %
128 @true echo Installing $< in $(dir $@)
129 $(_v)[ -d $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR) ] ||$(MKDIR) $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR); \
130 filename=`$(BASENAME) $<`; \
131 filename_strip=$(addsuffix .strip,$${filename}); \
132 $(RM) $(RMFLAGS) $@; \
133 [ -d ./kpincmidir ] || $(MKDIR) ./kpincmidir; \
134 echo garbage > ./kpincmidir/$${filename_strip}; \
135 $(UNIFDEF) $(KPINCFRAME_UNIFDEF) \
136 $< > ./kpincmidir/$${filename} || \
137 $(DECOMMENT) ./kpincmidir/$${filename} r > \
138 ./kpincmidir/$${filename_strip}; \
139 if [ -s ./kpincmidir/$${filename_strip} ]; \
140 then ( \
141 $(INSTALL) $(INSTALL_FLAGS) ./kpincmidir/$${filename} $(dir $@);\
142 ); \
143 else \
144 echo Header file $< not exported; \
145 fi;
146
147 INSTALL_MD_GEN_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_GEN_LIST))
148
149 $(INSTALL_MD_GEN_INC_FILES): $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/% : %
150 @true echo Installing $< in $(dir $@)
151 $(_v)[ -d $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR) ] ||$(MKDIR) $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR); \
152 filename=`$(BASENAME) $<`; \
153 filename_strip=$(addsuffix .strip,$${filename}); \
154 $(RM) $(RMFLAGS) $@; \
155 [ -d ./incdir ] || $(MKDIR) ./incdir; \
156 echo garbage > ./incdir/$${filename_strip}; \
157 $(UNIFDEF) $(SINCFRAME_UNIFDEF) \
158 $< > ./incdir/$${filename} || \
159 $(DECOMMENT) ./incdir/$${filename} r > \
160 ./incdir/$${filename_strip}; \
161 if [ -s ./incdir/$${filename_strip} ]; \
162 then ( \
163 $(INSTALL) $(INSTALL_FLAGS) ./incdir/$${filename} $(dir $@);\
164 ); \
165 else \
166 echo Header file $< not exported; \
167 fi;
168
169 INSTALL_KF_MD_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_GEN_LIST))
170
171 $(INSTALL_KF_MD_GEN_FILES): $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/% : %
172 @true echo Installing $< in $(dir $@)
173 $(_v)[ -d $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR) ] ||$(MKDIR) $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR); \
174 filename=`$(BASENAME) $<`; \
175 filename_strip=$(addsuffix .strip,$${filename}); \
176 $(RM) $(RMFLAGS) $@; \
177 [ -d ./kincdir ] || $(MKDIR) ./kincdir; \
178 echo garbage > ./kincdir/$${filename_strip}; \
179 $(UNIFDEF) $(KINCFRAME_UNIFDEF) \
180 $< > ./kincdir/$${filename} || \
181 $(DECOMMENT) ./kincdir/$${filename} r > \
182 ./kincdir/$${filename_strip}; \
183 if [ -s ./kincdir/$${filename_strip} ]; \
184 then ( \
185 $(INSTALL) $(INSTALL_FLAGS) ./kincdir/$${filename} $(dir $@);\
186 ); \
187 else \
188 echo Header file $< not exported; \
189 fi;
190
191 INSTALL_MD_LCL_FILES = $(addprefix $(SOURCE), $(INSTALL_MD_LCL_LIST))
192 INSTALL_MD_GEN_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_LCL_GEN_LIST))
193
194 $(INSTALL_MD_GEN_LCL_FILES): $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/% : %
195 @true echo Installing $< in $(dir $@)
196 $(_v)[ -d $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR) ] ||$(MKDIR) $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR); \
197 filename=`$(BASENAME) $<`; \
198 filename_strip=$(addsuffix .strip,$${filename}); \
199 $(RM) $(RMFLAGS) $@; \
200 [ -d ./pincdir ] || $(MKDIR) ./pincdir; \
201 echo garbage > ./pincdir/$${filename_strip}; \
202 $(UNIFDEF) $(SPINCFRAME_UNIFDEF) \
203 $< > ./pincdir/$${filename} || \
204 $(DECOMMENT) ./pincdir/$${filename} r > \
205 ./pincdir/$${filename_strip}; \
206 if [ -s ./pincdir/$${filename_strip} ]; \
207 then ( \
208 $(INSTALL) $(INSTALL_FLAGS) ./pincdir/$${filename} $(dir $@);\
209 ); \
210 else \
211 echo Header file $< not exported; \
212 fi;
213
214 INSTALL_KF_MD_LCL_FILES = $(addprefix $(SOURCE), $(INSTALL_KF_MD_LCL_LIST))
215 INSTALL_KF_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_GEN_LIST))
216
217 $(INSTALL_KF_MD_LCL_GEN_FILES): $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/% : %
218 @true echo Installing $< in $(dir $@)
219 $(_v)[ -d $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR) ] ||$(MKDIR) $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR); \
220 filename=`$(BASENAME) $<`; \
221 filename_strip=$(addsuffix .strip,$${filename}); \
222 $(RM) $(RMFLAGS) $@; \
223 [ -d ./kpincdir ] || $(MKDIR) ./kpincdir; \
224 echo garbage > ./kpincdir/$${filename_strip}; \
225 $(UNIFDEF) $(KPINCFRAME_UNIFDEF) \
226 $< > ./kpincdir/$${filename} || \
227 $(DECOMMENT) ./kpincdir/$${filename} r > \
228 ./kpincdir/$${filename_strip}; \
229 if [ -s ./kpincdir/$${filename_strip} ]; \
230 then ( \
231 $(INSTALL) $(INSTALL_FLAGS) ./kpincdir/$${filename} $(dir $@);\
232 ); \
233 else \
234 echo Header file $< not exported; \
235 fi;
236
237 setup_installhdrs_mi:
238
239 do_installhdrs_mi: $(INSTALL_MI_GEN_FILES) $(INSTALL_MI_GEN_LCL_FILES) $(INSTALL_KF_MI_GEN_FILES) $(INSTALL_KF_MI_LCL_GEN_FILES)
240 @true echo "[ $(SOURCE) ] make do_installhdrs_mi $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"
241 $(_v)$(MKDIR) ./incmidir ./pincmidir ./kincmidir ./kpincmidir; \
242 if [ -n "$(strip $(INSTALL_MI_LIST))" ]; then \
243 if [ -d $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR) ]; then \
244 (cd $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR);$(RM) $(RMFLAGS) $(INSTALL_MI_LIST) ); \
245 else \
246 $(MKDIR) $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR); \
247 fi; \
248 for j in $(INSTALL_MI_LIST); \
249 do \
250 echo garbage > ./incmidir/$$j.strip; \
251 $(UNIFDEF) $(SINCFRAME_UNIFDEF) \
252 $(SOURCE)/$$j > ./incmidir/$$j || \
253 $(DECOMMENT) ./incmidir/$$j r > \
254 ./incmidir/$$j.strip; \
255 if [ -s ./incmidir/$$j.strip ]; \
256 then ( \
257 $(INSTALL) $(INSTALL_FLAGS) ./incmidir/$$j $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR); \
258 ); \
259 else \
260 echo Header file $$j not exported; \
261 fi; \
262 done; \
263 fi; \
264 if [ -n "$(strip $(INSTALL_MI_LCL_LIST))" ]; then \
265 if [ -d $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR) ]; then \
266 (cd $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR);$(RM) $(RMFLAGS) $(INSTALL_MI_LCL_LIST) ); \
267 else \
268 $(MKDIR) $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR); \
269 fi; \
270 for j in $(INSTALL_MI_LCL_LIST); \
271 do \
272 echo garbage > ./pincmidir/$$j.strip; \
273 $(UNIFDEF) $(SPINCFRAME_UNIFDEF) \
274 $(SOURCE)/$$j > ./pincmidir/$$j || \
275 $(DECOMMENT) ./pincmidir/$$j r > \
276 ./pincmidir/$$j.strip; \
277 if [ -s ./pincmidir/$$j.strip ]; \
278 then ( \
279 $(INSTALL) $(INSTALL_FLAGS) ./pincmidir/$$j $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR); \
280 ); \
281 else \
282 echo Header file $$j not exported; \
283 fi; \
284 done; \
285 fi; \
286 if [ -n "$(strip $(INSTALL_KF_MI_LIST))" ]; then \
287 if [ -d $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR) ]; then \
288 (cd $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR);$(RM) $(RMFLAGS) $(INSTALL_KF_MI_LIST) ); \
289 else \
290 $(MKDIR) $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR); \
291 fi; \
292 for j in $(INSTALL_KF_MI_LIST); \
293 do \
294 echo garbage > ./kincmidir/$$j.strip; \
295 $(UNIFDEF) $(KINCFRAME_UNIFDEF) \
296 $(SOURCE)/$$j > ./kincmidir/$$j || \
297 $(DECOMMENT) ./kincmidir/$$j r > \
298 ./kincmidir/$$j.strip; \
299 if [ -s ./kincmidir/$$j.strip ]; \
300 then ( \
301 $(INSTALL) $(INSTALL_FLAGS) ./kincmidir/$$j $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR); \
302 ); \
303 else \
304 echo Header file $$j not exported; \
305 fi; \
306 done; \
307 fi; \
308 if [ -n "$(strip $(INSTALL_KF_MI_LCL_LIST))" ]; then \
309 if [ -d $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR) ]; then \
310 (cd $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR);$(RM) $(RMFLAGS) $(INSTALL_KF_MI_LCL_LIST) ); \
311 else \
312 $(MKDIR) $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR); \
313 fi; \
314 for j in $(INSTALL_KF_MI_LCL_LIST); \
315 do \
316 echo garbage > ./kpincmidir/$$j.strip; \
317 $(UNIFDEF) $(KPINCFRAME_UNIFDEF) \
318 $(SOURCE)/$$j > ./kpincmidir/$$j || \
319 $(DECOMMENT) ./kpincmidir/$$j r > \
320 ./kpincmidir/$$j.strip; \
321 if [ -s ./kpincmidir/$$j.strip ]; \
322 then ( \
323 $(INSTALL) $(INSTALL_FLAGS) ./kpincmidir/$$j $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR); \
324 ); \
325 else \
326 echo Header file $$j not exported; \
327 fi; \
328 done; \
329 fi; \
330 $(RM) -rf ./incmidir ./pincmidir ./kincmidir ./kpincmidir;
331
332 setup_installhdrs_md:
333
334 do_installhdrs_md: $(INSTALL_MD_GEN_INC_FILES) $(INSTALL_MD_GEN_LCL_FILES) $(INSTALL_KF_MD_GEN_FILES) $(INSTALL_KF_MD_LCL_GEN_FILES)
335 @true echo "[ $(SOURCE) ] make do_installhdrs_md $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"
336 $(_v)$(MKDIR) ./incdir ./pincdir ./kincdir ./kpincdir; \
337 if [ -n "$(strip $(INSTALL_MD_LIST))" ]; then \
338 if [ -d $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR) ]; then \
339 (cd $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR);$(RM) $(RMFLAGS) $(INSTALL_MD_LIST) ); \
340 else \
341 $(MKDIR) $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR); \
342 fi; \
343 for j in $(INSTALL_MD_LIST); \
344 do \
345 echo garbage > ./incdir/$$j.strip; \
346 $(UNIFDEF) $(SINCFRAME_UNIFDEF) \
347 $(SOURCE)/$$j > ./incdir/$$j || \
348 $(DECOMMENT) ./incdir/$$j r > \
349 ./incdir/$$j.strip; \
350 if [ -s ./incdir/$$j.strip ]; \
351 then ( \
352 $(INSTALL) $(INSTALL_FLAGS) ./incdir/$$j $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR); \
353 ); \
354 else \
355 echo Header file $$j not exported; \
356 fi; \
357 done; \
358 fi; \
359 if [ -n "$(strip $(INSTALL_MD_LCL_LIST))" ]; then \
360 if [ -d $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR) ]; then \
361 (cd $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR);$(RM) $(RMFLAGS) $(INSTALL_MD_LCL_LIST) ); \
362 else \
363 $(MKDIR) $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR); \
364 fi; \
365 for j in $(INSTALL_MD_LCL_LIST); \
366 do \
367 echo garbage > ./pincdir/$$j.strip; \
368 $(UNIFDEF) $(SPINCFRAME_UNIFDEF) \
369 $(SOURCE)/$$j > ./pincdir/$$j || \
370 $(DECOMMENT) ./pincdir/$$j r > \
371 ./pincdir/$$j.strip; \
372 if [ -s ./pincdir/$$j.strip ]; \
373 then ( \
374 $(INSTALL) $(INSTALL_FLAGS) ./pincdir/$$j $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR); \
375 ); \
376 else \
377 echo Header file $$j not exported; \
378 fi; \
379 done; \
380 fi; \
381 if [ -n "$(strip $(INSTALL_KF_MD_LIST))" ]; then \
382 if [ -d $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR) ]; then \
383 (cd $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR);$(RM) $(RMFLAGS) $(INSTALL_KF_MD_LIST) ); \
384 else \
385 $(MKDIR) $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR); \
386 fi; \
387 for j in $(INSTALL_KF_MD_LIST); \
388 do \
389 echo garbage > ./kincdir/$$j.strip; \
390 $(UNIFDEF) $(KINCFRAME_UNIFDEF) \
391 $(SOURCE)/$$j > ./kincdir/$$j || \
392 $(DECOMMENT) ./kincdir/$$j r > \
393 ./kincdir/$$j.strip; \
394 if [ -s ./kincdir/$$j.strip ]; \
395 then ( \
396 $(INSTALL) $(INSTALL_FLAGS) ./kincdir/$$j $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR); \
397 ); \
398 else \
399 echo Header file $$j not exported; \
400 fi; \
401 done; \
402 fi; \
403 if [ -n "$(strip $(INSTALL_KF_MD_LCL_LIST))" ]; then \
404 if [ -d $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR) ]; then \
405 (cd $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR);$(RM) $(RMFLAGS) $(INSTALL_KF_MD_LCL_LIST) ); \
406 else \
407 $(MKDIR) $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR); \
408 fi; \
409 for j in $(INSTALL_KF_MD_LCL_LIST); \
410 do \
411 echo garbage > ./kpincdir/$$j.strip; \
412 $(UNIFDEF) $(KPINCFRAME_UNIFDEF) \
413 $(SOURCE)/$$j > ./kpincdir/$$j || \
414 $(DECOMMENT) ./kpincdir/$$j r > \
415 ./kpincdir/$$j.strip; \
416 if [ -s ./kpincdir/$$j.strip ]; \
417 then ( \
418 $(INSTALL) $(INSTALL_FLAGS) ./kpincdir/$$j $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR); \
419 ); \
420 else \
421 echo Header file $$j not exported; \
422 fi; \
423 done; \
424 fi; \
425 $(RM) -rf ./incdir ./pincdir ./kincdir ./kpincdir;
426
427
428 #
429 # Generic Export rules
430 #
431 ifeq ($(INCR_EXPORTHDRS), TRUE)
432
433 EXPORT_MI_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_LIST))
434 EXPORT_MI_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_GEN_LIST))
435
436 $(EXPORT_MI_INC_FILES) $(EXPORT_MI_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : %
437 @true echo Exporting $< in $(dir $@)
438 $(_v)[ -d $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR) ] ||$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR); \
439 ${CP} -p $< $(dir $@); \
440
441
442 EXPORT_MD_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_LIST))
443 EXPORT_MD_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_GEN_LIST))
444
445 $(EXPORT_MD_INC_FILES) $(EXPORT_MD_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : %
446 @true echo Exporting $< in $(dir $@)
447 $(_v)[ -d $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR) ] ||$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR); \
448 ${CP} -p $< $(dir $@); \
449
450 setup_exporthdrs_mi:
451
452 do_exporthdrs_mi: $(EXPORT_MI_INC_FILES) $(EXPORT_MI_GEN_INC_FILES)
453 @true echo "[ $(SOURCE) ] make do_exporthdrs_mi $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"
454
455 setup_exporthdrs_md:
456
457 do_exporthdrs_md: $(EXPORT_MD_INC_FILES) $(EXPORT_MD_GEN_INC_FILES)
458 @true echo "[ $(SOURCE) ] make do_exporthdrs_md $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"
459
460 else
461
462 EXPORT_MI_INC_FILES = $(addprefix $(SOURCE), $(EXPORT_MI_LIST))
463 EXPORT_MI_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_GEN_LIST))
464
465 $(EXPORT_MI_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : %
466 @true echo Exporting $< in $(dir $@)
467 $(_v)[ -d $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR) ] ||$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR); \
468 ${CP} -p $< $(dir $@); \
469
470
471 EXPORT_MD_INC_FILES = $(addprefix $(SOURCE), $(EXPORT_MD_LIST))
472 EXPORT_MD_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_GEN_LIST))
473
474 $(EXPORT_MD_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : %
475 @true echo Exporting $< in $(dir $@)
476 $(_v)[ -d $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR) ] ||$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR); \
477 ${CP} -p $< $(dir $@); \
478
479 setup_exporthdrs_mi:
480
481 do_exporthdrs_mi: $(EXPORT_MI_GEN_INC_FILES)
482 @true echo "[ $(SOURCE) ] make do_exporthdrs_mi $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"
483 $(_v)if [ -n "$(strip $(EXPORT_MI_LIST))" ]; then \
484 if [ -d $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR) ]; then \
485 (cd $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR);$(RM) $(RMFLAGS) $(EXPORT_MI_LIST) ); \
486 else \
487 $(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR); \
488 fi; \
489 ${CP} -p $(EXPORT_MI_INC_FILES) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR); \
490 fi
491
492 setup_exporthdrs_md:
493
494 do_exporthdrs_md: $(EXPORT_MD_GEN_INC_FILES)
495 @true echo "[ $(SOURCE) ] make do_exporthdrs_md $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"
496 $(_v)if [ -n "$(strip $(EXPORT_MD_LIST))" ]; then \
497 if [ -d $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR) ]; then \
498 (cd $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR);$(RM) $(RMFLAGS) $(EXPORT_MD_LIST) ); \
499 else \
500 $(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR); \
501 fi; \
502 ${CP} -p $(EXPORT_MD_INC_FILES) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR); \
503 fi
504
505
506 #
507 endif
508 #
509 # Generic Compilation rules
510 #
511
512 #
513 # Compilation rules to generate .o from .s
514 #
515
516 COMP_SOBJ_FILES = $(addprefix $(TARGET)$(COMP_OBJ_DIR), $(COMP_SOBJ_LIST))
517
518 $(COMP_SOBJ_FILES): $(TARGET)$(COMP_OBJ_DIR)%.o : %.s
519 ${S_KCC} -E -MD ${SFLAGS} -DASSEMBLER $(INCFLAGS) $< > $(patsubst %.o, %.pp, ${@});
520 sed '/^\#/d' $(patsubst %.o, %.pp, ${@}) > $(patsubst %.o, %.s, ${@});
521 ${S_KCC} ${SFLAGS} ${_HOST_AS_FLAGS} -c $(patsubst %.o, %.s, ${@});
522 ${RM} ${_RMFLAGS_} $(patsubst %.o, %.pp, ${@}) $(patsubst %.o,%.s,${@});
523
524 S_RULE_1A=@ls /
525 S_RULE_1B= ${patsubst %.o,%.s,${@}} > /dev/null
526 S_RULE_2=$(_v)${S_KCC} -E -MD ${SFLAGS} -DASSEMBLER $(INCFLAGS) $< \
527 > $(patsubst %.o, %.pp, ${@}); \
528 sed '/^\#/d' $(patsubst %.o, %.pp, ${@}) > $(patsubst %.o, %.s, ${@});
529 ifeq ($(BUILD_STABS),1)
530 S_RULE_3=$(_v)${S_KCC} ${SFLAGS} ${_HOST_AS_FLAGS} -c $(patsubst %.o, %.s, ${@});\
531 ${RM} ${_RMFLAGS_} $(patsubst %.o, %.pp, ${@}) $(patsubst %.o,%.s,${@});
532 else
533 S_RULE_3=$(_v)${S_KCC} ${SFLAGS} ${_HOST_AS_FLAGS} -c $(patsubst %.o, %.s, ${@});\
534 ${RM} ${_RMFLAGS_} $(patsubst %.o, %.pp, ${@}) $(patsubst %.o,%.s,${@});\
535 ${CTFCONVERT} -l xnu -v -o $(TARGET)$(COMP_OBJ_DIR)/$(KERNEL_CONFIG)/$@.ctf $@ > /dev/null && $(CTFSCRUB) `cat $(SRCROOT)/config/DtraceIgnored.symbols` $(TARGET)$(COMP_OBJ_DIR)/$(KERNEL_CONFIG)/$@.ctf || true;
536 S_RULE_4=@echo ASM $@
537 endif
538
539 #
540 # Compilation rules to generate .o from .c for normal files
541 C_RULE_1A=$(_v)${KCC} -c ${filter-out ${${join $@,_CFLAGS_RM}}, ${CFLAGS} ${CWARNFLAGS}} -MD ${${join $@,_CFLAGS_ADD}} ${INCFLAGS} ${${join $@,_INCFLAGS}}
542 C_RULE_1B=$*.c
543 C_RULE_2=@echo CC $@
544 ifeq ($(BUILD_STABS),1)
545 C_RULE_3=
546 else
547 C_RULE_3=$(_v)${CTFCONVERT} -l xnu -v -o $(TARGET)$(COMP_OBJ_DIR)/$(KERNEL_CONFIG)/$@.ctf $@ > /dev/null && $(CTFSCRUB) `cat $(SRCROOT)/config/DtraceIgnored.symbols` $(TARGET)$(COMP_OBJ_DIR)/$(KERNEL_CONFIG)/$@.ctf || true;
548 endif
549 C_RULE_4=
550
551 #
552 # Compilation rules to generate .o from .c for driver files
553 #
554 C_RULE_1A_D=${C_RULE_1A}
555 C_RULE_1B_D=${C_RULE_1B}
556 C_RULE_2_D=${C_RULE_2}
557 C_RULE_3_D=${C_RULE_3}
558 C_RULE_4_D=${C_RULE_4}
559
560 #
561 # Compilation rules to generate .o from .m
562 #
563 M_RULE_1A=$(_v)${KCC} -c ${filter-out ${${join $@,_CFLAGS_RM}}, ${CFLAGS} ${MWARNFLAGS}} -MD ${${join $@,_CFLAGS_ADD}} ${INCFLAGS} ${${join $@,_INCFLAGS}}
564 M_RULE_1B=$*.m
565 M_RULE_2=@echo CC $@
566 M_RULE_3=
567 M_RULE_4=
568
569 #
570 # Compilation rules to generate .co from .cp or .cpo from .cpp
571 # The config tool slickly changes the last source filename char to 'o'
572 # for the object filename.
573 P_RULE_1A=$(_v)${KC++} -o $@ -c ${CXXFLAGS} ${filter-out ${${join $@,_CFLAGS_RM}}, ${CFLAGS} ${CXXWARNFLAGS}} -MD ${${join $@,_CFLAGS_ADD}} ${INCFLAGS} ${${join $@,_INCFLAGS}}
574 P_RULE_1B=$(<F)
575 P_RULE_2=$(_v)sed 's/.c.o: /.cpo: /' $(@:.cpo=.d) > $(@:.cpo=.d~) && mv $(@:.cpo=.d~) $(@:.cpo=.d)
576 P_RULE_3=@echo C++ $@
577 ifeq ($(BUILD_STABS),1)
578 P_RULE_4=
579 else
580 P_RULE_4=$(_v)${CTFCONVERT} -l xnu -v -o $(TARGET)$(COMP_OBJ_DIR)/$(KERNEL_CONFIG)/$@.ctf $@ > /dev/null && $(CTFSCRUB) `cat $(SRCROOT)/config/DtraceIgnored.symbols` $(TARGET)$(COMP_OBJ_DIR)/$(KERNEL_CONFIG)/$@.ctf || true;
581 endif
582 P_RULE_4=
583
584 #
585 # Linker rule to generate a component
586 #
587 LD_COMPONENT_OBJ_FILES = $(addprefix $(TARGET)$(COMP_OBJ_DIR), $(LD_COMPONENT_OBJ_LIST))
588
589 COMPONENT_IMAGE_FILE = $(addprefix $(TARGET), $(COMPONENT_IMAGE))
590
591 $(COMPONENT_IMAGE_FILE): $(LD_COMPONENT_OBJ_FILES)
592 @echo LD $@
593 $(_v)$(LD) $(LDFLAGS_COMPONENT) -o $(COMPONENT_IMAGE_FILE) ${LD_COMPONENT_OBJ_FILES};
594 $(_v)(cd $(TARGET)$(COMP_OBJ_DIR); ${MD} -u Makedep -f -d `ls *.d`);
595
596 setup_build_all:
597
598 do_build_all: $(COMP_FILES) $(COMP_COBJ_FILES) $(COMP_SOBJ_FILES) $(COMPONENT_IMAGE_FILE)
599
600 ifeq ($(COMPONENT), .)
601 do_build_all: do_build_mach_kernel
602 endif
603
604 #
605 # mach_kernel building rules
606 #
607 do_build_mach_kernel: $(OBJPATH)/kgmacros
608 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $(SRCROOT)/config/version.c $(OBJPATH)/version.c;
609 $(_v)$(SRCROOT)/config/newvers.pl $(OBJPATH)/version.c > /dev/null;
610 @echo CC version.o
611 $(_v)${KCC} -c ${filter-out ${${join $@,_CFLAGS_RM}}, ${CFLAGS}} ${${join $@,_CFLAGS_ADD}} ${INCFLAGS} ${${join $@,_INCFLAGS}} $(OBJPATH)/version.c -o $(OBJPATH)/version.o
612 @echo LD mach_kernel.sys
613 $(_v)$(LD) $(LDFLAGS_KERNEL) $(addprefix $(TARGET)/,$(foreach component,$(COMPONENT_LIST), $(addprefix $(component)/$(firstword $($(addsuffix _KERNEL_CONFIG, $(shell printf $(component) | tr a-z A-Z))) $(KERNEL_CONFIG))/, $(addsuffix .o, $(component))))) $(OBJPATH)/version.o -o $(TARGET)/mach_kernel.sys $(LD_KERNEL_LIBS)
614 @echo DSYMUTIL mach_kernel.sys
615 $(_v)if [ $(BUILD_DWARF) -eq 1 ]; then \
616 $(DSYMUTIL) $(DSYMUTIL_FLAGS) $(TARGET)/mach_kernel.sys -o $(TARGET)/mach_kernel.sys.dSYM > /dev/null; \
617 fi;
618 @echo STRIP mach_kernel
619 $(_v)$(STRIP) $(STRIP_FLAGS) $(TARGET)/mach_kernel.sys -o $(TARGET)/mach_kernel
620
621 $(OBJPATH)/kgmacros: $(SRCROOT)/kgmacros
622 $(_v)$(INSTALL) $(INSTALL_FLAGS) $? $@
623
624 # Special rules to install machine configuration variants
625
626 $(DSTROOT)$(INSTALL_FILE_DIR)mach.$(KERNEL_CONFIG_LC).$(MACHINE_CONFIG_LC): $(TARGET)/mach_kernel force_file_install
627 @echo Installing $< in $@;
628 $(_v)if [ ! -e $(DSTROOT)$(INSTALL_FILE_DIR) ]; then \
629 $(MKDIR) $(DSTROOT)$(INSTALL_FILE_DIR); \
630 fi; \
631 if [ "`echo $(INSTALL_ARCHS_LC) | wc -w`" -eq 1 ]; then \
632 $(RM) $(RMFLAGS) $@; \
633 $(INSTALL) $(FILE_INSTALL_FLAGS) $< $@; \
634 else \
635 if [ ! -e $@ ]; then \
636 echo >empty_file_$(notdir $@); \
637 lipo_arg="$(subst _empty_file, empty_file_$(notdir $@),$(foreach lipo_arch,$(INSTALL_ARCHS_LC), $(addprefix -arch , $(addsuffix _empty_file, $(lipo_arch)))))"; \
638 $(LIPO) $${lipo_arg} -create -output $@; \
639 $(RM) $(RMFLAGS) empty_file_$(notdir $@); \
640 fi; \
641 $(LIPO) $@ -replace $(ARCH_CONFIG_LC) $< -o $@; \
642 fi; \
643 if [ $(BUILD_DWARF) -eq 1 ]; then \
644 if [ "`echo $(INSTALL_ARCHS_LC) | wc -w`" -eq 1 ]; then \
645 $(CP) -f $< $<.ctfsys; \
646 $(FIND) $(OBJPATH)/ -name \*.ctf -size 0 \
647 -exec $(RM) -rf {} \; ; \
648 $(CTFMERGE) -l xnu -o $<.ctfsys \
649 $(OBJPATH)/*/$(KERNEL_CONFIG)/*.*o.ctf || true; \
650 $(INSTALL) $(FILE_INSTALL_FLAGS) $<.ctfsys $@.ctfsys; \
651 else \
652 if [ ! -e $@.ctfsys ]; then \
653 echo >empty_file_$(notdir $@); \
654 lipo_arg="$(subst _empty_file, empty_file_$(notdir $@),$(foreach lipo_arch,$(INSTALL_ARCHS_LC), $(addprefix -arch , $(addsuffix _empty_file, $(lipo_arch)))))"; \
655 $(LIPO) $${lipo_arg} -create -output $@.ctfsys;\
656 $(RM) $(RMFLAGS) empty_file_$(notdir $@);\
657 fi; \
658 $(FIND) $(OBJPATH)/ -name \*.ctf -size 0 \
659 -exec $(RM) -rf {} \; ; \
660 $(CP) -f $< $<.ctfsys; \
661 $(CTFMERGE) -l xnu -o $<.ctfsys \
662 $(OBJPATH)/*/$(KERNEL_CONFIG)/*.*o.ctf || true; \
663 $(LIPO) $@.ctfsys -replace $(ARCH_CONFIG_LC) \
664 $<.ctfsys -o $@.ctfsys; \
665 fi; \
666 fi
667
668 $(SYMROOT)$(INSTALL_FILE_DIR)mach.$(KERNEL_CONFIG_LC).$(MACHINE_CONFIG_LC): $(TARGET)/mach_kernel.sys force_file_install
669 @echo Installing $< in $@;
670 $(_v)if [ ! -e $(SYMROOT)$(INSTALL_FILE_DIR) ]; then \
671 $(MKDIR) $(SYMROOT)$(INSTALL_FILE_DIR); \
672 fi; \
673 if [ "`echo $(INSTALL_ARCHS_LC) | wc -w`" -eq 1 ]; then \
674 $(RM) $(RMFLAGS) $@; \
675 $(INSTALL) $(FILE_INSTALL_FLAGS) $< $@; \
676 if [ $(BUILD_DWARF) -eq 1 ]; then \
677 $(RM) -rf $@.dSYM; \
678 $(MKDIR) -p -m 0755 $@.dSYM/$(DSYMBUILDDIR); \
679 $(INSTALL) $(INSTALL_FLAGS) \
680 $<.dSYM/$(DSYMBUILDDIR)/$(notdir $<) \
681 $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@); \
682 fi; \
683 else \
684 if [ ! -e $@ ]; then \
685 echo >empty_file_$(notdir $@); \
686 lipo_arg="$(subst _empty_file, empty_file_$(notdir $@),$(foreach lipo_arch,$(INSTALL_ARCHS_LC), $(addprefix -arch , $(addsuffix _empty_file, $(lipo_arch)))))"; \
687 $(LIPO) $${lipo_arg} -create -output $@; \
688 $(RM) $(RMFLAGS) empty_file_$(notdir $@); \
689 fi; \
690 $(LIPO) $@ -replace $(ARCH_CONFIG_LC) $< -o $@; \
691 fi
692
693
694 #
695 # Generic Install rules
696 #
697 INSTALL_FILE_FILES = $(addprefix $(DSTROOT)$(INSTALL_FILE_DIR), $(INSTALL_FILE_LIST))
698 INSTALL_FILE_FILES_GENERIC = $(filter-out $(DSTROOT)$(INSTALL_FILE_DIR)mach.$(KERNEL_CONFIG_LC).$(MACHINE_CONFIG_LC), $(INSTALL_FILE_FILES))
699
700 force_file_install:
701
702 $(INSTALL_FILE_FILES_GENERIC): $(DSTROOT)$(INSTALL_FILE_DIR)% : $(TARGET)/% force_file_install
703 @echo Installing $< in $@;
704 $(_v)if [ ! -e $(DSTROOT)$(INSTALL_FILE_DIR) ]; then \
705 $(MKDIR) $(DSTROOT)$(INSTALL_FILE_DIR); \
706 fi; \
707 if [ "`echo $(INSTALL_ARCHS_LC) | wc -w`" -eq 1 ]; then \
708 $(RM) $(RMFLAGS) $@; \
709 if [ $(MACHINE_CONFIG) = DEFAULT ]; then \
710 $(INSTALL) $(FILE_INSTALL_FLAGS) $< $@; \
711 fi; \
712 else \
713 if [ ! -e $@ ]; then \
714 echo >empty_file_$(notdir $@); \
715 lipo_arg="$(subst _empty_file, empty_file_$(notdir $@),$(foreach lipo_arch,$(INSTALL_ARCHS_LC), $(addprefix -arch , $(addsuffix _empty_file, $(lipo_arch)))))"; \
716 $(LIPO) $${lipo_arg} -create -output $@; \
717 $(RM) $(RMFLAGS) empty_file_$(notdir $@); \
718 fi; \
719 $(LIPO) $@ -replace $(ARCH_CONFIG_LC) $< -o $@; \
720 fi; \
721 if [ $(BUILD_DWARF) -eq 1 ]; then \
722 if [ "`echo $(INSTALL_ARCHS_LC) | wc -w`" -eq 1 ]; then \
723 $(CP) -f $< $<.ctfsys; \
724 $(FIND) $(OBJPATH)/ -name \*.ctf -size 0 \
725 -exec $(RM) -rf {} \; ; \
726 $(CTFMERGE) -l xnu -o $<.ctfsys \
727 $(OBJPATH)/*/$(KERNEL_CONFIG)/*.*o.ctf || true; \
728 if [ $(MACHINE_CONFIG) = DEFAULT ]; then \
729 $(INSTALL) $(FILE_INSTALL_FLAGS) $<.ctfsys $(dir $@); \
730 fi; \
731 else \
732 if [ ! -e $@.ctfsys ]; then \
733 echo >empty_file_$(notdir $@); \
734 lipo_arg="$(subst _empty_file, empty_file_$(notdir $@),$(foreach lipo_arch,$(INSTALL_ARCHS_LC), $(addprefix -arch , $(addsuffix _empty_file, $(lipo_arch)))))"; \
735 $(LIPO) $${lipo_arg} -create -output $@.ctfsys;\
736 $(RM) $(RMFLAGS) empty_file_$(notdir $@);\
737 fi; \
738 $(FIND) $(OBJPATH)/ -name \*.ctf -size 0 \
739 -exec $(RM) -rf {} \; ; \
740 $(CP) -f $< $<.ctfsys; \
741 $(CTFMERGE) -l xnu -o $<.ctfsys \
742 $(OBJPATH)/*/$(KERNEL_CONFIG)/*.*o.ctf || true; \
743 $(LIPO) $@.ctfsys -replace $(ARCH_CONFIG_LC) \
744 $<.ctfsys -o $@.ctfsys; \
745 fi; \
746 fi
747
748 INSTALL_FILESYS_FILES = $(addprefix $(SYMROOT)$(INSTALL_FILE_DIR), $(INSTALL_FILE_LIST))
749 INSTALL_FILESYS_FILES_GENERIC = $(filter-out $(SYMROOT)$(INSTALL_FILE_DIR)mach.$(KERNEL_CONFIG_LC).$(MACHINE_CONFIG_LC), $(INSTALL_FILESYS_FILES))
750
751 force_filesys_install:
752
753 $(INSTALL_FILESYS_FILES_GENERIC): $(SYMROOT)$(INSTALL_FILE_DIR)% : $(TARGET)/%.sys force_filesys_install
754 @echo Installing $< in $@;
755 $(_v)if [ ! -e $(SYMROOT)$(INSTALL_FILE_DIR) ]; then \
756 $(MKDIR) $(SYMROOT)$(INSTALL_FILE_DIR); \
757 fi; \
758 if [ "`echo $(INSTALL_ARCHS_LC) | wc -w`" -eq 1 ]; then \
759 $(RM) $(RMFLAGS) $@; \
760 $(INSTALL) $(INSTALL_FLAGS) $< $@; \
761 if [ $(BUILD_DWARF) -eq 1 ]; then \
762 $(DSYMUTIL) $(DSYMUTIL_FLAGS) \
763 $(TARGET)/mach_kernel.sys \
764 -o $(TARGET)/mach_kernel.sys.dSYM; \
765 $(RM) -rf $@.dSYM; \
766 $(MKDIR) -p -m 0755 $@.dSYM/$(DSYMBUILDDIR); \
767 $(INSTALL) $(INSTALL_FLAGS) \
768 $<.dSYM/$(DSYMBUILDDIR)/$(notdir $<) \
769 $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@); \
770 fi; \
771 else \
772 if [ ! -e $@ ]; then \
773 echo >empty_filesys_$(notdir $@); \
774 lipo_arg="$(subst _empty_file, empty_filesys_$(notdir $@),$(foreach lipo_arch,$(INSTALL_ARCHS_LC), $(addprefix -arch , $(addsuffix _empty_file, $(lipo_arch)))))"; \
775 $(LIPO) $${lipo_arg} -create -output $@; \
776 $(RM) $(RMFLAGS) empty_filesys_$(notdir $@); \
777 fi; \
778 $(LIPO) $@ -replace $(ARCH_CONFIG_LC) $< -o $@; \
779 \
780 if [ $(BUILD_DWARF) -eq 1 ]; then \
781 if [ ! -e $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@) ]; then \
782 echo >empty_filesys_$(notdir $@); \
783 lipo_arg="$(subst _empty_file, empty_filesys_$(notdir $@),$(foreach lipo_arch,$(INSTALL_ARCHS_LC), $(addprefix -arch , $(addsuffix _empty_file, $(lipo_arch)))))"; \
784 $(MKDIR) -p -m 0755 $@.dSYM/$(DSYMBUILDDIR); \
785 $(LIPO) $${lipo_arg} -create \
786 -output \
787 $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@); \
788 $(RM) $(RMFLAGS) empty_filesys_$(notdir $@); \
789 fi; \
790 $(DSYMUTIL) $(DSYMUTIL_FLAGS) \
791 $(TARGET)/mach_kernel.sys \
792 -o $(TARGET)/mach_kernel.sys.dSYM; \
793 $(LIPO) $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@) \
794 -replace $(ARCH_CONFIG_LC) \
795 $<.dSYM/$(DSYMBUILDDIR)/$(notdir $<) \
796 -o $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@); \
797 fi; \
798 fi
799 $(INSTALL) $(INSTALL_FLAGS) $(SOURCE)kgmacros $(SYMROOT)$(INSTALL_FILE_DIR)
800
801 INSTALL_DATA_FILES = $(addprefix $(DSTROOT)$(INSTALL_DATA_DIR), $(INSTALL_DATA_LIST))
802
803 $(INSTALL_DATA_FILES): $(DSTROOT)$(INSTALL_DATA_DIR)% : $(SOURCE)/%
804 @echo Installing $< in $@;
805 $(_v)[ -d $(dir $@) ] ||$(MKDIR) $(dir $@); \
806 $(RM) $(RMFLAGS) $@; \
807 $(INSTALL) $(DATA_INSTALL_FLAGS) $< $(dir $@);
808
809 setup_build_install:
810 @echo "[ $(SOURCE) ] make setup_build_install $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"
811
812 do_build_install: $(INSTALL_FILESYS_FILES) $(INSTALL_FILE_FILES) $(INSTALL_DATA_FILES)
813 @echo "[ $(SOURCE) ] make do_build_install $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"
814
815 INSTALL_MAN_FILES = $(addprefix $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/, $(INSTALL_MAN_LIST))
816
817 do_installman: $(INSTALL_MAN_FILES)
818 @echo "[ $(SOURCE) ] make do_installman"
819 $(_v)if [ -n "$(strip $(INSTALL_MAN_LIST))" ]; then \
820 man_dir=$(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR); \
821 if [ -d $$man_dir ]; then \
822 ( cd $$man_dir; \
823 $(RM) $(RMFLAGS) $(INSTALL_MAN_LIST) $(INSTALL_MAN_LINKS)); \
824 else \
825 $(MKDIR) $$man_dir; \
826 fi; \
827 echo Installing $(INSTALL_MAN_LIST) in $$man_dir; \
828 $(INSTALL) $(INSTALL_FLAGS) $(INSTALL_MAN_LIST) $$man_dir; \
829 if [ -n "$(strip $(INSTALL_MAN_LINKS))" ]; then \
830 set `echo ${INSTALL_MAN_LINKS}`; \
831 while : ; do \
832 case $$# in \
833 0) break;; \
834 1) echo "warn: empty INSTALL_MAN_LINKS: $$1"; break;; \
835 esac; \
836 link_src=$$1; shift; link_dst=$$1; shift; \
837 echo "hard linking $${link_src} to $${link_dst}"; \
838 ln -f $${man_dir}/$${link_src} $${man_dir}/$${link_dst} ; \
839 done; \
840 fi; \
841 fi
842
843 $(INSTALL_MAN_FILES): $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/% : %
844 @true echo Installing $< in $(dir $@)
845 $(_v)$(MKDIR) $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR); \
846 $(RM) $(RMFLAGS) $@; \
847 $(INSTALL) $(INSTALL_FLAGS) $< $(dir $@);
848
849 ifeq ($(INCL_MAKEDEP), TRUE)
850 -include Makedep
851 endif
852
853 # vim: set ft=make: