From: tip-bot for David Howells <dhowells@redhat.com>
To: linux-tip-commits@vger.kernel.org
Cc: acme@redhat.com, linux-kernel@vger.kernel.org, paulus@samba.org,
hpa@zytor.com, mingo@kernel.org, torvalds@linux-foundation.org,
namhyung@gmail.com, bp@amd64.org, dhowells@redhat.com,
tglx@linutronix.de
Subject: [tip:perf/core] tools: Honour the O= flag when tool build called from a higher Makefile
Date: Sat, 8 Dec 2012 07:08:14 -0800 [thread overview]
Message-ID: <tip-9db48cd5ccd0d127e991c15509a0241a18043e91@git.kernel.org> (raw)
In-Reply-To: <1378.1352379110@warthog.procyon.org.uk>
Commit-ID: 9db48cd5ccd0d127e991c15509a0241a18043e91
Gitweb: http://git.kernel.org/tip/9db48cd5ccd0d127e991c15509a0241a18043e91
Author: David Howells <dhowells@redhat.com>
AuthorDate: Mon, 5 Nov 2012 21:02:08 +0000
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 14 Nov 2012 16:53:22 -0300
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>
---
Makefile | 6 ++++--
tools/scripts/Makefile.include | 17 +++++++++++++----
2 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/Makefile b/Makefile
index 14c93b3..08a31d8 100644
--- a/Makefile
+++ b/Makefile
@@ -1321,10 +1321,12 @@ kernelversion:
# Clear a bunch of variables before executing the submake
tools/: FORCE
- $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/
+ $(Q)mkdir -p $(objtree)/tools
+ $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= O=$(objtree) subdir=tools -C $(src)/tools/
tools/%: FORCE
- $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ $*
+ $(Q)mkdir -p $(objtree)/tools
+ $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= O=$(objtree) subdir=tools -C $(src)/tools/ $*
# Single targets
# ---------------------------------------------------------------------------
diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include
index 4a9e317..87467b1 100644
--- a/tools/scripts/Makefile.include
+++ b/tools/scripts/Makefile.include
@@ -1,8 +1,11 @@
-ifeq ("$(origin O)", "command line")
+ifeq ($(origin O), command line)
dummy := $(if $(shell test -d $(O) || echo $(O)),$(error O=$(O) does not exist),)
ABSOLUTE_O := $(shell cd $(O) ; pwd)
- OUTPUT := $(ABSOLUTE_O)/
+ OUTPUT := $(ABSOLUTE_O)/$(if $(subdir),$(subdir)/)
COMMAND_O := O=$(ABSOLUTE_O)
+ifeq ($(objtree),)
+ objtree := $(O)
+endif
endif
ifneq ($(OUTPUT),)
@@ -47,9 +50,10 @@ endif
# Call by doing: $(call descend,directory[,target])
#
descend = \
- $(QUIET_SUBDIR0)$(1) $(QUIET_SUBDIR1) $(2)
+ +mkdir -p $(OUTPUT)$(1) && \
+ $(MAKE) $(COMMAND_O) subdir=$(if $(subdir),$(subdir)/$(1),$(1)) $(PRINT_DIR) -C $(1)
-QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
+QUIET_SUBDIR0 = +$(MAKE) $(COMMAND_O) -C # space to separate -C and subdir
QUIET_SUBDIR1 =
ifneq ($(findstring $(MAKEFLAGS),s),s)
@@ -64,5 +68,10 @@ ifndef V
$(MAKE) $(PRINT_DIR) -C $$subdir
QUIET_FLEX = @echo ' ' FLEX $@;
QUIET_BISON = @echo ' ' BISON $@;
+
+ descend = \
+ @echo ' ' DESCEND $(1); \
+ mkdir -p $(OUTPUT)$(1) && \
+ $(MAKE) $(COMMAND_O) subdir=$(if $(subdir),$(subdir)/$(1),$(1)) $(PRINT_DIR) -C $(1)
endif
endif
prev parent reply other threads:[~2012-12-08 15:10 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-08 12:51 [GIT PULL] UAPI: perf fixes David Howells
2012-11-12 20:23 ` Josh Boyer
2012-11-13 11:11 ` David Howells
2012-11-13 11:12 ` David Howells
2012-11-13 11:12 ` David Howells
2012-11-13 12:51 ` Josh Boyer
2012-11-13 15:24 ` David Howells
2012-11-13 15:42 ` Josh Boyer
2012-11-13 16:34 ` Arnaldo Carvalho de Melo
2012-11-15 2:23 ` Xiao Guangrong
2012-11-15 6:17 ` [PATCH 1/2] perf kvm: rename perf_kvm to perf_kvm_stat Xiao Guangrong
2012-11-15 6:17 ` [PATCH 2/2] perf kvm: fix building perf kvm on PowerPC Xiao Guangrong
2012-11-15 10:46 ` David Howells
2012-11-19 8:19 ` Xiao Guangrong
2012-11-19 22:22 ` David Howells
2012-12-01 11:21 ` [tip:perf/urgent] perf kvm: Fix building perf kvm on non x86 arches tip-bot for Xiao Guangrong
2012-12-01 11:20 ` [tip:perf/urgent] perf kvm: Rename perf_kvm to perf_kvm_stat tip-bot for Xiao Guangrong
2012-12-01 11:15 ` [tip:perf/urgent] tools: Define a Makefile function to do subdir processing tip-bot for David Howells
2012-12-01 11:16 ` [tip:perf/urgent] tools: Honour the O= flag when tool build called from a higher Makefile tip-bot for David Howells
2012-12-08 15:07 ` [tip:perf/core] tools: Define a Makefile function to do subdir processing tip-bot for David Howells
2012-12-08 15:08 ` tip-bot for David Howells [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tip-9db48cd5ccd0d127e991c15509a0241a18043e91@git.kernel.org \
--to=dhowells@redhat.com \
--cc=acme@redhat.com \
--cc=bp@amd64.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@gmail.com \
--cc=paulus@samba.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.