2 # Generic Install rules
5 ifndef INSTALL_MI_LCL_LIST
6 INSTALL_MI_LCL_LIST = $(INSTALL_MI_LIST)
9 ifndef INSTALL_MI_LCL_GEN_LIST
10 INSTALL_MI_LCL_GEN_LIST = $(INSTALL_MI_GEN_LIST)
13 ifndef INSTALL_MD_LCL_LIST
14 INSTALL_MD_LCL_LIST = $(INSTALL_MD_LIST)
17 ifndef INSTALL_MD_LCL_GEN_LIST
18 INSTALL_MD_LCL_GEN_LIST = $(INSTALL_MD_GEN_LIST)
21 ifndef INSTALL_KF_MI_LCL_LIST
22 INSTALL_KF_MI_LCL_LIST = $(EXPORT_MI_LIST)
25 ifndef INSTALL_KF_MI_LCL_GEN_LIST
26 INSTALL_KF_MI_LCL_GEN_LIST = $(EXPORT_MI_GEN_LIST)
29 ifndef INSTALL_KF_MD_LCL_LIST
30 INSTALL_KF_MD_LCL_LIST = $(EXPORT_MD_LIST)
33 ifndef INSTALL_KF_MD_LCL_GEN_LIST
34 INSTALL_KF_MD_LCL_GEN_LIST = $(EXPORT_MD_GEN_LIST)
37 ifndef INSTALL_KF_MI_LIST
38 INSTALL_KF_MI_LIST = $(EXPORT_MI_LIST)
41 ifndef INSTALL_KF_MI_GEN_LIST
42 INSTALL_KF_MI_GEN_LIST = $(EXPORT_MI_GEN_LIST)
45 ifndef INSTALL_KF_MD_LIST
46 INSTALL_KF_MD_LIST = $(EXPORT_MD_LIST)
49 ifndef INSTALL_KF_MD_GEN_LIST
50 INSTALL_KF_MD_GEN_LIST = $(EXPORT_MD_GEN_LIST)
53 ifneq ($(MACHINE_CONFIG), DEFAULT)
54 OBJPATH = $(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)_$(MACHINE_CONFIG)
56 OBJPATH = $(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)
59 INSTALL_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_GEN_LIST))
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} ]; \
75 $(INSTALL) $(INSTALL_FLAGS) ./incmidir/$${filename} $(dir $@);\
78 echo Header file $< not exported; \
81 INSTALL_KF_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_GEN_LIST))
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} ]; \
97 $(INSTALL) $(INSTALL_FLAGS) ./kincmidir/$${filename} $(dir $@);\
100 echo Header file $< not exported; \
103 INSTALL_MI_GEN_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LCL_GEN_LIST))
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} ]; \
119 $(INSTALL) $(INSTALL_FLAGS) ./pincmidir/$${filename} $(dir $@);\
122 echo Header file $< not exported; \
125 INSTALL_KF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_GEN_LIST))
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} ]; \
141 $(INSTALL) $(INSTALL_FLAGS) ./kpincmidir/$${filename} $(dir $@);\
144 echo Header file $< not exported; \
147 INSTALL_MD_GEN_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_GEN_LIST))
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} ]; \
163 $(INSTALL) $(INSTALL_FLAGS) ./incdir/$${filename} $(dir $@);\
166 echo Header file $< not exported; \
169 INSTALL_KF_MD_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_GEN_LIST))
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} ]; \
185 $(INSTALL) $(INSTALL_FLAGS) ./kincdir/$${filename} $(dir $@);\
188 echo Header file $< not exported; \
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))
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} ]; \
208 $(INSTALL) $(INSTALL_FLAGS) ./pincdir/$${filename} $(dir $@);\
211 echo Header file $< not exported; \
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))
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} ]; \
231 $(INSTALL) $(INSTALL_FLAGS) ./kpincdir/$${filename} $(dir $@);\
234 echo Header file $< not exported; \
237 setup_installhdrs_mi:
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) ); \
246 $(MKDIR) $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR); \
248 for j in $(INSTALL_MI_LIST); \
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 ]; \
257 $(INSTALL) $(INSTALL_FLAGS) ./incmidir/$$j $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR); \
260 echo Header file $$j not exported; \
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) ); \
268 $(MKDIR) $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR); \
270 for j in $(INSTALL_MI_LCL_LIST); \
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 ]; \
279 $(INSTALL) $(INSTALL_FLAGS) ./pincmidir/$$j $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR); \
282 echo Header file $$j not exported; \
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) ); \
290 $(MKDIR) $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR); \
292 for j in $(INSTALL_KF_MI_LIST); \
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 ]; \
301 $(INSTALL) $(INSTALL_FLAGS) ./kincmidir/$$j $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR); \
304 echo Header file $$j not exported; \
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) ); \
312 $(MKDIR) $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR); \
314 for j in $(INSTALL_KF_MI_LCL_LIST); \
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 ]; \
323 $(INSTALL) $(INSTALL_FLAGS) ./kpincmidir/$$j $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR); \
326 echo Header file $$j not exported; \
330 $(RM) -rf ./incmidir ./pincmidir ./kincmidir ./kpincmidir;
332 setup_installhdrs_md:
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) ); \
341 $(MKDIR) $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR); \
343 for j in $(INSTALL_MD_LIST); \
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 ]; \
352 $(INSTALL) $(INSTALL_FLAGS) ./incdir/$$j $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR); \
355 echo Header file $$j not exported; \
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) ); \
363 $(MKDIR) $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR); \
365 for j in $(INSTALL_MD_LCL_LIST); \
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 ]; \
374 $(INSTALL) $(INSTALL_FLAGS) ./pincdir/$$j $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR); \
377 echo Header file $$j not exported; \
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) ); \
385 $(MKDIR) $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR); \
387 for j in $(INSTALL_KF_MD_LIST); \
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 ]; \
396 $(INSTALL) $(INSTALL_FLAGS) ./kincdir/$$j $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR); \
399 echo Header file $$j not exported; \
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) ); \
407 $(MKDIR) $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR); \
409 for j in $(INSTALL_KF_MD_LCL_LIST); \
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 ]; \
418 $(INSTALL) $(INSTALL_FLAGS) ./kpincdir/$$j $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR); \
421 echo Header file $$j not exported; \
425 $(RM) -rf ./incdir ./pincdir ./kincdir ./kpincdir;
429 # Generic Export rules
431 ifeq ($(INCR_EXPORTHDRS), TRUE)
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))
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 $@); \
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))
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 $@); \
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)"
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)"
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))
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 $@); \
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))
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 $@); \
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) ); \
487 $(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR); \
489 ${CP} -p $(EXPORT_MI_INC_FILES) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR); \
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) ); \
500 $(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR); \
502 ${CP} -p $(EXPORT_MD_INC_FILES) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR); \
509 # Generic Compilation rules
513 # Compilation rules to generate .o from .s
516 S_RULE_1A=$(_v)${S_KCC} -c -MD ${SFLAGS} -DASSEMBLER ${INCFLAGS} ${$@_INCFLAGS}
522 # Compilation rules to generate .o from .c for normal files
523 C_RULE_1A=$(_v)${KCC} -c ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CWARNFLAGS}} -MD ${$@_CFLAGS_ADD} ${$@_CWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS}
526 ifeq ($(BUILD_MACHO_OBJ),0)
528 else ifeq ($(BUILD_STABS),1)
531 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;
536 # Compilation rules to generate .o from .c for driver files
538 C_RULE_1A_D=${C_RULE_1A}
539 C_RULE_1B_D=${C_RULE_1B}
540 C_RULE_2_D=${C_RULE_2}
541 C_RULE_3_D=${C_RULE_3}
542 C_RULE_4_D=${C_RULE_4}
545 # Compilation rules to generate .co from .cp or .cpo from .cpp
546 # The config tool slickly changes the last source filename char to 'o'
547 # for the object filename.
548 P_RULE_1A=$(_v)${KC++} -o $@ -c ${CXXFLAGS} ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CXXWARNFLAGS}} -MD ${$@_CFLAGS_ADD} ${$@_CXXWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS}
550 P_RULE_2=$(_v)sed 's/.c.o: /.cpo: /' $(@:.cpo=.d) > $(@:.cpo=.d~) && mv $(@:.cpo=.d~) $(@:.cpo=.d)
551 P_RULE_3=@echo C++ $@
552 ifeq ($(BUILD_MACHO_OBJ),0)
554 else ifeq ($(BUILD_STABS),1)
557 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;
563 do_build_all: $(COMP_FILES) $(COMP_COBJ_FILES) $(COMP_SOBJ_FILES) $(COMPONENT_IMAGE_FILE)
566 # mach_kernel building rules
568 ifeq ($(COMPONENT), .)
569 do_build_all: do_build_mach_kernel
571 STATIC_KMODS = $(SRCROOT)/kmods.a
573 do_build_mach_kernel: $(TARGET)/kgmacros $(TARGET)/mach_kernel
575 $(TARGET)/mach_kernel: $(addprefix $(TARGET)/,$(foreach component,$(COMPONENT_LIST), $(addprefix $(component)/$(firstword $($(addsuffix _KERNEL_CONFIG, $(shell printf $(component) | tr a-z A-Z))) $(KERNEL_CONFIG))/, $(addsuffix .filelist, $(component))))) lastkernelconstructor.o
576 $(_v)${MAKE} version.o
577 $(_v)${MAKE} build_mach_kernel_exports
578 @echo LD mach_kernel.sys
579 $(_v)$(CAT) $(addprefix $(TARGET)/,$(foreach component,$(COMPONENT_LIST), $(addprefix $(component)/$(firstword $($(addsuffix _KERNEL_CONFIG, $(shell printf $(component) | tr a-z A-Z))) $(KERNEL_CONFIG))/, $(addsuffix .filelist, $(component))))) < /dev/null > link.filelist
580 $(_v)$(LD) $(LDFLAGS_KERNEL) -filelist link.filelist version.o lastkernelconstructor.o `if [ -e $(STATIC_KMODS) ]; then echo $(STATIC_KMODS); fi` \
581 -o $(TARGET)/mach_kernel.sys $(LD_KERNEL_LIBS)
582 $(_v)if [ $(BUILD_DWARF) -eq 1 ]; then \
583 echo DSYMUTIL mach_kernel.sys; \
584 $(DSYMUTIL) $(DSYMUTIL_FLAGS) $(TARGET)/mach_kernel.sys -o $(TARGET)/mach_kernel.sys.dSYM > /dev/null; \
585 $(INSTALL) $(INSTALL_FLAGS) $(SRCROOT)/kgmacros $(TARGET)/mach_kernel.sys.dSYM/$(DSYMRESDIR)/kgmacros; \
587 $(_v)if [ $(MACHINE_CONFIG) != DEFAULT ] ; then \
588 kernel_file_name=mach.`printf "%s" "$(KERNEL_CONFIG)" | $(TR) A-Z a-z`.`printf "%s" "$(MACHINE_CONFIG)" | $(TR) A-Z a-z`; \
589 echo kernel_file_name $${kernel_file_name}; \
590 [ -h ${OBJROOT}/$${kernel_file_name} ] || $(LN) $(TARGET)/mach_kernel ${OBJROOT}/$${kernel_file_name}; \
592 @echo STRIP mach_kernel
593 $(_v)$(STRIP) $(STRIP_FLAGS) $(TARGET)/mach_kernel.sys -o $(TARGET)/mach_kernel
594 $(_v)if [ $(BUILD_MACHO_OBJ) -eq 1 -a $(BUILD_DWARF) -eq 1 ]; then \
595 echo CTFMERGE mach_kernel; \
596 $(FIND) $(OBJPATH)/ -name \*.ctf -size 0 \
597 -exec $(RM) -rf {} \; ; \
598 $(CTFMERGE) -l xnu -o $(TARGET)/mach_kernel \
599 -Z $(TARGET)/mach_kernel.ctfdata \
600 $(OBJPATH)/*/$(KERNEL_CONFIG)/*.*o.ctf || true; \
601 echo CTFINSERT mach_kernel; \
602 $(CTFINSERT) $(TARGET)/mach_kernel \
603 $($(addsuffix $(ARCH_CONFIG),ARCH_FLAGS_)) $(TARGET)/mach_kernel.ctfdata \
604 -o $(TARGET)/mach_kernel || true; \
605 $(RM) -f $(TARGET)/mach_kernel.ctfdata > /dev/null || true; \
608 version.o: $(OBJPATH)/version.c
613 .PHONY: $(OBJPATH)/version.c
614 $(OBJPATH)/version.c: $(SRCROOT)/config/version.c $(NEWVERS) $(SRCROOT)/config/MasterVersion
616 $(_v)$(NEWVERS) $(OBJPATH)/version.c > /dev/null;
618 # "/libsa" needed because TARGET ends in "/."
619 lastkernelconstructor.o: COMP_OBJ_DIR=/libsa
620 lastkernelconstructor.o: $(SRCROOT)/libsa/lastkernelconstructor.c
621 $(_v)$(MKDIR) $(TARGET)$(COMP_OBJ_DIR)/$(KERNEL_CONFIG)
627 $(TARGET)/kgmacros: $(SRCROOT)/kgmacros
628 $(_v)$(INSTALL) $(INSTALL_FLAGS) $? $@
630 .PHONY: build_mach_kernel_exports
631 build_mach_kernel_exports:
633 MAKEFILES=${SOURCE}/config/Makefile \
634 SOURCE=${SOURCE}/config \
636 build_mach_kernel_exports;
638 endif # mach_kernel-specific build rules
641 # Kernel Install rules
643 INSTALL_KERNEL_FILE_FILES = $(addprefix $(DSTROOT)$(INSTALL_KERNEL_DIR), $(INSTALL_KERNEL_FILE))
645 force_kernel_file_install:
647 $(INSTALL_KERNEL_FILE_FILES): $(TARGET)/mach_kernel force_kernel_file_install
648 @echo Installing $< in $@;
649 $(_v)if [ ! -e $(DSTROOT)$(INSTALL_KERNEL_DIR) ]; then \
650 $(MKDIR) $(DSTROOT)$(INSTALL_KERNEL_DIR); \
652 if [ "`echo $(INSTALL_ARCHS_LC) | wc -w`" -eq 1 ]; then \
653 $(RM) $(RMFLAGS) $@; \
654 $(INSTALL) $(FILE_INSTALL_FLAGS) $< $@; \
656 if [ ! -e $@ ]; then \
657 printf "" >empty_file_$(notdir $@); \
658 lipo_arg="$(foreach lipo_arch,$(INSTALL_ARCHS),$(ARCH_FLAGS_$(lipo_arch)) empty_file_$(notdir $@))"; \
659 $(LIPO) $${lipo_arg} -create -output $@; \
660 $(RM) $(RMFLAGS) empty_file_$(notdir $@); \
662 $(LIPO) $@ -replace $(subst -arch,,$(ARCH_FLAGS_$(ARCH_CONFIG))) $< -o $@; \
665 INSTALL_KERNEL_FILESYS_FILES = $(addprefix $(SYMROOT)$(INSTALL_KERNEL_DIR), $(INSTALL_KERNEL_FILE))
667 force_kernel_filesys_install:
669 $(INSTALL_KERNEL_FILESYS_FILES): $(TARGET)/mach_kernel.sys force_kernel_filesys_install
670 @echo Installing $< in $@;
671 $(_v)if [ ! -e $(SYMROOT)$(INSTALL_KERNEL_DIR) ]; then \
672 $(MKDIR) $(SYMROOT)$(INSTALL_KERNEL_DIR); \
674 if [ "`echo $(INSTALL_ARCHS_LC) | wc -w`" -eq 1 ]; then \
675 $(RM) $(RMFLAGS) $@; \
676 $(INSTALL) $(INSTALL_FLAGS) $< $@; \
677 if [ $(BUILD_DWARF) -eq 1 ]; then \
679 $(MKDIR) -p -m 0755 $@.dSYM/$(DSYMBUILDDIR); \
680 $(INSTALL) $(INSTALL_FLAGS) \
681 $<.dSYM/$(DSYMBUILDDIR)/$(notdir $<) \
682 $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@); \
683 $(INSTALL) $(INSTALL_FLAGS) \
684 $<.dSYM/$(DSYMRESDIR)/kgmacros \
685 $@.dSYM/$(DSYMRESDIR)/kgmacros; \
688 if [ ! -e $@ ]; then \
689 printf "" >empty_filesys_$(notdir $@); \
690 lipo_arg="$(foreach lipo_arch,$(INSTALL_ARCHS),$(ARCH_FLAGS_$(lipo_arch)) empty_filesys_$(notdir $@))"; \
691 $(LIPO) $${lipo_arg} -create -output $@; \
692 $(RM) $(RMFLAGS) empty_filesys_$(notdir $@); \
694 $(LIPO) $@ -replace $(subst -arch,,$(ARCH_FLAGS_$(ARCH_CONFIG))) $< -o $@; \
696 if [ $(BUILD_DWARF) -eq 1 ]; then \
697 if [ ! -e $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@) ]; then \
698 printf "" >empty_filesys_$(notdir $@); \
699 lipo_arg="$(foreach lipo_arch,$(INSTALL_ARCHS),$(ARCH_FLAGS_$(lipo_arch)) empty_filesys_$(notdir $@))"; \
700 $(MKDIR) -p -m 0755 $@.dSYM/$(DSYMBUILDDIR); \
701 $(LIPO) $${lipo_arg} -create \
703 $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@); \
704 $(RM) $(RMFLAGS) empty_filesys_$(notdir $@); \
706 $(LIPO) $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@) \
707 -replace $(subst -arch,,$(ARCH_FLAGS_$(ARCH_CONFIG))) \
708 $<.dSYM/$(DSYMBUILDDIR)/$(notdir $<) \
709 -o $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@); \
710 $(INSTALL) $(INSTALL_FLAGS) \
711 $<.dSYM/$(DSYMRESDIR)/kgmacros \
712 $@.dSYM/$(DSYMRESDIR)/kgmacros; \
715 $(INSTALL) $(INSTALL_FLAGS) $(SOURCE)kgmacros $(SYMROOT)$(INSTALL_FILE_DIR)
718 @echo "[ $(SOURCE) ] make setup_build_install $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"
720 do_build_install: $(INSTALL_KERNEL_FILESYS_FILES) $(INSTALL_KERNEL_FILE_FILES)
721 @echo "[ $(SOURCE) ] make do_build_install $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"
723 INSTALL_MAN_FILES = $(addprefix $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/, $(INSTALL_MAN_LIST))
725 do_installman: $(INSTALL_MAN_FILES)
726 @echo "[ $(SOURCE) ] make do_installman"
727 $(_v)if [ -n "$(strip $(INSTALL_MAN_LIST))" ]; then \
728 man_dir=$(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR); \
729 if [ -d $$man_dir ]; then \
731 $(RM) $(RMFLAGS) $(INSTALL_MAN_LIST) $(INSTALL_MAN_LINKS)); \
733 $(MKDIR) $$man_dir; \
735 echo Installing $(INSTALL_MAN_LIST) in $$man_dir; \
736 $(INSTALL) $(INSTALL_FLAGS) $(INSTALL_MAN_LIST) $$man_dir; \
737 if [ -n "$(strip $(INSTALL_MAN_LINKS))" ]; then \
738 set `echo ${INSTALL_MAN_LINKS}`; \
742 1) echo "warn: empty INSTALL_MAN_LINKS: $$1"; break;; \
744 link_src=$$1; shift; link_dst=$$1; shift; \
745 echo "hard linking $${link_src} to $${link_dst}"; \
746 ln -f $${man_dir}/$${link_src} $${man_dir}/$${link_dst} ; \
751 $(INSTALL_MAN_FILES): $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/% : %
752 @true echo Installing $< in $(dir $@)
753 $(_v)$(MKDIR) $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR); \
754 $(RM) $(RMFLAGS) $@; \
755 $(INSTALL) $(INSTALL_FLAGS) $< $(dir $@);
757 ifeq ($(INCL_MAKEDEP), TRUE)