Commit 886d86e87d991dabcffdb98f71496b59c203e9cd
Committed by
Tom Rini
1 parent
630d23455b
Exists in
master
and in
49 other branches
kbuild: support building signle targets
Import build rules of single targets from Linux 3.13. Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Showing 1 changed file with 52 additions and 0 deletions Side-by-side Diff
Makefile
... | ... | @@ -1267,6 +1267,58 @@ |
1267 | 1267 | endif #ifeq ($(config-targets),1) |
1268 | 1268 | endif #ifeq ($(mixed-targets),1) |
1269 | 1269 | |
1270 | +# Single targets | |
1271 | +# --------------------------------------------------------------------------- | |
1272 | +# Single targets are compatible with: | |
1273 | +# - build with mixed source and output | |
1274 | +# - build with separate output dir 'make O=...' | |
1275 | +# - external modules | |
1276 | +# | |
1277 | +# target-dir => where to store outputfile | |
1278 | +# build-dir => directory in kernel source tree to use | |
1279 | + | |
1280 | +ifeq ($(KBUILD_EXTMOD),) | |
1281 | + build-dir = $(patsubst %/,%,$(dir $@)) | |
1282 | + target-dir = $(dir $@) | |
1283 | +else | |
1284 | + zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@))) | |
1285 | + build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash)) | |
1286 | + target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@)) | |
1287 | +endif | |
1288 | + | |
1289 | +%.s: %.c prepare scripts FORCE | |
1290 | + $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) | |
1291 | +%.i: %.c prepare scripts FORCE | |
1292 | + $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) | |
1293 | +%.o: %.c prepare scripts FORCE | |
1294 | + $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) | |
1295 | +%.lst: %.c prepare scripts FORCE | |
1296 | + $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) | |
1297 | +%.s: %.S prepare scripts FORCE | |
1298 | + $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) | |
1299 | +%.o: %.S prepare scripts FORCE | |
1300 | + $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) | |
1301 | +%.symtypes: %.c prepare scripts FORCE | |
1302 | + $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) | |
1303 | + | |
1304 | +# Modules | |
1305 | +/: prepare scripts FORCE | |
1306 | + $(cmd_crmodverdir) | |
1307 | + $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ | |
1308 | + $(build)=$(build-dir) | |
1309 | +%/: prepare scripts FORCE | |
1310 | + $(cmd_crmodverdir) | |
1311 | + $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ | |
1312 | + $(build)=$(build-dir) | |
1313 | +%.ko: prepare scripts FORCE | |
1314 | + $(cmd_crmodverdir) | |
1315 | + $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ | |
1316 | + $(build)=$(build-dir) $(@:.ko=.o) | |
1317 | + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost | |
1318 | + | |
1319 | +# FIXME Should go into a make.lib or something | |
1320 | +# =========================================================================== | |
1321 | + | |
1270 | 1322 | quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs))) |
1271 | 1323 | cmd_rmdirs = rm -rf $(rm-dirs) |
1272 | 1324 |