SPL: Makefile: Build a separate autoconf.mk for SPL
PATCH v4 1/1 SPL: Makefile: Build a separate autoconf.mk for SPL
From: Ying Zhang <[email protected]>
SPL defines CONFIG_SPL_BUILD but this does not percolate to the autoconf.mk Makefile. As a result the build breaks when CONFIG_SPL_BUILD is used in the board-specific include header file. With this, there is a possibility of having a CONFIG option defined in the header file but not defined in the Makefile causing all kinds of build failure and problems.
It also messes things for up, for example, when one might want to undefine options to keep the SPL small and doesn't want to be stuck with the CONFIG options used for U-boot. Lastly, this also avoids defining special CONFIG_SPL_ variables for cases where some options are required in U-boot but not in SPL.
We add a spl-autoconf.mk rule that is generated for SPL with the CONFIG_SPL_BUILD flag and conditionally include it for SPL builds.
---
Change from v3:
- No change.
Change from v2:
- Fixed the reported build breakage of am335x_evm_usbspl. Change from v1:
- Fixed issue where builds in a different directory were failing.
Makefile | 19 +++++++++++++++++-- config.mk | 6 ++++++ spl/Makefile | 1 + 3 files changed, 24 insertions(+), 2 deletions(-)
Makefile +17 -2
@@ -613,6 +613,7 @@ updater: # Explicitly make _depend in subdirs containing multiple targets to prevent # parallel sub-makes creating .depend files simultaneously. depend dep: $(TIMESTAMP_FILE) $(VERSION_FILE) \ + $(obj)include/spl-autoconf.mk \ $(obj)include/autoconf.mk \ $(obj)include/generated/generic-asm-offsets.h \ $(obj)include/generated/asm-offsets.h
@@ -694,12 +695,23 @@ $(obj)include/autoconf.mk: $(obj)include/config.h sed -n -f tools/scripts/define2mk.sed > [email protected] && \ mv [email protected] $@ +# Auto-generate the spl-autoconf.mk file (which is included by all makefiles for SPL) +$(obj)include/spl-autoconf.mk: $(obj)include/config.h + @$(XECHO) Generating $@ ; \ + set -e ; \ + : Extract the config macros ; \ + $(CPP) $(CFLAGS) -DCONFIG_SPL_BUILD -DDO_DEPS_ONLY -dM include/common.h | \ + sed -n -f tools/scripts/define2mk.sed > [email protected] && \ + mv [email protected] $@ + $(obj)include/generated/generic-asm-offsets.h: $(obj)include/autoconf.mk.dep \ + $(obj)include/spl-autoconf.mk \ $(obj)lib/asm-offsets.s @$(XECHO) Generating $@ tools/scripts/make-asm-offsets $(obj)lib/asm-offsets.s $@ $(obj)lib/asm-offsets.s: $(obj)include/autoconf.mk.dep \ + $(obj)include/spl-autoconf.mk \ $(src)lib/asm-offsets.c @mkdir -p $(obj)lib $(CC) -DDO_DEPS_ONLY \
@@ -707,11 +719,13 @@ $(obj)lib/asm-offsets.s: $(obj)include/autoconf.mk.dep \ -o $@ $(src)lib/asm-offsets.c -c -S $(obj)include/generated/asm-offsets.h: $(obj)include/autoconf.mk.dep \ + $(obj)include/spl-autoconf.mk \ $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s @$(XECHO) Generating $@ tools/scripts/make-asm-offsets $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s $@ -$(obj)$(CPUDIR)/$(SOC)/asm-offsets.s: $(obj)include/autoconf.mk.dep +$(obj)$(CPUDIR)/$(SOC)/asm-offsets.s: $(obj)include/autoconf.mk.dep \ + $(obj)include/spl-autoconf.mk @mkdir -p $(obj)$(CPUDIR)/$(SOC) if [ -f $(src)$(CPUDIR)/$(SOC)/asm-offsets.c ];then \ $(CC) -DDO_DEPS_ONLY \
@@ -783,7 +797,8 @@ include/license.h: tools/bin2header COPYING unconfig: @rm -f $(obj)include/config.h $(obj)include/config.mk \ $(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \ - $(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep + $(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep \ + $(obj)include/spl-autoconf.mk %_config:: unconfig @$(MKCONFIG) -A $(@:_config=)
config.mk +6 -0
@@ -145,7 +145,13 @@ CHECK = sparse ######################################################################### # Load generated board configuration +ifeq ($(CONFIG_SPL_BUILD),y) +# Include SPL autoconf +sinclude $(OBJTREE)/include/spl-autoconf.mk +else +# Include normal autoconf sinclude $(OBJTREE)/include/autoconf.mk +endif sinclude $(OBJTREE)/include/config.mk # Some architecture config.mk files need to know what CPUDIR is set to,
spl/Makefile +1 -0
@@ -80,6 +80,7 @@ LIBS-$(CONFIG_SPL_POST_MEM_SUPPORT) += post/drivers/memory.o LIBS-$(CONFIG_SPL_NET_SUPPORT) += net/libnet.o LIBS-$(CONFIG_SPL_ETH_SUPPORT) += drivers/net/libnet.o LIBS-$(CONFIG_SPL_ETH_SUPPORT) += drivers/net/phy/libphy.o +LIBS-$(CONFIG_SPL_USBETH_SUPPORT) += drivers/net/phy/libphy.o LIBS-$(CONFIG_SPL_MUSB_NEW_SUPPORT) += drivers/usb/musb-new/libusb_musb-new.o LIBS-$(CONFIG_SPL_USBETH_SUPPORT) += drivers/usb/gadget/libusb_gadget.o
Signature · 1 line
1.7.0.4
PATCH v4 1/1 SPL: Makefile: Build a separate autoconf.mk for SPL
Quoted 12 lines · ying.zhang at freescale.com
From: Ying Zhang <[email protected]>
SPL defines
CONFIG_SPL_BUILDbut this does not percolate to the autoconf.mkMakefile. As a result the build breaks whenCONFIG_SPL_BUILDis used in the board-specific include header file. With this, there is a possibility of having a CONFIG option defined in the header file but not defined in theMakefilecausing all kinds of build failure and problems.It also messes things for up, for example, when one might want to undefine options to keep the SPL small and doesn't want to be stuck with the CONFIG options used for U-boot. Lastly, this also avoids defining special
CONFIG_SPL_variables for cases where some options are required in U-boot but not in SPL.
Quoted 4 lines
We add a spl-autoconf.mk rule that is generated for SPL with the
CONFIG_SPL_BUILDflag and conditionally include it for SPL builds.Signed-off-by Ying Zhang <[email protected]>
This patch changes Makefile and config.mk. I will need an ack from Tom before I can apply this patch to 85xx/master.
York
PATCH v4 1/1 SPL: Makefile: Build a separate autoconf.mk for SPL
In reply to ying.zhang at freescale.comQuoted 15 lines · ying.zhang at freescale.com
From: Ying Zhang <[email protected]>
SPL defines
CONFIG_SPL_BUILDbut this does not percolate to the autoconf.mkMakefile. As a result the build breaks whenCONFIG_SPL_BUILDis used in the board-specific include header file. With this, there is a possibility of having a CONFIG option defined in the header file but not defined in theMakefilecausing all kinds of build failure and problems.It also messes things for up, for example, when one might want to undefine options to keep the SPL small and doesn't want to be stuck with the CONFIG options used for U-boot. Lastly, this also avoids defining special
CONFIG_SPL_variables for cases where some options are required in U-boot but not in SPL.We add a spl-autoconf.mk rule that is generated for SPL with the
CONFIG_SPL_BUILDflag and conditionally include it for SPL builds.
Quoted 8 lines
Signed-off-by Ying Zhang <[email protected]>---
Change from v3:
- No change.
Change from v2:
- Fixed the reported build breakage ofam335x_evm_usbspl. Change from v1:
- Fixed issue where builds in a different directory were failing.
Uh, this is Joel's patch and you dropped his authorship when picking it up. I'm glad to see you picking it up and addressing the last of the issues I reported (right?), but you need to retain Joel's Author/SOB and add your own for any further changes you've made here. Thanks.
And please make sure a MAKEALL passes for both powerpc and arm.
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130816/22b97584/attachment.pgp>