diff mbox

[KBUILD] Put the CROSS_COMPILE and ARCH variables in the build directory makefile

Message ID 20120930232005.GB30637@obsidianresearch.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jason Gunthorpe Sept. 30, 2012, 11:20 p.m. UTC
To make cross building a little simpler. The usage with mini-config would
be something like:

$ mkdir build
$ make ARCH=arm CROSS_COMPILE=arm-v5te-linux-gnueabi- \
       KCONFIG_ALLCONFIG=mini.config O=build allnoconfig
$ make -C build/

After configuring subsequent builds do not need to specify the cross
options.

Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
---
 scripts/mkmakefile |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

Comments

Michal Marek Oct. 30, 2012, 1:46 p.m. UTC | #1
On 1.10.2012 01:20, Jason Gunthorpe wrote:
> To make cross building a little simpler. The usage with mini-config would
> be something like:
> 
> $ mkdir build
> $ make ARCH=arm CROSS_COMPILE=arm-v5te-linux-gnueabi- \
>        KCONFIG_ALLCONFIG=mini.config O=build allnoconfig
> $ make -C build/

Are you sure this is not going to suffer from the same issues as
5755433? See

commit 2331d1a6cd3d6e580bc88b9a160066d9e1177fe1
Author: Sam Ravnborg <sam@ravnborg.org>
Date:   Sun Oct 11 23:22:58 2009 +0200

    kbuild: revert "save ARCH & CROSS_COMPILE ..."

    Revert commit 575543347b5baed0ca927cb90ba8807396fe9cc9

    It caused following issues:

    - On architectures where ARCH= setting is used to select between
      32 and 64 bit this was no longer possible without "make mrproper"
    - If ARCH was changed then kbuild refused to run "make mrproper"
      because ARCH had changed
    - When CROSS_COMPILE was changed people were asked to run "make
mrproper"
      but kbuild refused to run "make mrproper" because CROSS_COMPILE
changed.
    - Spaces in CROSS_COMPILE was not 'supported'
    - If an non-existing ARCH= was used kbuild could get stuck

    Lessons learned:
    . Despite being simple and straghtforward people uses very different
      approaches when building the kernel.

    . CROSS_COMPILE is sometimes used for ccache despite cache being
      only a CC frontend so one would have expected CC to be
      used for this purpose.

    . And obviously this was not tested widely enough.

Michal
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jason Gunthorpe Oct. 30, 2012, 3:19 p.m. UTC | #2
On Tue, Oct 30, 2012 at 02:46:19PM +0100, Michal Marek wrote:
> On 1.10.2012 01:20, Jason Gunthorpe wrote:
> > To make cross building a little simpler. The usage with mini-config would
> > be something like:
> > 
> > $ mkdir build
> > $ make ARCH=arm CROSS_COMPILE=arm-v5te-linux-gnueabi- \
> >        KCONFIG_ALLCONFIG=mini.config O=build allnoconfig
> > $ make -C build/
> 
> Are you sure this is not going to suffer from the same issues as
> 5755433? See

Thanks for this link, this is the first time I've seen that, so no :)

The approaches are different, my version that uses mkmakefile probably
avoids some problems (like the quoting issue) but I'm not sure about
mrproper. I've never seen mrproper complain, but I've always used this
patch with O=..

Let me review this information and get back to you.

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Michal Marek Oct. 30, 2012, 3:28 p.m. UTC | #3
On 30.10.2012 16:19, Jason Gunthorpe wrote:
> On Tue, Oct 30, 2012 at 02:46:19PM +0100, Michal Marek wrote:
>> Are you sure this is not going to suffer from the same issues as
>> 5755433? See
> 
> Thanks for this link, this is the first time I've seen that, so no :)
> 
> The approaches are different, my version that uses mkmakefile probably
> avoids some problems (like the quoting issue) but I'm not sure about
> mrproper. I've never seen mrproper complain, but I've always used this
> patch with O=..
> 
> Let me review this information and get back to you.

Good luck :). BTW, here is what people reported about Sam's approach in
2009: http://lkml.indiana.edu/hypermail/linux/kernel/0910.1/index.html#00505

Michal
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/scripts/mkmakefile b/scripts/mkmakefile
index 0cc0442..7cdc3fb 100644
--- a/scripts/mkmakefile
+++ b/scripts/mkmakefile
@@ -56,4 +56,9 @@  Makefile:;
 
 %/: all
 	@:
+
+CROSS_COMPILE?=${CROSS_COMPILE:-}
+${CROSS_COMPILE:+export CROSS_COMPILE}
+ARCH?=${ARCH:-}
+${ARCH:+export ARCH}
 EOF