Skip to contentSkip to conversation

SPL: Makefile: Build a separate autoconf.mk for SPL

PATCH New ying.zhang at freescale.com 5 participants 9 messages Aug 19, 2013 – Aug 20, 2013 Kbuild

lore
Share & tools
lore
#0 lore raw

PATCH v5 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 v4:
- No change.
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
index d545d30..75df06a 100644
@@ -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
index 3e84f36..54e99f4 100644
@@ -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
index 6e5299b..43db01f 100644
@@ -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
#1 lore raw

PATCH v5 1/1 SPL: Makefile: Build a separate autoconf.mk for SPL

Quoted 1 line · ying.zhang at freescale.com

From: Ying Zhang <[email protected]>

No. You added one line AFAICT. Preserve the original author here.

Quoted 13 lines

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.

Quoted 7 lines

---
Change from v4:
- No change.
Change from v3:
- No change.

Surely there was *some* change or you wouldn't have reposted...

-Scott

#2 lore raw

PATCH v5 1/1 SPL: Makefile: Build a separate autoconf.mk for SPL

Quoted 4 lines · Scott Wood
Quoted 1 line · ying.zhang at freescale.com

From: Ying Zhang <[email protected]>

No. You added one line AFAICT. Preserve the original author here.

Indeed.

Quoted 21 lines
Quoted 13 lines

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.

Quoted 7 lines

---
Change from v4:
- No change.
Change from v3:
- No change.

Quoted 1 line

Surely there was *some* change or you wouldn't have reposted...

v4 was adding Joel's S-o-b line back to the changelog.

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/20130819/544098fe/attachment.pgp>
#3 lore raw

PATCH v5 1/1 SPL: Makefile: Build a separate autoconf.mk for SPL

Quoted 8 lines · Tom Rini
Quoted 4 lines · Scott Wood
Quoted 1 line · ying.zhang at freescale.com

From: Ying Zhang <[email protected]>

No. You added one line AFAICT. Preserve the original author here.

Indeed.

Do we need Ying to send a new version? We can reset the author to Joe when applying this patch.

Quoted 21 lines
Quoted 21 lines
Quoted 20 lines

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 v4:
- No change.
Change from v3:
- No change.

Quoted 4 lines
Quoted 1 line

Surely there was *some* change or you wouldn't have reposted...

v4 was adding Joel's S-o-b line back to the changelog.

I tried to run MAKEALL for arm and powerpc. Powerpc all passed but I am having errors for arm, before applying this patch. I am using Linaro's gcc 4.8.2 for arm. Should I use a different toolchain? I am not used to work on arm platforms.

York

#4 lore raw

PATCH v5 1/1 SPL: Makefile: Build a separate autoconf.mk for SPL

Quoted 36 lines · York Sun
Quoted 8 lines · Tom Rini
Quoted 4 lines · Scott Wood
Quoted 1 line · ying.zhang at freescale.com

From: Ying Zhang <[email protected]>

No. You added one line AFAICT. Preserve the original author here.

Indeed.

Do we need Ying to send a new version? We can reset the author to Joe when applying this patch.

Quoted 23 lines
Quoted 22 lines
Quoted 13 lines

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.

Quoted 7 lines

---
Change from v4:
- No change.
Change from v3:
- No change.

Surely there was *some* change or you wouldn't have reposted...

Quoted 8 lines
Quoted 2 lines

v4 was adding Joel's S-o-b line back to the changelog.

I tried to run MAKEALL for arm and powerpc. Powerpc all passed but I am having errors for arm, before applying this patch. I am using Linaro's gcc 4.8.2 for arm. Should I use a different toolchain? I am not used to work on arm platforms.

That's expected as the Linaro toolchain isn't good for all ARMs. I'll pass this through some testing locally as well.

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/20130819/de2320a6/attachment.pgp>
#5 lore raw

PATCH v5 1/1 SPL: Makefile: Build a separate autoconf.mk for SPL

Quoted 41 lines · Tom Rini
Quoted 40 lines · York Sun
Quoted 8 lines · Tom Rini
Quoted 4 lines · Scott Wood
Quoted 1 line · ying.zhang at freescale.com

From: Ying Zhang <[email protected]>

No. You added one line AFAICT. Preserve the original author here.

Indeed.

Do we need Ying to send a new version? We can reset the author to Joe when applying this patch.

Quoted 25 lines
Quoted 21 lines
Quoted 13 lines

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.

Quoted 7 lines

---
Change from v4:
- No change.
Change from v3:
- No change.

Quoted 1 line

Surely there was *some* change or you wouldn't have reposted...

v4 was adding Joel's S-o-b line back to the changelog.

Quoted 7 lines
Quoted 4 lines

I tried to run MAKEALL for arm and powerpc. Powerpc all passed but I am having errors for arm, before applying this patch. I am using Linaro's gcc 4.8.2 for arm. Should I use a different toolchain? I am not used to work on arm platforms.

That's expected as the Linaro toolchain isn't good for all ARMs. I'll pass this through some testing locally as well.

Any suggestion on cross toolchain for ARM. I want to extend my MAKEALL coverage, but don't want to deal with too many varieties of toolchains.

York

#6 lore raw

PATCH v5 1/1 SPL: Makefile: Build a separate autoconf.mk for SPL

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 53 lines · York Sun
Quoted 52 lines · Tom Rini
Quoted 50 lines · York Sun
Quoted 10 lines · Tom Rini
Quoted 6 lines · Scott Wood
Quoted 1 line · ying.zhang at freescale.com

From: Ying Zhang <[email protected]>

No. You added one line AFAICT. Preserve the original author here.

Indeed.

Do we need Ying to send a new version? We can reset the author to Joe when applying this patch.

Quoted 24 lines
Quoted 24 lines
Quoted 23 lines

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 v4: - No change. Change from v3: - No change.

Quoted 5 lines
Quoted 2 lines

Surely there was *some* change or you wouldn't have reposted...

v4 was adding Joel's S-o-b line back to the changelog.

I tried to run MAKEALL for arm and powerpc. Powerpc all passed but I am having errors for arm, before applying this patch. I am using Linaro's gcc 4.8.2 for arm. Should I use a different toolchain? I am not used to work on arm platforms.

Quoted 6 lines
Quoted 2 lines

That's expected as the Linaro toolchain isn't good for all ARMs. I'll pass this through some testing locally as well.

Any suggestion on cross toolchain for ARM. I want to extend my MAKEALL coverage, but don't want to deal with too many varieties of toolchains.

ELDK 5.2.x works for all ARM (and MIPS).

- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJSE2g7AAoJENk4IS6UOR1WMUIP/0adzkiNhsKBhjn39KNCpOSB mwlRxpPMlDzzlUPWJCcZ+sWuxqRw7tpdq309x6G4ojUU4mXdZGv5kcs22kEJoTze 48GxFJQG30AMk0smgoAS9DgBoHS2UYPTQtnza77HBM9LlvOKzq0X9/xqJBn1jFOK CJ+BPNh6HbAN3plwd0Oj2QgBvzR0K6yYmsVAhIliDv6KBhLfWA6Rakj4NqSoO3n3 e3zd3v2PR7WGXS0wGmSlCx48ORiSTxuIRY4Y3dZPV0qaxoQ5KuJDw8ASuPmj2YGz zwSYrFTSbMVuIRB+pXtKRpxu2UjgKS/a0I074WM2ObMoNo00L5o3CWMBbQdllouL AHdASNbGIm7XWN9SI2lcvOIIKAizoELxnzvB9eETsrzUk5n7YYBeM6yyXeZcpZ6q hXPSRPyh9vae5rV5hbNs1ReBG+Dr73YtMFcUBUqbcyCHWFxe3O5CFjlPaKdwiQ1X eIeK+7p4YmCJJJAQy6Qq0RqUuNVPZn6EXUgbuizDRZgny7ssOHya8dQHfLU6+wP6 PcLvTh8ix1bTNKPXye/bzMBc0NrJDVwoa2RQqZBehnSZpTfpu/eHQaIFHJaBxDRl QQgKCwEkRvcmJsJTrGcrPI6G9h4a74kl7sKmGkhq6rq7qAz1zpm5tsPJ16s4RRwR GcBF/qLc6iUBntQmAtM9
=JXfU
-----END PGP SIGNATURE-----

#7 lore raw

PATCH v5 1/1 SPL: Makefile: Build a separate autoconf.mk for SPL

In reply to York Sun
Quoted 16 lines

-----Original Message-----
From: sun york-R58495
Sent: Tuesday, August 20, 2013 5:20 AM
To: Tom Rini
Cc: Wood Scott-B07421; Zhang Ying-B40530; Joel A Fernandes; u- boot at lists.denx.de; sun york-R58495; Xie Xiaobo-R63061; Zhang Ying-B40530
Subject: Re: [U-Boot] [PATCH v5] SPL: Makefile: Build a separate autoconf.mk for SPL

Quoted 4 lines · Tom Rini
Quoted 3 lines · Scott Wood
Quoted 1 line · ying.zhang at freescale.com

From: Ying Zhang <[email protected]>

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

No. You added one line AFAICT. Preserve the original author here.

Indeed.

Do we need Ying to send a new version? We can reset the author to Joe when applying this patch.

Whether we according to what York said, reset the author to Joe when applying?

#8 lore raw

PATCH v5 1/1 SPL: Makefile: Build a separate autoconf.mk for SPL

In reply to ying.zhang at freescale.com
Quoted 15 lines · ying.zhang at freescale.com

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.

Quoted 5 lines

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.

After fixing up the author and changing Joel's email to his current one, applied to u-boot/master (and boot tested on am335x_evm_usbspl), thanks!

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/20130820/5b32aa54/attachment.pgp>