Jakub Czapiga has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/59843 )
Change subject: libpayload/Makefile: Improve object files list creation ......................................................................
libpayload/Makefile: Improve object files list creation
This patch ports some parts of main coreboot Makefile to the libpayload Makefile in order to improve object files creation.
Moreover, the coreboot source files are now accessible an will be correctly compiled under libpayload build directory.
Change-Id: If1280c0a3f7e99aad2ecf8a0379a98af31ccefc3 Signed-off-by: Jakub Czapiga jacz@semihalf.com --- M payloads/libpayload/Makefile 1 file changed, 20 insertions(+), 6 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/43/59843/1
diff --git a/payloads/libpayload/Makefile b/payloads/libpayload/Makefile index 1da8c64..d55b6d7 100644 --- a/payloads/libpayload/Makefile +++ b/payloads/libpayload/Makefile @@ -29,6 +29,10 @@ ## SUCH DAMAGE. ##
+ifneq ($(words $(CURDIR)),1) + $(error ERROR: Path to the main directory cannot contain spaces) +endif + ifeq ($(INNER_SCANBUILD),y) CC_real:=$(CC) endif @@ -40,6 +44,7 @@ export obj ?= build export objutil ?= $(obj)/util export objk := $(objutil)/lp_kconfig +export absobj := $(abspath $(obj))
export KCONFIG_AUTOHEADER := $(obj)/config.h export KCONFIG_AUTOCONFIG := $(obj)/auto.conf @@ -290,9 +295,11 @@ $(foreach item,$($(special)-y), $(call $(special)-handler,$(dir $(1)),$(item)))) \ $(foreach class,$(classes), \ $(eval $(class)-srcs+= \ + $$(subst $(absobj)/,$(obj)/, \ $$(subst $(top)/,, \ - $$(abspath $$(addprefix $(dir $(1)),$$($(class)-y)))))) \ - $(eval subdirs+=$$(subst $(CURDIR)/,,$$(abspath $$(addprefix $(dir $(1)),$$(subdirs-y))))) + $$(abspath $$(subst $(dir $(1))/,/,$$(addprefix $(dir $(1)),$$($(class)-y)))))))) \ + $(eval subdirs+=$$(subst $(CURDIR)/,,$$(wildcard $$(abspath $$(addprefix $(dir $(1)),$$(subdirs-y)))))) +
# For each path in $(subdirs) call includemakefiles # Repeat until subdirs is empty @@ -311,8 +318,15 @@ include $(TOPLEVEL)/tests/Makefile.inc endif
-src-to-obj=$(addsuffix .$(1).o, $(basename $(addprefix $(obj)/, $($(1)-srcs)))) -$(foreach class,$(classes),$(eval $(class)-objs:=$(call src-to-obj,$(class)))) +# Converts one or more source file paths to the corresponding build/ paths. +# $1 lib name +# $2 file path (list) +src-to-obj=\ + $(addsuffix .$(1).o,\ + $(basename \ + $(addprefix $(obj)/,\ + $(subst $(coreboottop)/,coreboot/,$(2))))) +$(foreach class,$(classes),$(eval $(class)-objs:=$(call src-to-obj,$(class),$($(class)-srcs))))
allsrcs:=$(foreach var, $(addsuffix -srcs,$(classes)), $($(var))) allobjs:=$(foreach var, $(addsuffix -objs,$(classes)), $($(var))) @@ -326,7 +340,7 @@ # $4 additional dependencies ifn$(EMPTY)def $(1)-objs_$(2)_template de$(EMPTY)fine $(1)-objs_$(2)_template -$(obj)/$$(1).$(1).o: $$(1).$(2) $(obj)/libpayload-config.h $(4) +$$(call src-to-obj,$(1), $$(1).$(2)): $$(1).$(2) $(obj)/libpayload-config.h $(4) @printf " CC $$$$(subst $$$$(obj)/,,$$$$(@))\n" $(CC) $(3) -MMD $$$$(CFLAGS) $(EXTRA_CFLAGS) -c -o $$$$@ $$$$< en$(EMPTY)def @@ -356,7 +370,7 @@ $(shell mkdir -p $(KCONFIG_SPLITCONFIG) $(obj) $(objk)/lxdialog $(additional-dirs) $(alldirs))
cscope: - cscope -bR + cscope -bR -s$(coreboottop)/src/commonlib/bsd
doxy: doxygen doxygen: