[PATCH] out-of-tree builds: preserve ARCH and CROSS_COMPILE settings

From: Ralph Siemsen
Date: Mon Feb 07 2005 - 17:34:42 EST


[I am not subscribed, please CC: any replies]

When you build the 2.6 kernel outside of its source directory, using the O= option like so:

make -C linux-2.6.10 O=../builddir

this conveniently produces a top-level Makefile in "builddir" which can be used to update/clean/rebuild the tree with a simple "make". It also uses the ".config" file from "builddir", which makes it very convenient for managing multiple builds for different target systems.

However if you are cross-compiling, you must also set ARCH and CROSS_COMPILE variables as appropriate. Unfortunately these settings are not recorded in the generated Makefile in "builddir", so one cannot simply do "make" anymore.

The attached patch fixes the script that generates the Makefile, so as to pass ARCH and CROSS_COMPILE settings, only when they are defined. Otherwise behaviour is exactly as it was before.

Since the contents of "builddir" are specific to ARCH and CROSS_COMPILER I see no reason why the values should not become fixed in "builddir".

Signed-off-by: Ralph Siemsen <ralphs@xxxxxxxxxxxxx> diff -u mkmakefile
--- linux-2.6.10.orig/scripts/mkmakefile 27 Jan 2005 15:53:54 -0000
+++ linux-2.6.10/scripts/mkmakefile 7 Feb 2005 21:20:19 -0000
@@ -9,6 +9,8 @@
# $3 - version
# $4 - patchlevel

+test "$ARCH" != "" && ARCH="ARCH=$ARCH"
+test "$CROSS_COMPILE" != "" && CROSS="CROSS_COMPILE=$CROSS_COMPILE"

cat << EOF
# Automatically generated by $0: don't edit
@@ -22,10 +24,10 @@
MAKEFLAGS += --no-print-directory

all:
- \$(MAKE) -C \$(KERNELSRC) O=\$(KERNELOUTPUT)
+ \$(MAKE) $ARCH $CROSS -C \$(KERNELSRC) O=\$(KERNELOUTPUT)

%::
- \$(MAKE) -C \$(KERNELSRC) O=\$(KERNELOUTPUT) \$@
+ \$(MAKE) $ARCH $CROSS -C \$(KERNELSRC) O=\$(KERNELOUTPUT) \$@

EOF