fix make O=dir build

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2010-07-09 01:25:36 +02:00
parent 1f0ab1dc64
commit 1883cb1746
3 changed files with 23 additions and 2 deletions

View File

@ -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

View File

@ -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"

11
scripts/test_make_O Executable file
View File

@ -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