Commit 886d86e87d991dabcffdb98f71496b59c203e9cd

Authored by Masahiro Yamada
Committed by Tom Rini
1 parent 630d23455b

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

... ... @@ -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