From 2a691470345a0024dd7ffaf47ad3d0f5f4f41924 Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Mon, 25 Jul 2005 20:26:04 +0000 Subject: kbuild: fix make O=... kbuild failed to locate Kbuild.include. Teach kbuild how to find Kbuild files when using make O=... Signed-off-by: Sam Ravnborg --- --- scripts/Makefile.clean | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'scripts/Makefile.clean') diff --git a/scripts/Makefile.clean b/scripts/Makefile.clean index ff3e87dbf38..9c978b7bbdf 100644 --- a/scripts/Makefile.clean +++ b/scripts/Makefile.clean @@ -7,7 +7,9 @@ src := $(obj) .PHONY: __clean __clean: -include $(if $(wildcard $(obj)/Kbuild), $(obj)/Kbuild, $(obj)/Makefile) +# The filename Kbuild has precedence over Makefile +include $(if $(wildcard $(srctree)/$(src)/Kbuild), \ + $(srctree)/$(src)/Kbuild, $(srctree)/$(src)/Makefile) # Figure out what we need to build from the various variables # ========================================================================== -- cgit v1.2.3-18-g5258 From 2315c6e42278152360470124ce903ecb8c97270a Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Mon, 25 Jul 2005 22:41:12 +0000 Subject: kbuild: define clean before including kbuild file Defining clean before including the kbuild file give us knowledge when the kbuild file is included for cleaning. This is rarey usefull - but in a corner case in klibc this proved necessary. Signed-off-by: Sam Ravnborg --- --- scripts/Makefile.clean | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'scripts/Makefile.clean') diff --git a/scripts/Makefile.clean b/scripts/Makefile.clean index 9c978b7bbdf..62351b630fa 100644 --- a/scripts/Makefile.clean +++ b/scripts/Makefile.clean @@ -7,6 +7,11 @@ src := $(obj) .PHONY: __clean __clean: +# Shorthand for $(Q)$(MAKE) scripts/Makefile.clean obj=dir +# Usage: +# $(Q)$(MAKE) $(clean)=dir +clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj + # The filename Kbuild has precedence over Makefile include $(if $(wildcard $(srctree)/$(src)/Kbuild), \ $(srctree)/$(src)/Kbuild, $(srctree)/$(src)/Makefile) @@ -89,8 +94,3 @@ $(subdir-ymn): # If quiet is set, only print short version of command cmd = @$(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))' &&) $(cmd_$(1)) - -# Shorthand for $(Q)$(MAKE) scripts/Makefile.clean obj=dir -# Usage: -# $(Q)$(MAKE) $(clean)=dir -clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj -- cgit v1.2.3-18-g5258 From db8c1a7b2ca25f37b1429c00e82d6568f86caec1 Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Wed, 27 Jul 2005 22:11:01 +0200 Subject: kbuild: fix building external modules kbuild failed to locate Makefile for external modules. This brought to my attention how the variables for directories have different values in different usage scenarios. Different kbuild usage scenarios: make - plain make in same directory where kernel source lives make O= - kbuild is told to store output files in another directory make M= - building an external module make O= M= - building an external module with kernel output seperate from src Value assigned to the different variables: |$(src) |$(obj) |$(srctree) |$(objtree) make |reldir to k src |as src |abs path to k src |abs path to k src make O= |reldir to k src |as src |abs path to k src |abs path to output dir make M= |abs path to src |as src |abs path to k src |abs path to k src make O= M= |abs path to src |as src |abs path to k src |abs path to k output path to kbuild file: make | $(srctree)/$(src), $(src) make O= | $(srctree)/$(src) make M= | $(src) make O= M= | $(src) From the table above it can be seen that the only good way to find the home directory of the kbuild file is to locate the one of the two variants that is an absolute path. If $(src) is an absolute path (starts with /) then use it, otherwise prefix $(src) with $(srctree). Signed-off-by: Sam Ravnborg --- scripts/Makefile.clean | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'scripts/Makefile.clean') diff --git a/scripts/Makefile.clean b/scripts/Makefile.clean index 62351b630fa..8974ea5fc87 100644 --- a/scripts/Makefile.clean +++ b/scripts/Makefile.clean @@ -13,8 +13,8 @@ __clean: clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj # The filename Kbuild has precedence over Makefile -include $(if $(wildcard $(srctree)/$(src)/Kbuild), \ - $(srctree)/$(src)/Kbuild, $(srctree)/$(src)/Makefile) +kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) +include $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, $(kbuild-dir)/Makefile) # Figure out what we need to build from the various variables # ========================================================================== -- cgit v1.2.3-18-g5258