Don't add symlink in srctree when using an objtree
authorLoïc Minier <loic.minier@linaro.org>
Wed, 19 Jan 2011 12:16:29 +0000 (13:16 +0100)
committerWolfgang Denk <wd@denx.de>
Fri, 21 Jan 2011 07:53:40 +0000 (08:53 +0100)
When building with srctree != objtree, the build creates arch/soc/cpu
specific symlinks in the source tree.  This means that the same source
tree can't be used for multiple builds at the same time.  Also, these
symlinks in the source tree are only cleaned up if one passes the same
O= to distclean.

When srctree != objtree, mkconfig creates an $objtree/include2 directory
in the objtree to host the asm -> arch/$arch/include/asm symlink so that
"#include <asm>" can be used.  But it also creates another identical
symlink in $objtree/include.

Then, mkconfig creates two symlinks:
$objtree/include/asm/arch -> arch/$arch/include/asm/arch-$cpu (or $soc)
$objtree/include/asm/proc -> arch/$arch/include/asm/proc-armv (on arm)
but because $objtree/include/asm points at $srctree already, the two
symlinks are created under $srctree.

To fix this, create a real $objtree/include/asm directory, instead of a
symlink.  Update cleanup code accordingly.

Signed-off-by: Loïc Minier <loic.minier@linaro.org>
Makefile
mkconfig

index 90550280bd454f5ea0156cfda461adbc6f72b207..7c02096f0a07c9f3f801dd8f7e30e22839cdca0f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1243,7 +1243,7 @@ clobber:  clean
        @rm -f $(obj)u-boot.imx
        @rm -f $(obj)tools/{env/crc32.c,inca-swap-bytes}
        @rm -f $(obj)arch/powerpc/cpu/mpc824x/bedbug_603e.c
-       @rm -f $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
+       @rm -fr $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
        @rm -fr $(obj)include/generated
        @[ ! -d $(obj)nand_spl ] || find $(obj)nand_spl -name "*" -type l -print | xargs rm -f
        @[ ! -d $(obj)onenand_ipl ] || find $(obj)onenand_ipl -name "*" -type l -print | xargs rm -f
index db6933669969530a3c3e7df95e3b0fa2d1236b4c..6ff533f339336f56243dfd634bc4216fa2dfc25f 100755 (executable)
--- a/mkconfig
+++ b/mkconfig
@@ -98,8 +98,7 @@ if [ "$SRCTREE" != "$OBJTREE" ] ; then
        ln -s ${SRCTREE}/arch/${arch}/include/asm asm
        LNPREFIX=${SRCTREE}/arch/${arch}/include/asm/
        cd ../include
-       rm -f asm
-       ln -s ${SRCTREE}/arch/${arch}/include/asm asm
+       mkdir -p asm
 else
        cd ./include
        rm -f asm