1#
2# Generic Install rules
3#
4
5ifndef INSTALL_MI_LCL_LIST
6    INSTALL_MI_LCL_LIST = $(INSTALL_MI_LIST)
7endif
8
9ifndef INSTALL_MI_LCL_GEN_LIST
10    INSTALL_MI_LCL_GEN_LIST = $(INSTALL_MI_GEN_LIST)
11endif
12
13ifndef INSTALL_MD_LCL_LIST
14    INSTALL_MD_LCL_LIST = $(INSTALL_MD_LIST)
15endif
16
17ifndef INSTALL_MD_LCL_GEN_LIST
18    INSTALL_MD_LCL_GEN_LIST = $(INSTALL_MD_GEN_LIST)
19endif
20
21ifndef INSTALL_KF_MI_LCL_LIST
22    INSTALL_KF_MI_LCL_LIST = $(EXPORT_MI_LIST)
23endif
24
25ifndef INSTALL_KF_MI_LCL_GEN_LIST
26    INSTALL_KF_MI_LCL_GEN_LIST = $(EXPORT_MI_GEN_LIST)
27endif
28
29ifndef INSTALL_KF_MD_LCL_LIST
30    INSTALL_KF_MD_LCL_LIST = $(EXPORT_MD_LIST)
31endif
32
33ifndef INSTALL_KF_MD_LCL_GEN_LIST
34    INSTALL_KF_MD_LCL_GEN_LIST = $(EXPORT_MD_GEN_LIST)
35endif
36
37ifndef INSTALL_KF_MI_LIST
38    INSTALL_KF_MI_LIST = $(EXPORT_MI_LIST)
39endif
40
41ifndef INSTALL_KF_MI_GEN_LIST
42    INSTALL_KF_MI_GEN_LIST = $(EXPORT_MI_GEN_LIST)
43endif
44
45ifndef INSTALL_KF_MD_LIST
46    INSTALL_KF_MD_LIST = $(EXPORT_MD_LIST)
47endif
48
49ifndef INSTALL_KF_MD_GEN_LIST
50    INSTALL_KF_MD_GEN_LIST = $(EXPORT_MD_GEN_LIST)
51endif
52
53ifneq ($(MACHINE_CONFIG), DEFAULT)
54	export OBJPATH = $(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)_$(MACHINE_CONFIG)
55else
56	export OBJPATH = $(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)
57endif
58
59INSTALL_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
81INSTALL_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
103INSTALL_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
125INSTALL_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
147INSTALL_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
169INSTALL_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
191INSTALL_MD_LCL_FILES = $(addprefix $(SOURCE), $(INSTALL_MD_LCL_LIST))
192INSTALL_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
214INSTALL_KF_MD_LCL_FILES = $(addprefix $(SOURCE), $(INSTALL_KF_MD_LCL_LIST))
215INSTALL_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
237setup_installhdrs_mi: 
238
239do_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
332setup_installhdrs_md:
333
334do_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#
431ifeq ($(INCR_EXPORTHDRS), TRUE)
432
433EXPORT_MI_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_LIST))
434EXPORT_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
442EXPORT_MD_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_LIST))
443EXPORT_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
450setup_exporthdrs_mi:
451
452do_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
455setup_exporthdrs_md:
456
457do_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
460else
461
462EXPORT_MI_INC_FILES = $(addprefix $(SOURCE), $(EXPORT_MI_LIST))
463EXPORT_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
471EXPORT_MD_INC_FILES = $(addprefix $(SOURCE), $(EXPORT_MD_LIST))
472EXPORT_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
479setup_exporthdrs_mi:
480
481do_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
492setup_exporthdrs_md:
493
494do_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#
507endif
508#
509# Generic Compilation rules
510#
511
512#
513# Compilation rules to generate .o from .s
514#
515
516S_RULE_1A=$(_v)${S_KCC} -c ${SFLAGS} -MD -DASSEMBLER ${$@_SFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS}
517S_RULE_1B=$*.s
518S_RULE_2=@echo AS $@
519S_RULE_3=
520
521#
522# Compilation rules to generate .o from .c for normal files
523# 
524C_RULE_1A=$(_v)${KCC} -c ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CWARNFLAGS}} -MD ${$@_CFLAGS_ADD} ${$@_CWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS} 
525C_RULE_1B=$*.c
526C_RULE_2=@echo CC $@
527ifeq ($(BUILD_MACHO_OBJ),0)
528C_RULE_3=
529else ifeq ($(BUILD_STABS),1)
530C_RULE_3=
531else ifeq ($(BUILD_DWARF),1)
532C_RULE_3=$(_v)${CTFCONVERT} -l xnu -v -o $@.ctf $@ > /dev/null && $(CTFSCRUB) `cat $(SRCROOT)/config/DtraceIgnored.symbols` $@.ctf || true;
533else
534C_RULE_3=
535endif
536C_RULE_4=
537
538UNAME := $(shell uname)
539ifeq ($(UNAME), Linux)
540C_RULE_3=
541endif
542
543ifeq ($(ARCH_CONFIG),ARM)
544ifeq ($(KERNEL_CONFIG),RELEASE)
545C_RULE_3=
546endif
547endif
548
549#
550# Compilation rules to generate .o from .c for driver files
551#
552C_RULE_1A_D=${C_RULE_1A}
553C_RULE_1B_D=${C_RULE_1B}
554C_RULE_2_D=${C_RULE_2}
555C_RULE_3_D=${C_RULE_3}
556C_RULE_4_D=${C_RULE_4}
557
558#
559# Compilation rules to generate .co from .cp or .cpo from .cpp
560#   The config tool slickly changes the last source filename char to 'o'
561#   for the object filename.
562P_RULE_1A=$(_v)${KC++} -o $@ -c ${CXXFLAGS} ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CXXWARNFLAGS}} -MD ${$@_CFLAGS_ADD} ${$@_CXXWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS} 
563P_RULE_1B=$(<F)
564P_RULE_2=$(_v)sed 's/.c.o: /.cpo: /' $(@:.cpo=.d) > $(@:.cpo=.d~) && mv $(@:.cpo=.d~) $(@:.cpo=.d)
565P_RULE_3=@echo C++ $@
566ifeq ($(BUILD_MACHO_OBJ),0)
567P_RULE_4=
568else ifeq ($(BUILD_STABS),1)
569P_RULE_4=
570else ifeq ($(BUILD_DWARF),1)
571P_RULE_4=$(_v)${CTFCONVERT} -l xnu -v -o $@.ctf $@ > /dev/null && $(CTFSCRUB) `cat $(SRCROOT)/config/DtraceIgnored.symbols` $@.ctf || true;
572else
573P_RULE_4=
574endif
575
576UNAME := $(shell uname)
577ifeq ($(UNAME), Linux)
578P_RULE_4=
579endif
580
581
582ifeq ($(ARCH_CONFIG),ARM)
583ifeq ($(KERNEL_CONFIG),RELEASE)
584P_RULE_4=
585endif
586endif
587
588setup_build_all: 
589
590do_build_all: $(COMP_FILES) $(COMP_COBJ_FILES) $(COMP_SOBJ_FILES) $(COMPONENT_IMAGE_FILE)
591
592#
593# mach_kernel building rules
594#
595ifeq ($(COMPONENT), .)
596do_build_all: do_build_mach_kernel
597
598STATIC_KMODS =  $(SRCROOT)/kmods.a
599
600do_build_mach_kernel: $(TARGET)/kgmacros $(TARGET)/mach_kernel
601
602$(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
603	$(_v)${MAKE} version.o
604	$(_v)${MAKE} build_mach_kernel_exports
605	@echo LD mach_kernel.sys
606	$(_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
607	$(_v)$(LD) $(LDFLAGS_KERNEL) -filelist link.filelist version.o lastkernelconstructor.o `if [ -e $(STATIC_KMODS) ]; then echo $(STATIC_KMODS); fi` \
608		-o $(TARGET)/mach_kernel.sys $(LD_KERNEL_LIBS)
609	$(_v)if [ $(UNAME) != Linux ]; then \
610	if [ $(BUILD_DWARF)  -eq  1 ]; then \
611		echo DSYMUTIL mach_kernel.sys; \
612		$(DSYMUTIL) $(DSYMUTIL_FLAGS) $(TARGET)/mach_kernel.sys -o $(TARGET)/mach_kernel.sys.dSYM > /dev/null; \
613		$(MKDIR) $(TARGET)/mach_kernel.sys.dSYM/$(DSYMRESDIR); \
614		$(INSTALL) $(INSTALL_FLAGS) $(SRCROOT)/kgmacros $(TARGET)/mach_kernel.sys.dSYM/$(DSYMRESDIR)/kgmacros; \
615	fi; \
616	fi;
617	$(_v)if [ $(MACHINE_CONFIG) != DEFAULT ] ; then     \
618		kernel_file_name=mach.`printf "%s" "$(KERNEL_CONFIG)" | $(TR) A-Z a-z`.`printf "%s" "$(MACHINE_CONFIG)" | $(TR) A-Z a-z`; \
619		echo  kernel_file_name $${kernel_file_name}; \
620		[ -h  ${OBJROOT}/$${kernel_file_name} ] || $(LN) $(TARGET)/mach_kernel ${OBJROOT}/$${kernel_file_name};	\
621	fi;
622	@echo STRIP mach_kernel
623	$(_v)$(STRIP) $(STRIP_FLAGS) $(TARGET)/mach_kernel.sys -o $(TARGET)/mach_kernel
624
625	$(_v)kernel_config=$(KERNEL_CONFIG);				   \
626	onearch=$(ARCH_CONFIG);								   \
627	skip_ctf=FALSE;										   \
628	if [ $${kernel_config} = RELEASE ]; then          	   \
629	    if [ $${onearch} = ARM ]; then	\
630            skip_ctf=TRUE;                                 \
631            echo "Skipping CTF processing"; 			   \
632		fi	;											   \
633    fi;													   \
634	if [ $(UNAME) = Linux ]; then \
635		echo "Skipping CTF processing."; \
636		skip_ctf=TRUE; \
637	fi; \
638    if [ $${skip_ctf} = FALSE ]; then					   \
639	if [ $(BUILD_MACHO_OBJ) -eq 1 -a $(BUILD_DWARF) -eq 1 ]; then	   \
640		echo CTFMERGE mach_kernel;   		     	\
641		$(FIND) $(OBJPATH)/ -name \*.ctf -size 0	\
642			-exec $(RM) -rf {} \;	;		\
643		$(FIND) $(OBJPATH)/ -name \*.ctf |		\
644			$(XARGS) $(CTFMERGE) -l xnu -o $(TARGET)/mach_kernel \
645			    -Z $(TARGET)/mach_kernel.ctfdata || true; 	\
646		echo CTFINSERT mach_kernel;   		     	\
647		$(CTFINSERT) $(TARGET)/mach_kernel		\
648			 $($(addsuffix $(ARCH_CONFIG),ARCH_FLAGS_)) $(TARGET)/mach_kernel.ctfdata \
649			 -o $(TARGET)/mach_kernel || true;	\
650			 $(RM) -f $(TARGET)/mach_kernel.ctfdata > /dev/null || true; \
651	fi;							\
652	fi;							\
653
654version.o: $(OBJPATH)/version.c
655	${C_RULE_1A}$<
656	${C_RULE_2}
657	${C_RULE_4}
658
659.PHONY: $(OBJPATH)/version.c
660$(OBJPATH)/version.c: $(SRCROOT)/config/version.c $(NEWVERS) $(SRCROOT)/config/MasterVersion
661	$(_v)$(CP) $< $@
662	$(_v)$(NEWVERS) $(OBJPATH)/version.c > /dev/null;
663
664# "/libsa" needed because TARGET ends in "/."
665lastkernelconstructor.o: COMP_OBJ_DIR=/libsa
666lastkernelconstructor.o: $(SRCROOT)/libsa/lastkernelconstructor.c
667	$(_v)$(MKDIR) $(TARGET)$(COMP_OBJ_DIR)/$(KERNEL_CONFIG)
668	${C_RULE_1A}$<
669	${C_RULE_2}
670	${C_RULE_3}
671	${C_RULE_4}
672
673$(TARGET)/kgmacros: $(SRCROOT)/kgmacros
674	$(_v)$(INSTALL) $(INSTALL_FLAGS) $? $@
675
676.PHONY: build_mach_kernel_exports
677build_mach_kernel_exports:
678	$(_v)${MAKE}					\
679		MAKEFILES=${SOURCE}/config/Makefile	\
680		SOURCE=${SOURCE}/config			\
681		RELATIVE_SOURCE_PATH=${RELATIVE_SOURCE_PATH}/config	\
682		TARGET=$${TARGET}			\
683	build_mach_kernel_exports;
684
685endif # mach_kernel-specific build rules
686
687#
688# Kernel Install rules
689#
690INSTALL_KERNEL_FILE_FILES = $(addprefix $(DSTROOT)$(INSTALL_KERNEL_DIR), $(INSTALL_KERNEL_FILE))
691
692force_kernel_file_install:
693
694$(INSTALL_KERNEL_FILE_FILES): $(TARGET)/mach_kernel force_kernel_file_install
695	@echo Installing $< in $@;
696	$(_v)if [ ! -e $(DSTROOT)$(INSTALL_KERNEL_DIR) ]; then		\
697		$(MKDIR) $(DSTROOT)$(INSTALL_KERNEL_DIR);		\
698	fi;								\
699	if [ "`echo $(INSTALL_ARCHS_LC) | wc -w`" -eq 1 ]; then		\
700		$(RM) $(RMFLAGS) $@;					\
701		$(INSTALL) $(FILE_INSTALL_FLAGS) $< $@;			\
702	else								\
703		if [ ! -e $@ ]; then					\
704			printf "" >empty_file_$(notdir $@);		\
705			lipo_arg="$(foreach lipo_arch,$(INSTALL_ARCHS),$(ARCH_FLAGS_$(lipo_arch)) empty_file_$(notdir $@))"; \
706			$(LIPO) $${lipo_arg} -create -output $@;	\
707			$(RM) $(RMFLAGS) empty_file_$(notdir $@);	\
708		fi;							\
709		$(LIPO) $@ -replace $(subst -arch,,$(ARCH_FLAGS_$(ARCH_CONFIG))) $< -o $@;	\
710	fi
711
712INSTALL_KERNEL_FILESYS_FILES = $(addprefix $(SYMROOT)$(INSTALL_KERNEL_DIR), $(INSTALL_KERNEL_FILE))
713ifeq ($(PLATFORM),iPhoneOS)
714INSTALL_KERNEL_FILESYS_FILES += $(addprefix $(DSTROOT)$(INSTALL_KERNEL_SYM_DIR), $(INSTALL_KERNEL_FILE))
715endif
716
717force_kernel_filesys_install:
718
719$(INSTALL_KERNEL_FILESYS_FILES): $(TARGET)/mach_kernel.sys force_kernel_filesys_install
720	@echo Installing $< in $@;
721ifeq ($(PLATFORM),iPhoneOS)
722	$(_v)if [ ! -e $(DSTROOT)$(INSTALL_KERNEL_SYM_DIR) ]; then	\
723		$(MKDIR) $(DSTROOT)$(INSTALL_KERNEL_SYM_DIR);		\
724	fi;
725endif
726	$(_v)if [ ! -e $(SYMROOT)$(INSTALL_KERNEL_DIR) ]; then	\
727		$(MKDIR) $(SYMROOT)$(INSTALL_KERNEL_DIR);		\
728	fi;							\
729	if [ "`echo $(INSTALL_ARCHS_LC) | wc -w`" -eq 1 ]; then	\
730		$(RM) $(RMFLAGS) $@;				\
731		$(INSTALL) $(INSTALL_FLAGS) $< $@;			\
732		if [ $(UNAME) != Linux ]; then				\
733		if [ $(BUILD_DWARF) -eq 1 ]; then			\
734			$(RM) -rf $@.dSYM;				\
735			$(MKDIR) -p -m 0755 $@.dSYM/$(DSYMBUILDDIR);	\
736			$(INSTALL) $(INSTALL_FLAGS)			\
737				$<.dSYM/$(DSYMBUILDDIR)/$(notdir $<)	\
738				$@.dSYM/$(DSYMBUILDDIR)/$(notdir $@);	\
739			$(INSTALL) $(INSTALL_FLAGS)			\
740				$<.dSYM/$(DSYMRESDIR)/kgmacros		\
741				$@.dSYM/$(DSYMRESDIR)/kgmacros;		\
742		fi; fi;							\
743	else							\
744		if [ ! -e $@ ]; then				\
745			printf "" >empty_filesys_$(notdir $@);	\
746			lipo_arg="$(foreach lipo_arch,$(INSTALL_ARCHS),$(ARCH_FLAGS_$(lipo_arch)) empty_filesys_$(notdir $@))"; \
747			$(LIPO) $${lipo_arg} -create -output $@;	\
748			$(RM) $(RMFLAGS) empty_filesys_$(notdir $@);	\
749		fi;							\
750		$(LIPO) $@ -replace $(subst -arch,,$(ARCH_FLAGS_$(ARCH_CONFIG))) $< -o $@;	\
751									\
752		if [ $(BUILD_DWARF) -eq 1 ]; then			       \
753			if [ ! -e $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@) ]; then \
754				printf "" >empty_filesys_$(notdir $@);	       \
755				lipo_arg="$(foreach lipo_arch,$(INSTALL_ARCHS),$(ARCH_FLAGS_$(lipo_arch)) empty_filesys_$(notdir $@))"; \
756				$(MKDIR) -p -m 0755 $@.dSYM/$(DSYMBUILDDIR);   \
757				$(LIPO) $${lipo_arg} -create		       \
758					-output				       \
759					$@.dSYM/$(DSYMBUILDDIR)/$(notdir $@);  \
760				$(RM) $(RMFLAGS) empty_filesys_$(notdir $@);   \
761			fi;						       \
762			$(LIPO) $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@)	       \
763				-replace $(subst -arch,,$(ARCH_FLAGS_$(ARCH_CONFIG)))		       \
764				$<.dSYM/$(DSYMBUILDDIR)/$(notdir $<)	       \
765				-o $@.dSYM/$(DSYMBUILDDIR)/$(notdir $@);       \
766			$(INSTALL) $(INSTALL_FLAGS)			\
767				$<.dSYM/$(DSYMRESDIR)/kgmacros		\
768				$@.dSYM/$(DSYMRESDIR)/kgmacros;		\
769		fi;							       \
770	fi
771	$(INSTALL) $(INSTALL_FLAGS) $(SOURCE)kgmacros $(SYMROOT)$(INSTALL_FILE_DIR)
772
773setup_build_install:
774	@echo "[ $(SOURCE) ] make setup_build_install $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"
775
776do_build_install: $(INSTALL_KERNEL_FILESYS_FILES) $(INSTALL_KERNEL_FILE_FILES)
777	@echo "[ $(SOURCE) ] make do_build_install $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"
778
779INSTALL_MAN_FILES = $(addprefix $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/, $(INSTALL_MAN_LIST))
780
781do_installman: $(INSTALL_MAN_FILES)
782	@echo "[ $(SOURCE) ] make do_installman"
783	$(_v)if [ -n "$(strip $(INSTALL_MAN_LIST))" ]; then \
784		man_dir=$(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR); \
785		if [ -d $$man_dir ]; then       \
786			( cd $$man_dir;   \
787			$(RM) $(RMFLAGS) $(INSTALL_MAN_LIST) $(INSTALL_MAN_LINKS)); \
788		else                    \
789			$(MKDIR) $$man_dir;     \
790		fi;                             \
791		echo Installing $(INSTALL_MAN_LIST) in $$man_dir;	\
792		$(INSTALL) $(INSTALL_FLAGS) $(INSTALL_MAN_LIST) $$man_dir;	\
793		if [ -n "$(strip $(INSTALL_MAN_LINKS))" ]; then \
794			set `echo ${INSTALL_MAN_LINKS}`; \
795			while : ; do \
796				case $$# in \
797					0) break;; \
798					1) echo "warn: empty INSTALL_MAN_LINKS: $$1"; break;; \
799				esac; \
800				link_src=$$1; shift; link_dst=$$1; shift; \
801				echo "hard linking $${link_src} to $${link_dst}"; \
802				ln -f $${man_dir}/$${link_src} $${man_dir}/$${link_dst} ; \
803			done; \
804		fi; \
805	fi
806
807$(INSTALL_MAN_FILES): $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/% : %
808	@true echo Installing $< in $(dir $@)
809	$(_v)$(MKDIR) $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR);       \
810	$(RM) $(RMFLAGS) $@;                                    \
811	$(INSTALL) $(INSTALL_FLAGS) $< $(dir $@);
812
813ifeq    ($(INCL_MAKEDEP), TRUE)
814-include Makedep
815endif
816
817help:
818	@cat README
819
820# vim: set ft=make:
821