scripts/mkmakefile: dynamic determination of output directory
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
Sam Ravnborg
AppliedQuoted 6 lines · Jan Beulich
Rather than fixing the output directory in the generated
Makefile, determine it from the placement ofMakefile. 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