fix make O=dir build
No binary (build failed)
—
(log yok)
| @@ -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 | |
| @@ -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" | |
| @@ -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 |