From 1883cb174619cfc90ca86da08598f470d3a11315 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 9 Jul 2010 01:25:36 +0200 Subject: fix make O=dir build Signed-off-by: Denys Vlasenko --- scripts/Makefile.build | 7 ++++++- scripts/gen_build_files.sh | 7 ++++++- scripts/test_make_O | 11 +++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100755 scripts/test_make_O diff --git a/scripts/Makefile.build b/scripts/Makefile.build index f343818b1..5685b5bcc 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -13,8 +13,13 @@ __build: include scripts/Kbuild.include # The filename Kbuild has precedence over Makefile +# bbox: we also try to include Kbuild file in obj tree first kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) -include $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, $(kbuild-dir)/Makefile) +include $(if $(wildcard $(src)/Kbuild), $(src)/Kbuild, \ + $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, \ + $(kbuild-dir)/Makefile \ + ) \ + ) include scripts/Makefile.lib diff --git a/scripts/gen_build_files.sh b/scripts/gen_build_files.sh index a98f509ce..968158758 100755 --- a/scripts/gen_build_files.sh +++ b/scripts/gen_build_files.sh @@ -4,6 +4,8 @@ test $# -ge 2 || { echo "Syntax: $0 SRCTREE OBJTREE"; exit 1; } # cd to objtree cd -- "$2" || { echo "Syntax: $0 SRCTREE OBJTREE"; exit 1; } +# In separate objtree build, include/ might not exist yet +mkdir include 2>/dev/null srctree="$1" @@ -46,10 +48,12 @@ if test x"$new" != x"$old"; then fi # (Re)generate */Kbuild and */Config.in -find -type d | while read -r d; do +{ cd -- "$srctree" && find -type d; } | while read -r d; do d="${d#./}" + src="$srctree/$d/Kbuild.src" dst="$d/Kbuild" + mkdir -p -- "$d" 2>/dev/null if test -f "$src"; then #echo " CHK $dst" @@ -69,6 +73,7 @@ find -type d | while read -r d; do src="$srctree/$d/Config.src" dst="$d/Config.in" + mkdir -p -- "$d" 2>/dev/null if test -f "$src"; then #echo " CHK $dst" diff --git a/scripts/test_make_O b/scripts/test_make_O new file mode 100755 index 000000000..a0ee6a868 --- /dev/null +++ b/scripts/test_make_O @@ -0,0 +1,11 @@ +#!/bin/sh + +b=`basename $PWD` +test "${b#busybox}" != "$b" || { echo "Must be run in busybox tree"; exit 1; } + +rm -rf ../testdir_make_O.$$ +mkdir ../testdir_make_O.$$ +odir=`cd ../testdir_make_O.$$ && pwd` +test -d "$odir" || exit 1 + +make O="$odir" $MAKEOPTS "$@" defconfig busybox 2>&1 | tee test_make_O.log -- cgit v1.2.3