]>
Commit | Line | Data |
---|---|---|
1 | # -*- mode: makefile;-*- | |
2 | # | |
3 | # Copyright (C) 1999-2012 Apple Inc. All rights reserved. | |
4 | # | |
5 | # MakeInc.rule defines the targets and rules for | |
6 | # leaf directories once MakeInc.dir has recursed | |
7 | # into them. "do_XXX" may be double-colon rules | |
8 | # to allow the Makefile in the source directory | |
9 | # to augment the actions that will be performed. | |
10 | # | |
11 | ||
12 | # | |
13 | # Generic Install rules | |
14 | # | |
15 | ||
16 | ifndef INSTALL_MI_LCL_LIST | |
17 | INSTALL_MI_LCL_LIST = $(INSTALL_MI_LIST) | |
18 | endif | |
19 | ||
20 | ifndef INSTALL_MI_LCL_GEN_LIST | |
21 | INSTALL_MI_LCL_GEN_LIST = $(INSTALL_MI_GEN_LIST) | |
22 | endif | |
23 | ||
24 | ifndef INSTALL_MD_LCL_LIST | |
25 | INSTALL_MD_LCL_LIST = $(INSTALL_MD_LIST) | |
26 | endif | |
27 | ||
28 | ifndef INSTALL_MD_LCL_GEN_LIST | |
29 | INSTALL_MD_LCL_GEN_LIST = $(INSTALL_MD_GEN_LIST) | |
30 | endif | |
31 | ||
32 | ifndef INSTALL_KF_MI_LCL_LIST | |
33 | INSTALL_KF_MI_LCL_LIST = $(EXPORT_MI_LIST) | |
34 | endif | |
35 | ||
36 | ifndef INSTALL_KF_MI_LCL_GEN_LIST | |
37 | INSTALL_KF_MI_LCL_GEN_LIST = $(EXPORT_MI_GEN_LIST) | |
38 | endif | |
39 | ||
40 | ifndef INSTALL_KF_MD_LCL_LIST | |
41 | INSTALL_KF_MD_LCL_LIST = $(EXPORT_MD_LIST) | |
42 | endif | |
43 | ||
44 | ifndef INSTALL_KF_MD_LCL_GEN_LIST | |
45 | INSTALL_KF_MD_LCL_GEN_LIST = $(EXPORT_MD_GEN_LIST) | |
46 | endif | |
47 | ||
48 | ifndef INSTALL_KF_MI_LIST | |
49 | INSTALL_KF_MI_LIST = $(EXPORT_MI_LIST) | |
50 | endif | |
51 | ||
52 | ifndef INSTALL_KF_MI_GEN_LIST | |
53 | INSTALL_KF_MI_GEN_LIST = $(EXPORT_MI_GEN_LIST) | |
54 | endif | |
55 | ||
56 | ifndef INSTALL_KF_MD_LIST | |
57 | INSTALL_KF_MD_LIST = $(EXPORT_MD_LIST) | |
58 | endif | |
59 | ||
60 | ifndef INSTALL_KF_MD_GEN_LIST | |
61 | INSTALL_KF_MD_GEN_LIST = $(EXPORT_MD_GEN_LIST) | |
62 | endif | |
63 | ||
64 | .PHONY: ALWAYS | |
65 | ||
66 | ALWAYS: | |
67 | ||
68 | # $(1) is the list of install paths | |
69 | # $(2) is "1" if it's a "GEN"-style rule that looks locally, or else $(SOURCE) | |
70 | # $(3) is the local temp directory for processing | |
71 | # $(4) is the unifdef flags | |
72 | # | |
73 | # $$$$$$$$ is a double-escaped "$$" to represent the current pid | |
74 | # of the shell process for creating uniquely named temporary files | |
75 | ||
76 | define INSTALLHDRS_RULE_template | |
77 | ||
78 | .PHONY: $(3)_MKDIR | |
79 | ||
80 | $(3)_MKDIR: | |
81 | $$(_v)$$(MKDIR) ./$(3) | |
82 | $$(_v)$$(MKDIR) $(dir $(firstword $(1))) | |
83 | ||
84 | # Rebuild if unifdef flags change | |
85 | $(1): $(3)/.UNIFDEF_FLAGS | |
86 | $(3)/.UNIFDEF_FLAGS: ALWAYS | $(3)_MKDIR | |
87 | $$(_v)$$(REPLACECONTENTS) $$@ $$(UNIFDEF) $(4) | |
88 | ||
89 | $(1): $(dir $(firstword $(1)))% : $(if $(2),%,$$(SOURCE)/%) | $(3)_MKDIR | |
90 | @echo INSTALLHDR $$* | |
91 | $$(_v)$$(UNIFDEF) $(4) $$< > ./$(3)/$$*.unifdef.$$$$$$$$; \ | |
92 | if [ $$$$? -eq 2 ]; then \ | |
93 | echo Parse failure for $$<; \ | |
94 | exit 1; \ | |
95 | fi; \ | |
96 | $$(DECOMMENT) ./$(3)/$$*.unifdef.$$$$$$$$ r > \ | |
97 | ./$(3)/$$*.strip.$$$$$$$$ || exit 1; \ | |
98 | if [ -s ./$(3)/$$*.strip.$$$$$$$$ ]; then \ | |
99 | $$(INSTALL) $$(INSTALL_FLAGS) ./$(3)/$$*.unifdef.$$$$$$$$ $$@ || exit 1; \ | |
100 | fi; \ | |
101 | $$(RM) ./$(3)/$$*.unifdef.$$$$$$$$ ./$(3)/$$*.strip.$$$$$$$$ | |
102 | endef | |
103 | ||
104 | # | |
105 | # Machine-independent (public) files | |
106 | # | |
107 | ||
108 | INSTALL_MI_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LIST)) | |
109 | INSTALL_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_GEN_LIST)) | |
110 | ||
111 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_FILES),,incmidir,$(SINCFRAME_UNIFDEF))) | |
112 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_GEN_FILES),1,incmigendir,$(SINCFRAME_UNIFDEF))) | |
113 | ||
114 | INSTALL_KF_MI_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LIST)) | |
115 | INSTALL_KF_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_GEN_LIST)) | |
116 | ||
117 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_FILES),,kincmidir,$(KINCFRAME_UNIFDEF))) | |
118 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_GEN_FILES),1,kincmigendir,$(KINCFRAME_UNIFDEF))) | |
119 | ||
120 | # | |
121 | # Machine-independent local (private) files | |
122 | # | |
123 | ||
124 | INSTALL_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LCL_LIST)) | |
125 | INSTALL_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LCL_GEN_LIST)) | |
126 | ||
127 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_FILES),,pincmidir,$(SPINCFRAME_UNIFDEF))) | |
128 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_GEN_FILES),1,pincmigendir,$(SPINCFRAME_UNIFDEF))) | |
129 | ||
130 | INSTALL_KF_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_LIST)) | |
131 | INSTALL_KF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_GEN_LIST)) | |
132 | ||
133 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_LCL_FILES),,kpincmidir,$(KPINCFRAME_UNIFDEF))) | |
134 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_LCL_GEN_FILES),1,kpincmigendir,$(KPINCFRAME_UNIFDEF))) | |
135 | ||
136 | # | |
137 | # Machine-dependent (public) files | |
138 | # | |
139 | ||
140 | INSTALL_MD_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_LIST)) | |
141 | INSTALL_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_GEN_LIST)) | |
142 | ||
143 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_FILES),,incdir,$(SINCFRAME_UNIFDEF))) | |
144 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_GEN_FILES),1,incgendir,$(SINCFRAME_UNIFDEF))) | |
145 | ||
146 | INSTALL_KF_MD_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LIST)) | |
147 | INSTALL_KF_MD_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_GEN_LIST)) | |
148 | ||
149 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_FILES),,kincdir,$(KINCFRAME_UNIFDEF))) | |
150 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_GEN_FILES),1,kincgendir,$(KINCFRAME_UNIFDEF))) | |
151 | ||
152 | # | |
153 | # Machine-dependent local (private) files | |
154 | # | |
155 | ||
156 | INSTALL_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_LCL_LIST)) | |
157 | INSTALL_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_LCL_GEN_LIST)) | |
158 | ||
159 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_FILES),,pincdir,$(SPINCFRAME_UNIFDEF))) | |
160 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_GEN_FILES),1,pincgendir,$(SPINCFRAME_UNIFDEF))) | |
161 | ||
162 | INSTALL_KF_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_LIST)) | |
163 | INSTALL_KF_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_GEN_LIST)) | |
164 | ||
165 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_LCL_FILES),,kpincdir,$(KPINCFRAME_UNIFDEF))) | |
166 | $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_LCL_GEN_FILES),1,kpincgendir,$(KPINCFRAME_UNIFDEF))) | |
167 | ||
168 | .PHONY: do_installhdrs_mi | |
169 | ||
170 | # Double-colon rule so that MakeInc.kernel can add custom behaviors | |
171 | do_installhdrs_mi:: $(INSTALL_MI_INC_FILES) $(INSTALL_MI_INC_GEN_FILES) $(INSTALL_KF_MI_FILES) $(INSTALL_KF_MI_GEN_FILES) \ | |
172 | $(INSTALL_MI_LCL_FILES) $(INSTALL_MI_LCL_GEN_FILES) $(INSTALL_KF_MI_LCL_FILES) $(INSTALL_KF_MI_LCL_GEN_FILES) | |
173 | @: | |
174 | ||
175 | .PHONY: do_installhdrs_md | |
176 | ||
177 | do_installhdrs_md: $(INSTALL_MD_INC_FILES) $(INSTALL_MD_INC_GEN_FILES) $(INSTALL_KF_MD_FILES) $(INSTALL_KF_MD_GEN_FILES) \ | |
178 | $(INSTALL_MD_LCL_FILES) $(INSTALL_MD_LCL_GEN_FILES) $(INSTALL_KF_MD_LCL_FILES) $(INSTALL_KF_MD_LCL_GEN_FILES) | |
179 | @: | |
180 | ||
181 | # | |
182 | # Generic Export rules | |
183 | # | |
184 | EXPORT_MI_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_LIST)) | |
185 | EXPORT_MI_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_GEN_LIST)) | |
186 | ||
187 | .PHONY: EXP_MI_INC_DIR | |
188 | ||
189 | EXP_MI_INC_DIR: | |
190 | $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR) | |
191 | ||
192 | $(EXPORT_MI_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : % | EXP_MI_INC_DIR | |
193 | $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@ | |
194 | ||
195 | $(EXPORT_MI_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : $(SOURCE)/% | EXP_MI_INC_DIR | |
196 | $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@ | |
197 | ||
198 | EXPORT_MD_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_LIST)) | |
199 | EXPORT_MD_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_GEN_LIST)) | |
200 | ||
201 | .PHONY: EXP_MD_INC_DIR | |
202 | ||
203 | EXP_MD_INC_DIR: | |
204 | $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR) | |
205 | ||
206 | $(EXPORT_MD_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : % | EXP_MD_INC_DIR | |
207 | $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@ | |
208 | ||
209 | $(EXPORT_MD_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : $(SOURCE)/% | EXP_MD_INC_DIR | |
210 | $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@ | |
211 | ||
212 | .PHONY: do_exporthdrs_mi | |
213 | ||
214 | do_exporthdrs_mi: $(EXPORT_MI_GEN_INC_FILES) $(EXPORT_MI_INC_FILES) | |
215 | @: | |
216 | ||
217 | .PHONY: do_exporthdrs_md | |
218 | ||
219 | do_exporthdrs_md: $(EXPORT_MD_GEN_INC_FILES) $(EXPORT_MD_INC_FILES) | |
220 | @: | |
221 | ||
222 | # | |
223 | # Generic Compilation rules | |
224 | # | |
225 | ||
226 | # | |
227 | # Compilation rules to generate .o from .s | |
228 | # | |
229 | ||
230 | S_RULE_0=@echo AS $@ | |
231 | S_RULE_1A=$(_v)${S_KCC} -c ${SFLAGS} -MD -MF $(@:o=d) -MP ${$@_SFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS} | |
232 | S_RULE_1B=$(<F) | |
233 | S_RULE_2= | |
234 | ||
235 | # | |
236 | # Compilation rules to generate .o from .c for normal files | |
237 | # | |
238 | C_RULE_0=@echo CC $@ | |
239 | C_RULE_1A=$(_v)${KCC} -c ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CWARNFLAGS}} -MD -MF $(@:o=d) -MP ${$@_CFLAGS_ADD} ${$@_CWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS} | |
240 | C_RULE_1B=$(<F) | |
241 | ifeq ($(BUILD_MACHO_OBJ),0) | |
242 | C_RULE_2= | |
243 | else ifeq ($(DO_CTFCONVERT),1) | |
244 | C_RULE_2=$(_v)if [ -z "${$@_SKIP_CTFCONVERT}" ]; then ${CTFCONVERT} -l xnu -v -o $@.ctf $@ > /dev/null || true; fi | |
245 | else | |
246 | C_RULE_2= | |
247 | endif | |
248 | ifeq ($(DO_CTFMACHO), 1) | |
249 | C_CTFRULE_1A=$(_v)${KCC} -o $@.non_lto -c ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CWARNFLAGS}} ${$@_CFLAGS_ADD} ${$@_CWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS} $(CFLAGS_NOLTO_FLAG) | |
250 | C_CTFRULE_1B=$(<F) | |
251 | C_CTFRULE_2=$(_v)if [ -z "${$@_SKIP_CTFCONVERT}" ]; then ${CTFCONVERT} -l xnu -v -o $@.non_lto.ctf $@.non_lto > /dev/null || true; fi | |
252 | else | |
253 | C_CTFRULE_1A=@true | |
254 | C_CTFRULE_1B= | |
255 | C_CTFRULE_2=@true | |
256 | endif | |
257 | ||
258 | # | |
259 | # Compilation rules to generate .o from .c for driver files | |
260 | # | |
261 | C_RULE_0_D=${C_RULE_0} | |
262 | C_RULE_1A_D=${C_RULE_1A} | |
263 | C_RULE_1B_D=${C_RULE_1B} | |
264 | C_RULE_2_D=${C_RULE_2} | |
265 | C_CTFRULE_1A_D=${C_CTFRULE_1A} | |
266 | C_CTFRULE_1B_D=${C_CTFRULE_1B} | |
267 | C_CTFRULE_2_D=${C_CTFRULE_2} | |
268 | ||
269 | # | |
270 | # Compilation rules to generate .co from .cp or .cpo from .cpp | |
271 | # The config tool slickly changes the last source filename char to 'o' | |
272 | # for the object filename. | |
273 | P_RULE_0=@echo C++ $@ | |
274 | P_RULE_1A=$(_v)${KC++} -o $@ -c ${CXXFLAGS} ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CXXWARNFLAGS}} -MD -MF $(@:o=d) -MP ${$@_CFLAGS_ADD} ${$@_CXXWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS} | |
275 | P_RULE_1B=$(<F) | |
276 | P_RULE_2= | |
277 | P_CTFRULE_1A=@true | |
278 | P_CTFRULE_1B= | |
279 | P_CTFRULE_2=@true | |
280 | ||
281 | ||
282 | .PHONY: do_build_all | |
283 | ||
284 | # Do-nothing rule, since not all levels of the recursive hierarchy might implement this | |
285 | # in their local Makefiles. Those that do will use a "::" rule to augment this. | |
286 | do_build_all:: | |
287 | @: | |
288 | ||
289 | .PHONY: do_build_install_primary | |
290 | ||
291 | # Do-nothing rule, since not all levels of the recursive hierarchy might implement this | |
292 | # in their local Makefiles. Those that do will use a "::" rule to augment this. | |
293 | do_build_install_primary:: | |
294 | @: | |
295 | ||
296 | .PHONY: do_build_install_non_primary | |
297 | ||
298 | # Do-nothing rule, since not all levels of the recursive hierarchy might implement this | |
299 | # in their local Makefiles. Those that do will use a "::" rule to augment this. | |
300 | do_build_install_non_primary:: | |
301 | @: | |
302 | ||
303 | INSTALL_MAN_FILES = $(addprefix $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/, $(INSTALL_MAN_LIST)) | |
304 | ||
305 | .PHONY: INSTALL_MAN_DIR | |
306 | ||
307 | INSTALL_MAN_DIR: | |
308 | $(_v)$(MKDIR) $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR) | |
309 | ||
310 | $(INSTALL_MAN_FILES): $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/% : % | INSTALL_MAN_DIR | |
311 | @echo MAN $* | |
312 | $(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@ | |
313 | ||
314 | define MAN_LINKS_RULE_template | |
315 | $$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(2): $$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(1) | |
316 | @echo MANLINK $(2) | |
317 | $(_v)ln -f $$< $$@ | |
318 | endef | |
319 | ||
320 | function_generate_man_links_rules = $(if $(word 1,$(1)),$(eval $(call MAN_LINKS_RULE_template,$(word 1,$(1)),$(word 2,$(1)))) $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/$(word 2,$(1)) $(call function_generate_man_links_rules,$(wordlist 3,$(words $(1)),$(1)))) | |
321 | ||
322 | INSTALL_MAN_FILES_LINKS = $(call function_generate_man_links_rules,$(INSTALL_MAN_LINKS)) | |
323 | ||
324 | .PHONY: do_installman | |
325 | ||
326 | do_installman: $(INSTALL_MAN_FILES) $(INSTALL_MAN_FILES_LINKS) | |
327 | @: | |
328 | ||
329 | .PHONY: do_textfiles_install | |
330 | ||
331 | # Do-nothing rule, since not all levels of the recursive hierarchy might implement this | |
332 | # in their local Makefiles. Those that do will use a "::" rule to augment this. | |
333 | do_textfiles_install:: do_installman | |
334 | @: | |
335 | ||
336 | .PHONY: do_build_setup | |
337 | ||
338 | # Do-nothing rule, since not all levels of the recursive hierarchy might implement this | |
339 | # in their local Makefiles. Those that do will use a "::" rule to augment this. | |
340 | do_build_setup:: | |
341 | @: | |
342 | ||
343 | .PHONY: do_config_all | |
344 | ||
345 | # Do-nothing rule, since not all levels of the recursive hierarchy might implement this | |
346 | # in their local Makefiles. Those that do will use a "::" rule to augment this. | |
347 | do_config_all:: | |
348 | @: | |
349 | ||
350 | .PHONY: do_config_install | |
351 | ||
352 | # Do-nothing rule, since not all levels of the recursive hierarchy might implement this | |
353 | # in their local Makefiles. Those that do will use a "::" rule to augment this. | |
354 | do_config_install:: | |
355 | @: | |
356 | ||
357 | # vim: set ft=make: |