diff options
| author | David Howells <dhowells@redhat.com> | 2012-11-05 16:02:08 -0500 |
|---|---|---|
| committer | David Howells <dhowells@redhat.com> | 2012-11-19 17:10:30 -0500 |
| commit | bf35182ffcd00d8b36d56210ffdac110e5624d7d (patch) | |
| tree | 222537ccd17378d77de88702aa35a4d671f64aeb /tools/scripts | |
| parent | ca9dfc6cc45a8ae0297188f5fed23af242cc8a8d (diff) | |
tools: Honour the O= flag when tool build called from a higher Makefile
Honour the O= flag that was passed to a higher level Makefile and then passed
down as part of a tool build.
To make this work, the top-level Makefile passes the original O= flag and
subdir=tools to the tools/Makefile, and that in turn passes
subdir=$(O)/$(subdir)/foodir when building tool foo in directory
$(O)/$(subdir)/foodir (where the intervening slashes aren't added if an
element is missing).
For example, take perf. This is found in tools/perf/. Assume we're building
into directory ~/zebra/, so we pass O=~/zebra to make. Dependening on where
we run the build from, we see:
make run in dir $(OUTPUT) dir
======================= ==================
linux ~/zebra/tools/perf/
linux/tools ~/zebra/perf/
linux/tools/perf ~/zebra/
and if O= is not set, we get:
make run in dir $(OUTPUT) dir
======================= ==================
linux linux/tools/perf/
linux/tools linux/tools/perf/
linux/tools/perf linux/tools/perf/
The output directories are created by the descend function if they don't
already exist.
Signed-off-by: David Howells <dhowells@redhat.com>
Cc: Borislav Petkov <bp@amd64.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1378.1352379110@warthog.procyon.org.uk
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/scripts')
| -rw-r--r-- | tools/scripts/Makefile.include | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include index 4a9e3176f743..87467b17e05c 100644 --- a/tools/scripts/Makefile.include +++ b/tools/scripts/Makefile.include | |||
| @@ -1,8 +1,11 @@ | |||
| 1 | ifeq ("$(origin O)", "command line") | 1 | ifeq ($(origin O), command line) |
| 2 | dummy := $(if $(shell test -d $(O) || echo $(O)),$(error O=$(O) does not exist),) | 2 | dummy := $(if $(shell test -d $(O) || echo $(O)),$(error O=$(O) does not exist),) |
| 3 | ABSOLUTE_O := $(shell cd $(O) ; pwd) | 3 | ABSOLUTE_O := $(shell cd $(O) ; pwd) |
| 4 | OUTPUT := $(ABSOLUTE_O)/ | 4 | OUTPUT := $(ABSOLUTE_O)/$(if $(subdir),$(subdir)/) |
| 5 | COMMAND_O := O=$(ABSOLUTE_O) | 5 | COMMAND_O := O=$(ABSOLUTE_O) |
| 6 | ifeq ($(objtree),) | ||
| 7 | objtree := $(O) | ||
| 8 | endif | ||
| 6 | endif | 9 | endif |
| 7 | 10 | ||
| 8 | ifneq ($(OUTPUT),) | 11 | ifneq ($(OUTPUT),) |
| @@ -47,9 +50,10 @@ endif | |||
| 47 | # Call by doing: $(call descend,directory[,target]) | 50 | # Call by doing: $(call descend,directory[,target]) |
| 48 | # | 51 | # |
| 49 | descend = \ | 52 | descend = \ |
| 50 | $(QUIET_SUBDIR0)$(1) $(QUIET_SUBDIR1) $(2) | 53 | +mkdir -p $(OUTPUT)$(1) && \ |
| 54 | $(MAKE) $(COMMAND_O) subdir=$(if $(subdir),$(subdir)/$(1),$(1)) $(PRINT_DIR) -C $(1) | ||
| 51 | 55 | ||
| 52 | QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir | 56 | QUIET_SUBDIR0 = +$(MAKE) $(COMMAND_O) -C # space to separate -C and subdir |
| 53 | QUIET_SUBDIR1 = | 57 | QUIET_SUBDIR1 = |
| 54 | 58 | ||
| 55 | ifneq ($(findstring $(MAKEFLAGS),s),s) | 59 | ifneq ($(findstring $(MAKEFLAGS),s),s) |
| @@ -64,5 +68,10 @@ ifndef V | |||
| 64 | $(MAKE) $(PRINT_DIR) -C $$subdir | 68 | $(MAKE) $(PRINT_DIR) -C $$subdir |
| 65 | QUIET_FLEX = @echo ' ' FLEX $@; | 69 | QUIET_FLEX = @echo ' ' FLEX $@; |
| 66 | QUIET_BISON = @echo ' ' BISON $@; | 70 | QUIET_BISON = @echo ' ' BISON $@; |
| 71 | |||
| 72 | descend = \ | ||
| 73 | @echo ' ' DESCEND $(1); \ | ||
| 74 | mkdir -p $(OUTPUT)$(1) && \ | ||
| 75 | $(MAKE) $(COMMAND_O) subdir=$(if $(subdir),$(subdir)/$(1),$(1)) $(PRINT_DIR) -C $(1) | ||
| 67 | endif | 76 | endif |
| 68 | endif | 77 | endif |
