Skip to contentSkip to conversation

scripts/mkmakefile: dynamic determination of output directory

PATCH Applied Jan Beulich 2 participants 2 messages Jan 11, 2008 Kbuild

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 scripts/mkmakefile: dynamic determination of output directory

Rather than fixing the output directory in the generated Makefile, determine it from the placement of Makefile. This allows moving the build tree around or accessing it through different mount paths.

(The lastword definition is a compatibility one for make prior to 3.81; newer make will simply ignore it and use the [faster] built-in.)

---
 scripts/mkmakefile |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
scripts/mkmakefile +7 -3
@@ -25,8 +25,11 @@ cat << EOF > $2/Makefile
 VERSION = $3
 PATCHLEVEL = $4
 
-KERNELSRC    := $1
-KERNELOUTPUT := $2
+lastword = \$(word \$(words \$(1)),\$(1))
+makedir := \$(dir \$(call lastword,\$(MAKEFILE_LIST)))
+
+MAKEARGS := -C $1
+MAKEARGS += O=\$(if \$(patsubst /%,,\$(makedir)),\$(CURDIR)/)\$(patsubst %/,%,\$(makedir))
 
 MAKEFLAGS += --no-print-directory
 
@@ -35,10 +38,11 @@ MAKEFLAGS += --no-print-directory
 all	:= \$(filter-out all Makefile,\$(MAKECMDGOALS))
 
 all:
-	\$(MAKE) -C \$(KERNELSRC) O=\$(KERNELOUTPUT) \$(all)
+	\$(MAKE) \$(MAKEARGS) \$(all)
 
 Makefile:;
 
 \$(all) %/: all
 	@:
+
 EOF
Applied
#1 lore raw
Quoted 6 lines · Jan Beulich

Rather than fixing the output directory in the generated Makefile, determine it from the placement of Makefile. This allows moving the build tree around or accessing it through different mount paths.

(The lastword definition is a compatibility one for make prior to 3.81; newer make will simply ignore it and use the [faster] built-in.)

Thanks, applied.

Sam