From: Borislav Petkov <borislav.petkov@amd.com> Hi all, this is v5 of the patchset incorporating most of Sam's comments from yesterday. Changelog: ========== * v4: this is basically a new rediff of the patchset against 3.4-rc2 along with integrating all comments/reviews I got from the last iteration. If there are none this time, I would like to suggest merging this, maybe through -tip or Arnaldo's perf tree. State of the affairs on how to use it are in the 4/4 patch, adding them here too: Now you can do $ make tools/<toolname> from the toplevel kernel directory and have the respective tool built. If you want to build and install it, do $ make tools/<toolname>_install $ make tools/<toolname>_clean should clean the respective tool directories. If you want to clean all in tools, simply do $ make tools/clean Also, if you want to get what the possible targets are, simply calling $ make tools/ should give you the short help. $ make tools/install installs all tools, of course. Doh. Thanks. * v3: Yet another version of the toplevel Makefile integration of tools/. This round gives you the ability to build the tools from the toplevel Makefile (explanation below can be found also in patch 4/4's commit message): "Now you can do $ make tools/<toolname> from the toplevel kernel directory and have the respective tool built. If you want to build and install it, do $ make tools/<toolname> tinstall The install target is called "tinstall" so that there's no conflict with the main kernel install target and should mean "tool install". $ make tools/ <toolname>_clean should clean the respective tool directories. If you want to clean all in tools, simply do $ make tools/ cleanall Also, if you want to get what the possible targets are, simply calling $ make tools/ should give you the short help." Also included are all suggestions from the last time. Thanks. * v2: here's a refreshed version from yesterday incorporating all comments and suggestions along with a third patch that adds a 'help' target as the default one causing the following below. Btw, Arnaldo, could you please pick those up if there are no complaints since the first patch touches perf and I don't have a clear idea who else to send it to anyway :). Thanks. $ make Possible targets: cpupower - a tool for all things x86 CPU power firewire - the userspace part of nosy, an IEEE-1394 traffic sniffer lguest - a minimal 32-bit x86 hypervisor perf - Linux performance measurements tool slub - slabs reporting tool turbostat - Intel CPU idle stats and freq reporting tool usb - USB testing tools virtio - vhost test module x86_energy_perf_policy - Intel energy policy tool Cleaning targets: all of the above with the "_clean" string appended cleans the respective build directory. clean: a summary clean target to clean _all_ folders * v1: this is a refresh and carve-out of an old patchset. It adds a toplevel Makefile to tools/ so that one can build the tool of her/his liking by simply doing $ cd tools/ $ make <toolname> By default, we build perf. There's also a scripts/Makefile.lib now which should contain all make-related generic stuff which can be used by all tools' build process after including this file. </Changelog> Any comments/suggestions are welcome, thanks.
From: Borislav Petkov <borislav.petkov@amd.com> Put generic enough build settings which could be reused by other tools into a common Makefile.include file. This commit reintroduces QUIET_SUBDIR{0,1} (see a3d1ee10d1bf) which are going to be used in the following patches. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> --- tools/perf/Makefile | 47 +-------------------------------- tools/scripts/Makefile.include | 57 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 46 deletions(-) create mode 100644 tools/scripts/Makefile.include diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 820371f10d1b..4ca77cc0f284 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile @@ -1,18 +1,10 @@ -ifeq ("$(origin O)", "command line") - OUTPUT := $(O)/ -endif +include ../scripts/Makefile.include # The default target of this Makefile is... all: include config/utilities.mak -ifneq ($(OUTPUT),) -# check that the output directory actually exists -OUTDIR := $(shell cd $(OUTPUT) && /bin/pwd) -$(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist)) -endif - # Define V to have a more verbose compile. # # Define O to save output files in a separate directory. @@ -84,31 +76,6 @@ ifneq ($(WERROR),0) CFLAGS_WERROR := -Werror endif -# -# Include saner warnings here, which can catch bugs: -# - -EXTRA_WARNINGS := -Wformat -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-security -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-y2k -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wshadow -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Winit-self -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wpacked -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wredundant-decls -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-aliasing=3 -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-default -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-enum -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wno-system-headers -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wundef -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wwrite-strings -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wbad-function-cast -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-declarations -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-prototypes -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wnested-externs -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wold-style-definition -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-prototypes -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wdeclaration-after-statement - ifeq ("$(origin DEBUG)", "command line") PERF_DEBUG = $(DEBUG) endif @@ -679,18 +646,6 @@ else endif endif -ifneq ($(findstring $(MAKEFLAGS),s),s) -ifndef V - QUIET_CC = @echo ' ' CC $@; - QUIET_AR = @echo ' ' AR $@; - QUIET_LINK = @echo ' ' LINK $@; - QUIET_MKDIR = @echo ' ' MKDIR $@; - QUIET_GEN = @echo ' ' GEN $@; - QUIET_FLEX = @echo ' ' FLEX $@; - QUIET_BISON = @echo ' ' BISON $@; -endif -endif - ifdef ASCIIDOC8 export ASCIIDOC8 endif diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include new file mode 100644 index 000000000000..52348d3bd8d3 --- /dev/null +++ b/tools/scripts/Makefile.include @@ -0,0 +1,57 @@ +ifeq ("$(origin O)", "command line") + OUTPUT := $(O)/ +endif + +ifneq ($(OUTPUT),) +# check that the output directory actually exists +OUTDIR := $(shell cd $(OUTPUT) && /bin/pwd) +$(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist)) +endif + +# +# Include saner warnings here, which can catch bugs: +# +EXTRA_WARNINGS := -Wformat +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-security +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-y2k +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wshadow +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Winit-self +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wpacked +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wredundant-decls +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-aliasing=3 +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-default +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-enum +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wno-system-headers +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wundef +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wwrite-strings +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wbad-function-cast +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-declarations +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-prototypes +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wnested-externs +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wold-style-definition +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-prototypes +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wdeclaration-after-statement + +ifneq ($(findstring $(MAKEFLAGS), w),w) +PRINT_DIR = --no-print-directory +else +NO_SUBDIR = : +endif + +QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir +QUIET_SUBDIR1 = + +ifneq ($(findstring $(MAKEFLAGS),s),s) +ifndef V + QUIET_CC = @echo ' ' CC $@; + QUIET_AR = @echo ' ' AR $@; + QUIET_LINK = @echo ' ' LINK $@; + QUIET_MKDIR = @echo ' ' MKDIR $@; + QUIET_GEN = @echo ' ' GEN $@; + QUIET_SUBDIR0 = +@subdir= + QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ + $(MAKE) $(PRINT_DIR) -C $$subdir + QUIET_FLEX = @echo ' ' FLEX $@; + QUIET_BISON = @echo ' ' BISON $@; +endif +endif -- 1.7.9.3.362.g71319
From: Borislav Petkov <borislav.petkov@amd.com> Use += instead of the bash syntax, as Sam Ravnborg suggests. Also, sort the -W options alphabetically and (... keep them sorted). Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> --- tools/scripts/Makefile.include | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include index 52348d3bd8d3..87b55a729a5f 100644 --- a/tools/scripts/Makefile.include +++ b/tools/scripts/Makefile.include @@ -11,26 +11,26 @@ endif # # Include saner warnings here, which can catch bugs: # -EXTRA_WARNINGS := -Wformat -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-security -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-y2k -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wshadow -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Winit-self -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wpacked -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wredundant-decls -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-aliasing=3 -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-default -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-enum -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wno-system-headers -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wundef -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wwrite-strings -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wbad-function-cast -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-declarations -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-prototypes -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wnested-externs -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wold-style-definition -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-prototypes -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wdeclaration-after-statement +EXTRA_WARNINGS := -Wbad-function-cast +EXTRA_WARNINGS += -Wdeclaration-after-statement +EXTRA_WARNINGS += -Wformat-security +EXTRA_WARNINGS += -Wformat-y2k +EXTRA_WARNINGS += -Winit-self +EXTRA_WARNINGS += -Wmissing-declarations +EXTRA_WARNINGS += -Wmissing-prototypes +EXTRA_WARNINGS += -Wnested-externs +EXTRA_WARNINGS += -Wno-system-headers +EXTRA_WARNINGS += -Wold-style-definition +EXTRA_WARNINGS += -Wpacked +EXTRA_WARNINGS += -Wredundant-decls +EXTRA_WARNINGS += -Wshadow +EXTRA_WARNINGS += -Wstrict-aliasing=3 +EXTRA_WARNINGS += -Wstrict-prototypes +EXTRA_WARNINGS += -Wswitch-default +EXTRA_WARNINGS += -Wswitch-enum +EXTRA_WARNINGS += -Wundef +EXTRA_WARNINGS += -Wwrite-strings +EXTRA_WARNINGS += -Wformat ifneq ($(findstring $(MAKEFLAGS), w),w) PRINT_DIR = --no-print-directory -- 1.7.9.3.362.g71319
From: Borislav Petkov <borislav.petkov@amd.com> Add a Makefile with all the targets under tools/. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> --- tools/Makefile | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 tools/Makefile diff --git a/tools/Makefile b/tools/Makefile new file mode 100644 index 000000000000..feadfdd6da55 --- /dev/null +++ b/tools/Makefile @@ -0,0 +1,47 @@ +include scripts/Makefile.include + +cpupower: FORCE + $(QUIET_SUBDIR0)power/$@/ $(QUIET_SUBDIR1) + +firewire lguest perf usb virtio vm: FORCE + $(QUIET_SUBDIR0)$@/ $(QUIET_SUBDIR1) + +selftests: FORCE + $(QUIET_SUBDIR0)testing/$@/ $(QUIET_SUBDIR1) + +turbostat x86_energy_perf_policy: FORCE + $(QUIET_SUBDIR0)power/x86/$@/ $(QUIET_SUBDIR1) + +cpupower_install: + $(QUIET_SUBDIR0)power/$(@:_install=)/ $(QUIET_SUBDIR1) install + +firewire_install lguest_install perf_install usb_install virtio_install vm_install: + $(QUIET_SUBDIR0)$(@:_install=)/ $(QUIET_SUBDIR1) install + +selftests_install: + $(QUIET_SUBDIR0)testing/$(@:_clean=)/ $(QUIET_SUBDIR1) install + +turbostat_install x86_energy_perf_policy_install: + $(QUIET_SUBDIR0)power/x86/$(@:_install=)/ $(QUIET_SUBDIR1) install + +install: cpupower_install firewire_install lguest_install perf_install \ + selftests_install turbostat_install usb_install virtio_install \ + vm_install x86_energy_perf_policy_install + +cpupower_clean: + $(QUIET_SUBDIR0)power/cpupower/ $(QUIET_SUBDIR1) clean + +firewire_clean lguest_clean perf_clean usb_clean virtio_clean vm_clean: + $(QUIET_SUBDIR0)$(@:_clean=)/ $(QUIET_SUBDIR1) clean + +selftests_clean: + $(QUIET_SUBDIR0)testing/$(@:_clean=)/ $(QUIET_SUBDIR1) clean + +turbostat_clean x86_energy_perf_policy_clean: + $(QUIET_SUBDIR0)power/x86/$(@:_clean=)/ $(QUIET_SUBDIR1) clean + +clean: cpupower_clean firewire_clean lguest_clean perf_clean selftests_clean \ + turbostat_clean usb_clean virtio_clean vm_clean \ + x86_energy_perf_policy_clean + +.PHONY: FORCE -- 1.7.9.3.362.g71319
From: Borislav Petkov <borislav.petkov@amd.com> ... and make it the default one so that calling 'make' without arguments in the tools/ directory gives you the possible targets to build along with a short description of what they are. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> --- tools/Makefile | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tools/Makefile b/tools/Makefile index feadfdd6da55..f87c0ec63e6c 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,5 +1,25 @@ include scripts/Makefile.include +help: + @echo 'Possible targets:' + @echo '' + @echo ' cpupower - a tool for all things x86 CPU power' + @echo ' firewire - the userspace part of nosy, an IEEE-1394 traffic sniffer' + @echo ' lguest - a minimal 32-bit x86 hypervisor' + @echo ' perf - Linux performance measurement and analysis tool' + @echo ' selftests - various kernel selftests' + @echo ' turbostat - Intel CPU idle stats and freq reporting tool' + @echo ' usb - USB testing tools' + @echo ' virtio - vhost test module' + @echo ' vm - misc vm tools' + @echo ' x86_energy_perf_policy - Intel energy policy tool' + @echo '' + @echo 'Cleaning targets:' + @echo '' + @echo ' all of the above with the "_clean" string appended cleans' + @echo ' the respective build directory.' + @echo ' clean: a summary clean target to clean _all_ folders' + cpupower: FORCE $(QUIET_SUBDIR0)power/$@/ $(QUIET_SUBDIR1) -- 1.7.9.3.362.g71319
From: Borislav Petkov <borislav.petkov@amd.com> Now you can do $ make tools/<toolname> from the toplevel kernel directory and have the respective tool built. If you want to build and install it, do $ make tools/<toolname>_install $ make tools/<toolname>_clean should clean the respective tool directories. If you want to clean all in tools, simply do $ make tools/clean Also, if you want to get what the possible targets are, simply calling $ make tools/ should give you the short help. $ make tools/install installs all tools, of course. Doh. Cc: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> --- Makefile | 7 +++++++ tools/Makefile | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/Makefile b/Makefile index 0df3d003a079..f7f738117128 100644 --- a/Makefile +++ b/Makefile @@ -1468,6 +1468,13 @@ kernelrelease: kernelversion: @echo $(KERNELVERSION) +# Clear a bunch of variables before executing the submake +tools/: FORCE + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ + +tools/%: FORCE + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ $* + # Single targets # --------------------------------------------------------------------------- # Single targets are compatible with: diff --git a/tools/Makefile b/tools/Makefile index f87c0ec63e6c..3ae43947a171 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -14,6 +14,16 @@ help: @echo ' vm - misc vm tools' @echo ' x86_energy_perf_policy - Intel energy policy tool' @echo '' + @echo 'You can do:' + @echo ' $$ make -C tools/<tool>_install' + @echo '' + @echo ' from the kernel command line to build and install one of' + @echo ' the tools above' + @echo '' + @echo ' $$ make tools/install' + @echo '' + @echo ' installs all tools.' + @echo '' @echo 'Cleaning targets:' @echo '' @echo ' all of the above with the "_clean" string appended cleans' -- 1.7.9.3.362.g71319
Em Wed, Apr 11, 2012 at 06:36:18PM +0200, Borislav Petkov escreveu: > From: Borislav Petkov <borislav.petkov@amd.com> > > Now you can do > > $ make tools/<toolname> > > from the toplevel kernel directory and have the respective tool built. > > If you want to build and install it, do > > $ make tools/<toolname>_install [acme@sandy linux]$ make -j8 O=/home/git/build/perf tools/perf_install [acme@sandy linux]$ ls -la tools/perf/*.o | wc -l 22 It should have honoured O= Can you fix this one please? :) - Arnaldo > $ make tools/<toolname>_clean > > should clean the respective tool directories. > > If you want to clean all in tools, simply do > > $ make tools/clean > > Also, if you want to get what the possible targets are, simply calling > > $ make tools/ > > should give you the short help. > > $ make tools/install > > installs all tools, of course. Doh. > > Cc: Sam Ravnborg <sam@ravnborg.org> > Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> > --- > Makefile | 7 +++++++ > tools/Makefile | 10 ++++++++++ > 2 files changed, 17 insertions(+) > > diff --git a/Makefile b/Makefile > index 0df3d003a079..f7f738117128 100644 > --- a/Makefile > +++ b/Makefile > @@ -1468,6 +1468,13 @@ kernelrelease: > kernelversion: > @echo $(KERNELVERSION) > > +# Clear a bunch of variables before executing the submake > +tools/: FORCE > + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ > + > +tools/%: FORCE > + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ $* > + > # Single targets > # --------------------------------------------------------------------------- > # Single targets are compatible with: > diff --git a/tools/Makefile b/tools/Makefile > index f87c0ec63e6c..3ae43947a171 100644 > --- a/tools/Makefile > +++ b/tools/Makefile > @@ -14,6 +14,16 @@ help: > @echo ' vm - misc vm tools' > @echo ' x86_energy_perf_policy - Intel energy policy tool' > @echo '' > + @echo 'You can do:' > + @echo ' $$ make -C tools/<tool>_install' > + @echo '' > + @echo ' from the kernel command line to build and install one of' > + @echo ' the tools above' > + @echo '' > + @echo ' $$ make tools/install' > + @echo '' > + @echo ' installs all tools.' > + @echo '' > @echo 'Cleaning targets:' > @echo '' > @echo ' all of the above with the "_clean" string appended cleans' > -- > 1.7.9.3.362.g71319
Em Wed, Apr 11, 2012 at 03:04:34PM -0300, Arnaldo Carvalho de Melo escreveu: > Em Wed, Apr 11, 2012 at 06:36:18PM +0200, Borislav Petkov escreveu: > > From: Borislav Petkov <borislav.petkov@amd.com> > > > > Now you can do > > > > $ make tools/<toolname> > > > > from the toplevel kernel directory and have the respective tool built. > > > > If you want to build and install it, do > > > > $ make tools/<toolname>_install > > [acme@sandy linux]$ make -j8 O=/home/git/build/perf tools/perf_install > [acme@sandy linux]$ ls -la tools/perf/*.o | wc -l > 22 > > It should have honoured O= > > Can you fix this one please? :) But that can be on top of this series as the way I use it: make -j8 -C tools/perf/ O=/home/git/build/perf install still works as expected. So if nobody hollers I'll push this to Ingo in my next pull req, ok? Sam? Ingo? Do you still have any concerns? - Arnaldo > - Arnaldo > > > $ make tools/<toolname>_clean > > > > should clean the respective tool directories. > > > > If you want to clean all in tools, simply do > > > > $ make tools/clean > > > > Also, if you want to get what the possible targets are, simply calling > > > > $ make tools/ > > > > should give you the short help. > > > > $ make tools/install > > > > installs all tools, of course. Doh. > > > > Cc: Sam Ravnborg <sam@ravnborg.org> > > Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> > > --- > > Makefile | 7 +++++++ > > tools/Makefile | 10 ++++++++++ > > 2 files changed, 17 insertions(+) > > > > diff --git a/Makefile b/Makefile > > index 0df3d003a079..f7f738117128 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -1468,6 +1468,13 @@ kernelrelease: > > kernelversion: > > @echo $(KERNELVERSION) > > > > +# Clear a bunch of variables before executing the submake > > +tools/: FORCE > > + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ > > + > > +tools/%: FORCE > > + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ $* > > + > > # Single targets > > # --------------------------------------------------------------------------- > > # Single targets are compatible with: > > diff --git a/tools/Makefile b/tools/Makefile > > index f87c0ec63e6c..3ae43947a171 100644 > > --- a/tools/Makefile > > +++ b/tools/Makefile > > @@ -14,6 +14,16 @@ help: > > @echo ' vm - misc vm tools' > > @echo ' x86_energy_perf_policy - Intel energy policy tool' > > @echo '' > > + @echo 'You can do:' > > + @echo ' $$ make -C tools/<tool>_install' > > + @echo '' > > + @echo ' from the kernel command line to build and install one of' > > + @echo ' the tools above' > > + @echo '' > > + @echo ' $$ make tools/install' > > + @echo '' > > + @echo ' installs all tools.' > > + @echo '' > > @echo 'Cleaning targets:' > > @echo '' > > @echo ' all of the above with the "_clean" string appended cleans' > > -- > > 1.7.9.3.362.g71319
On 4/11/12 12:08 PM, Arnaldo Carvalho de Melo wrote:
>> [acme@sandy linux]$ make -j8 O=/home/git/build/perf tools/perf_install
>> [acme@sandy linux]$ ls -la tools/perf/*.o | wc -l
>> 22
>>
>> It should have honoured O=
>>
>> Can you fix this one please? :)
>
> But that can be on top of this series as the way I use it:
>
> make -j8 -C tools/perf/ O=/home/git/build/perf install
>
> still works as expected.
Does this sequence still work?
cd tools/perf
make O=/tmp/pbuild
and the O= is honored?
David
On Wed, Apr 11, 2012 at 12:19:15PM -0600, David Ahern wrote:
> Does this sequence still work?
>
> cd tools/perf
> make O=/tmp/pbuild
>
> and the O= is honored?
That still works:
$ cd tools/perf/
$ mkdir /tmp/pbuild
$ make O=/tmp/pbuild
MKDIR /tmp/pbuild/arch/x86/util
MKDIR /tmp/pbuild/bench
MKDIR /tmp/pbuild/util
MKDIR /tmp/pbuild/util/ui
MKDIR /tmp/pbuild/util/ui/browsers
PERF_VERSION = 3.4.rc2.28.g7f953
...
CC /tmp/pbuild/util/ui/browsers/map.o
CC /tmp/pbuild/util/ui/helpline.o
CC /tmp/pbuild/util/ui/progress.o
CC /tmp/pbuild/util/ui/util.o
AR /tmp/pbuild/libperf.a
LINK /tmp/pbuild/perf
GEN perf-archive
$ ls -al /tmp/pbuild/*.o | wc -l
22
--
Regards/Gruss,
Boris.
Advanced Micro Devices GmbH
Einsteinring 24, 85609 Dornach
GM: Alberto Bozzo
Reg: Dornach, Landkreis Muenchen
HRB Nr. 43632 WEEE Registernr: 129 19551
On Wed, Apr 11, 2012 at 03:04:34PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Wed, Apr 11, 2012 at 06:36:18PM +0200, Borislav Petkov escreveu:
> > From: Borislav Petkov <borislav.petkov@amd.com>
> >
> > Now you can do
> >
> > $ make tools/<toolname>
> >
> > from the toplevel kernel directory and have the respective tool built.
> >
> > If you want to build and install it, do
> >
> > $ make tools/<toolname>_install
>
> [acme@sandy linux]$ make -j8 O=/home/git/build/perf tools/perf_install
> [acme@sandy linux]$ ls -la tools/perf/*.o | wc -l
> 22
>
> It should have honoured O=
>
> Can you fix this one please? :)
I should've known - never break Arnaldo's O= thing! :-)
Sure, I'll take a look at it and I agree, it can go ontop.
Thanks.
--
Regards/Gruss,
Boris.
Advanced Micro Devices GmbH
Einsteinring 24, 85609 Dornach
GM: Alberto Bozzo
Reg: Dornach, Landkreis Muenchen
HRB Nr. 43632 WEEE Registernr: 129 19551
Em Wed, Apr 11, 2012 at 12:19:15PM -0600, David Ahern escreveu:
> On 4/11/12 12:08 PM, Arnaldo Carvalho de Melo wrote:
>
> >>[acme@sandy linux]$ make -j8 O=/home/git/build/perf tools/perf_install
> >>[acme@sandy linux]$ ls -la tools/perf/*.o | wc -l
> >>22
> >>
> >>It should have honoured O=
> >>
> >>Can you fix this one please? :)
> >
> >But that can be on top of this series as the way I use it:
> >
> > make -j8 -C tools/perf/ O=/home/git/build/perf install
> >
> >still works as expected.
>
> Does this sequence still work?
>
> cd tools/perf
> make O=/tmp/pbuild
>
> and the O= is honored?
Yes:
[acme@sandy linux]$ mkdir /tmp/perf
[acme@sandy linux]$ cd tools/perf
[acme@sandy perf]$ make O=/tmp/perf
MKDIR /tmp/perf/arch/x86/util
<SNIP>
MKDIR /tmp/perf/util/ui/browsers
PERF_VERSION = perf.core.for.mingo.6.gea01fa
GEN /tmp/perf/common-cmds.h
* new build flags or prefix
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-annotate.o
<SNIP>
CC /tmp/perf/util/parse-options.o
BISON event-parser
FLEX event-parser
BISON pmu-parser
FLEX pmu-parser
CC /tmp/perf/util/parse-events.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
GEN perf-archive
GEN /tmp/perf/python/perf.so
[acme@sandy perf]$
[acme@sandy perf]$ /tmp/perf/perf --version
perf version perf.core.for.mingo.6.gea01fa
[acme@sandy perf]$
- Arnaldo
On Wed, Apr 11, 2012 at 03:08:37PM -0300, Arnaldo Carvalho de Melo wrote: > Em Wed, Apr 11, 2012 at 03:04:34PM -0300, Arnaldo Carvalho de Melo escreveu: > > Em Wed, Apr 11, 2012 at 06:36:18PM +0200, Borislav Petkov escreveu: > > > From: Borislav Petkov <borislav.petkov@amd.com> > > > > > > Now you can do > > > > > > $ make tools/<toolname> > > > > > > from the toplevel kernel directory and have the respective tool built. > > > > > > If you want to build and install it, do > > > > > > $ make tools/<toolname>_install > > > > [acme@sandy linux]$ make -j8 O=/home/git/build/perf tools/perf_install > > [acme@sandy linux]$ ls -la tools/perf/*.o | wc -l > > 22 > > > > It should have honoured O= > > > > Can you fix this one please? :) > > But that can be on top of this series as the way I use it: How about the patch below? Sam, it touches the toplevel Makefile because it needs to not set KBUILD_OUTPUT when we're building tools/* targets. Pls, let me know if this is ok? Thanks. -- From: Borislav Petkov <borislav.petkov@amd.com> Date: Thu, 12 Apr 2012 17:18:10 +0200 Subject: [PATCH] tools, Makefile: Fix O= building Make sure $ make O=/tmp/somedir tools/perf works with the current toplevel Makefile integration. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> --- Makefile | 9 +++++++-- tools/scripts/Makefile.include | 18 +++++++++++++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 23b9ce5a2c2c..2cb2ee2dc6ae 100644 --- a/Makefile +++ b/Makefile @@ -98,8 +98,13 @@ ifeq ($(KBUILD_SRC),) # OK, Make called in directory where kernel src resides # Do we want to locate output files in a separate directory? +# +# Also, we don't want to set KBUILD_OUTPUT if we're building stuff +# in tools/ ifeq ("$(origin O)", "command line") - KBUILD_OUTPUT := $(O) + ifneq ($(findstring tools/,$(MAKECMDGOALS)),tools/) + KBUILD_OUTPUT := $(O) + endif endif ifeq ("$(origin W)", "command line") @@ -1473,7 +1478,7 @@ tools/: FORCE $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ tools/%: FORCE - $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ $* + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= O=$(O) -C $(src)/tools/ $* # Single targets # --------------------------------------------------------------------------- diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include index 87b55a729a5f..297b51d8e4be 100644 --- a/tools/scripts/Makefile.include +++ b/tools/scripts/Makefile.include @@ -38,11 +38,18 @@ else NO_SUBDIR = : endif -QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir -QUIET_SUBDIR1 = ifneq ($(findstring $(MAKEFLAGS),s),s) -ifndef V +ifdef V + QUIET_SUBDIR0 = +$(MAKE) + QUIET_SUBDIR1 = + + ifdef O + QUIET_SUBDIR0 += O=$(O) + endif + + QUIET_SUBDIR0 += -C # space to separate -C and subdir +else QUIET_CC = @echo ' ' CC $@; QUIET_AR = @echo ' ' AR $@; QUIET_LINK = @echo ' ' LINK $@; @@ -51,6 +58,11 @@ ifndef V QUIET_SUBDIR0 = +@subdir= QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ $(MAKE) $(PRINT_DIR) -C $$subdir + + ifdef O + QUIET_SUBDIR1 += O=$(O) + endif + QUIET_FLEX = @echo ' ' FLEX $@; QUIET_BISON = @echo ' ' BISON $@; endif -- 1.7.9.3.362.g71319 -- Regards/Gruss, Boris. Advanced Micro Devices GmbH Einsteinring 24, 85609 Dornach GM: Alberto Bozzo Reg: Dornach, Landkreis Muenchen HRB Nr. 43632 WEEE Registernr: 129 19551
> -- > From: Borislav Petkov <borislav.petkov@amd.com> > Date: Thu, 12 Apr 2012 17:18:10 +0200 > Subject: [PATCH] tools, Makefile: Fix O= building > > Make sure > > $ make O=/tmp/somedir tools/perf > > works with the current toplevel Makefile integration. > > Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> > --- > Makefile | 9 +++++++-- > tools/scripts/Makefile.include | 18 +++++++++++++++--- > 2 files changed, 22 insertions(+), 5 deletions(-) > > diff --git a/Makefile b/Makefile > index 23b9ce5a2c2c..2cb2ee2dc6ae 100644 > --- a/Makefile > +++ b/Makefile > @@ -98,8 +98,13 @@ ifeq ($(KBUILD_SRC),) > > # OK, Make called in directory where kernel src resides > # Do we want to locate output files in a separate directory? > +# > +# Also, we don't want to set KBUILD_OUTPUT if we're building stuff > +# in tools/ > ifeq ("$(origin O)", "command line") > - KBUILD_OUTPUT := $(O) > + ifneq ($(findstring tools/,$(MAKECMDGOALS)),tools/) > + KBUILD_OUTPUT := $(O) > + endif > endif It is complicated enough - this is not OK. We cannot special case individual targets here... > > ifeq ("$(origin W)", "command line") > @@ -1473,7 +1478,7 @@ tools/: FORCE > $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ > > tools/%: FORCE > - $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ $* > + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= O=$(O) -C $(src)/tools/ $* I think we can do: > + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= O=$(KBUILD_OUTPUT) -C $(src)/tools/ $* And then avoid the hacks above. > > # Single targets > # --------------------------------------------------------------------------- > diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include > index 87b55a729a5f..297b51d8e4be 100644 > --- a/tools/scripts/Makefile.include > +++ b/tools/scripts/Makefile.include > @@ -38,11 +38,18 @@ else > NO_SUBDIR = : > endif > > -QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir > -QUIET_SUBDIR1 = Who-ever came up with the names "QUIET_SUBDIR" must have had a bad day... I think you could do all the tricks using: QUIET_MAKE = ... It looks much simpler to use: foo: bar $(QUIET_MAKE) ... But this is another patch... Sam
Em Thu, Apr 12, 2012 at 05:57:34PM +0200, Sam Ravnborg escreveu:
> > diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include
> > index 87b55a729a5f..297b51d8e4be 100644
> > --- a/tools/scripts/Makefile.include
> > +++ b/tools/scripts/Makefile.include
> > @@ -38,11 +38,18 @@ else
> > NO_SUBDIR = :
> > endif
> >
> > -QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
> > -QUIET_SUBDIR1 =
>
> Who-ever came up with the names "QUIET_SUBDIR" must have had a bad day...
Came from the git sources, where it still lives on:
[acme@sandy git]$ git show b7774343
commit b777434383bd2f365be6896d8c89be6c1b62a135
Author: Alex Riesen <raa.lkml@gmail.com>
Date: Wed Mar 7 00:44:49 2007 +0100
Support of "make -s": do not output anything of the build itself
Signed-off-by: Junio C Hamano <junkio@cox.net>
- Arnaldo
On Thu, Apr 12, 2012 at 03:33:51PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Thu, Apr 12, 2012 at 05:57:34PM +0200, Sam Ravnborg escreveu:
> > > diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include
> > > index 87b55a729a5f..297b51d8e4be 100644
> > > --- a/tools/scripts/Makefile.include
> > > +++ b/tools/scripts/Makefile.include
> > > @@ -38,11 +38,18 @@ else
> > > NO_SUBDIR = :
> > > endif
> > >
> > > -QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
> > > -QUIET_SUBDIR1 =
> >
> > Who-ever came up with the names "QUIET_SUBDIR" must have had a bad day...
>
> Came from the git sources, where it still lives on:
>
> [acme@sandy git]$ git show b7774343
> commit b777434383bd2f365be6896d8c89be6c1b62a135
> Author: Alex Riesen <raa.lkml@gmail.com>
> Date: Wed Mar 7 00:44:49 2007 +0100
>
> Support of "make -s": do not output anything of the build itself
>
> Signed-off-by: Junio C Hamano <junkio@cox.net>
Part of the git build infrastructure has not impressed me - others parts are good.
But then it is more than a year since I actually looked at it.
And no - I have no time left to actually do anything about it.
Sam
Em Thu, Apr 12, 2012 at 09:16:11PM +0200, Sam Ravnborg escreveu: > On Thu, Apr 12, 2012 at 03:33:51PM -0300, Arnaldo Carvalho de Melo wrote: > > Em Thu, Apr 12, 2012 at 05:57:34PM +0200, Sam Ravnborg escreveu: > > > Who-ever came up with the names "QUIET_SUBDIR" must have had a bad day... > > Came from the git sources, where it still lives on: > > [acme@sandy git]$ git show b7774343 > > commit b777434383bd2f365be6896d8c89be6c1b62a135 > > Author: Alex Riesen <raa.lkml@gmail.com> > > Date: Wed Mar 7 00:44:49 2007 +0100 > > Support of "make -s": do not output anything of the build itself > > Signed-off-by: Junio C Hamano <junkio@cox.net> > Part of the git build infrastructure has not impressed me - others parts are good. > But then it is more than a year since I actually looked at it. > > And no - I have no time left to actually do anything about it. Neither me, similar impressions, for the Makefiles, I really want us to move to what is used by our landlord, the kernel :-) I also can see doing a 'make tools/menuconfig' to select what we want to build in a particular perf build, for instance, I received requests for building just 'perf record' to use it in embedded systems, collect your events, push it to another machine, where one would use a full featured perf build. Or one without perl, if one hates that thing :-) - Arnaldo
On Thu, Apr 12, 2012 at 20:33, Arnaldo Carvalho de Melo <acme@infradead.org> wrote: > Em Thu, Apr 12, 2012 at 05:57:34PM +0200, Sam Ravnborg escreveu: >> > >> > -QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir >> > -QUIET_SUBDIR1 = >> >> Who-ever came up with the names "QUIET_SUBDIR" must have had a bad day... > > Came from the git sources, where it still lives on: > > [acme@sandy git]$ git show b7774343 > commit b777434383bd2f365be6896d8c89be6c1b62a135 > Author: Alex Riesen <raa.lkml@gmail.com> > Date: Wed Mar 7 00:44:49 2007 +0100 > > Support of "make -s": do not output anything of the build itself > > Signed-off-by: Junio C Hamano <junkio@cox.net> > Looked like a good idea at the time. http://www.merriam-webster.com/dictionary/quiet qui·et verb \ˈkwī-ət\ Definition of QUIET transitive verb 1: to cause to be quiet : calm
On Thu, Apr 12, 2012 at 05:57:34PM +0200, Sam Ravnborg wrote: > > ifeq ("$(origin W)", "command line") > > @@ -1473,7 +1478,7 @@ tools/: FORCE > > $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ > > > > tools/%: FORCE > > - $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ $* > > + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= O=$(O) -C $(src)/tools/ $* > > I think we can do: > > + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= O=$(KBUILD_OUTPUT) -C $(src)/tools/ $* > And then avoid the hacks above. This has the side effect of starting a sub-make in that output directory and trying to build the kernel i.e. I'm looking at the code around "ifneq ($(KBUILD_OUTPUT),)": $ make O=/tmp/pbuild tools/perf HOSTCC scripts/basic/fixdep GEN /tmp/pbuild/Makefile HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf scripts/kconfig/conf --silentoldconfig Kconfig *** *** Configuration file ".config" not found! *** *** Please run some configurator (e.g. "make oldconfig" or *** "make menuconfig" or "make xconfig"). *** make[3]: *** [silentoldconfig] Error 1 make[2]: *** [silentoldconfig] Error 2 SUBDIR perf/ but then descends into tools/perf/ ... I haven't looked at the branch where KBUILD_OUTPUT is not empty yet, maybe there we could do something... > > # Single targets > > # --------------------------------------------------------------------------- > > diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include > > index 87b55a729a5f..297b51d8e4be 100644 > > --- a/tools/scripts/Makefile.include > > +++ b/tools/scripts/Makefile.include > > @@ -38,11 +38,18 @@ else > > NO_SUBDIR = : > > endif > > > > -QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir > > -QUIET_SUBDIR1 = > > Who-ever came up with the names "QUIET_SUBDIR" must have had a bad day... > I think you could do all the tricks using: > > QUIET_MAKE = ... > > It looks much simpler to use: > > foo: bar > $(QUIET_MAKE) ... > > But this is another patch... Right, so this could probably reuse the quiet_cmd_* machinery from the toplevel Makefile now... -- Regards/Gruss, Boris. Advanced Micro Devices GmbH Einsteinring 24, 85609 Dornach GM: Alberto Bozzo Reg: Dornach, Landkreis Muenchen HRB Nr. 43632 WEEE Registernr: 129 19551
Commit-ID: 98d89bfd0d4b2f218ec709e90ddcab6d82d7671e Gitweb: http://git.kernel.org/tip/98d89bfd0d4b2f218ec709e90ddcab6d82d7671e Author: Borislav Petkov <borislav.petkov@amd.com> AuthorDate: Wed, 11 Apr 2012 18:36:14 +0200 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Wed, 11 Apr 2012 14:57:36 -0300 tools: Add Makefile.include Put generic enough build settings which could be reused by other tools into a common Makefile.include file. This commit reintroduces QUIET_SUBDIR{0,1} (see a3d1ee10d1bf) which are going to be used in the following patches. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Michal Marek <mmarek@suse.cz> Cc: Sam Ravnborg <sam@ravnborg.org> Link: http://lkml.kernel.org/r/1334162178-17152-2-git-send-email-bp@amd64.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Makefile | 47 +-------------------------------- tools/scripts/Makefile.include | 57 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 46 deletions(-) diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 820371f..4ca77cc 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile @@ -1,18 +1,10 @@ -ifeq ("$(origin O)", "command line") - OUTPUT := $(O)/ -endif +include ../scripts/Makefile.include # The default target of this Makefile is... all: include config/utilities.mak -ifneq ($(OUTPUT),) -# check that the output directory actually exists -OUTDIR := $(shell cd $(OUTPUT) && /bin/pwd) -$(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist)) -endif - # Define V to have a more verbose compile. # # Define O to save output files in a separate directory. @@ -84,31 +76,6 @@ ifneq ($(WERROR),0) CFLAGS_WERROR := -Werror endif -# -# Include saner warnings here, which can catch bugs: -# - -EXTRA_WARNINGS := -Wformat -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-security -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-y2k -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wshadow -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Winit-self -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wpacked -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wredundant-decls -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-aliasing=3 -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-default -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-enum -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wno-system-headers -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wundef -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wwrite-strings -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wbad-function-cast -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-declarations -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-prototypes -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wnested-externs -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wold-style-definition -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-prototypes -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wdeclaration-after-statement - ifeq ("$(origin DEBUG)", "command line") PERF_DEBUG = $(DEBUG) endif @@ -679,18 +646,6 @@ else endif endif -ifneq ($(findstring $(MAKEFLAGS),s),s) -ifndef V - QUIET_CC = @echo ' ' CC $@; - QUIET_AR = @echo ' ' AR $@; - QUIET_LINK = @echo ' ' LINK $@; - QUIET_MKDIR = @echo ' ' MKDIR $@; - QUIET_GEN = @echo ' ' GEN $@; - QUIET_FLEX = @echo ' ' FLEX $@; - QUIET_BISON = @echo ' ' BISON $@; -endif -endif - ifdef ASCIIDOC8 export ASCIIDOC8 endif diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include new file mode 100644 index 0000000..52348d3 --- /dev/null +++ b/tools/scripts/Makefile.include @@ -0,0 +1,57 @@ +ifeq ("$(origin O)", "command line") + OUTPUT := $(O)/ +endif + +ifneq ($(OUTPUT),) +# check that the output directory actually exists +OUTDIR := $(shell cd $(OUTPUT) && /bin/pwd) +$(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist)) +endif + +# +# Include saner warnings here, which can catch bugs: +# +EXTRA_WARNINGS := -Wformat +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-security +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-y2k +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wshadow +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Winit-self +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wpacked +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wredundant-decls +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-aliasing=3 +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-default +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-enum +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wno-system-headers +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wundef +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wwrite-strings +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wbad-function-cast +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-declarations +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-prototypes +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wnested-externs +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wold-style-definition +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-prototypes +EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wdeclaration-after-statement + +ifneq ($(findstring $(MAKEFLAGS), w),w) +PRINT_DIR = --no-print-directory +else +NO_SUBDIR = : +endif + +QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir +QUIET_SUBDIR1 = + +ifneq ($(findstring $(MAKEFLAGS),s),s) +ifndef V + QUIET_CC = @echo ' ' CC $@; + QUIET_AR = @echo ' ' AR $@; + QUIET_LINK = @echo ' ' LINK $@; + QUIET_MKDIR = @echo ' ' MKDIR $@; + QUIET_GEN = @echo ' ' GEN $@; + QUIET_SUBDIR0 = +@subdir= + QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ + $(MAKE) $(PRINT_DIR) -C $$subdir + QUIET_FLEX = @echo ' ' FLEX $@; + QUIET_BISON = @echo ' ' BISON $@; +endif +endif
Commit-ID: d8caf3eb240f4b3100cd8e4f0178df9801bce537 Gitweb: http://git.kernel.org/tip/d8caf3eb240f4b3100cd8e4f0178df9801bce537 Author: Borislav Petkov <borislav.petkov@amd.com> AuthorDate: Wed, 11 Apr 2012 18:36:15 +0200 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Wed, 11 Apr 2012 14:57:50 -0300 tools: Cleanup EXTRA_WARNINGS Use += instead of the bash syntax, as Sam Ravnborg suggests. Also, sort the -W options alphabetically and (... keep them sorted). Suggested-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Michal Marek <mmarek@suse.cz> Cc: Sam Ravnborg <sam@ravnborg.org> Link: http://lkml.kernel.org/r/1334162178-17152-3-git-send-email-bp@amd64.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/scripts/Makefile.include | 40 ++++++++++++++++++++-------------------- 1 files changed, 20 insertions(+), 20 deletions(-) diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include index 52348d3..87b55a7 100644 --- a/tools/scripts/Makefile.include +++ b/tools/scripts/Makefile.include @@ -11,26 +11,26 @@ endif # # Include saner warnings here, which can catch bugs: # -EXTRA_WARNINGS := -Wformat -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-security -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-y2k -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wshadow -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Winit-self -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wpacked -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wredundant-decls -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-aliasing=3 -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-default -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-enum -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wno-system-headers -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wundef -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wwrite-strings -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wbad-function-cast -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-declarations -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-prototypes -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wnested-externs -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wold-style-definition -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-prototypes -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wdeclaration-after-statement +EXTRA_WARNINGS := -Wbad-function-cast +EXTRA_WARNINGS += -Wdeclaration-after-statement +EXTRA_WARNINGS += -Wformat-security +EXTRA_WARNINGS += -Wformat-y2k +EXTRA_WARNINGS += -Winit-self +EXTRA_WARNINGS += -Wmissing-declarations +EXTRA_WARNINGS += -Wmissing-prototypes +EXTRA_WARNINGS += -Wnested-externs +EXTRA_WARNINGS += -Wno-system-headers +EXTRA_WARNINGS += -Wold-style-definition +EXTRA_WARNINGS += -Wpacked +EXTRA_WARNINGS += -Wredundant-decls +EXTRA_WARNINGS += -Wshadow +EXTRA_WARNINGS += -Wstrict-aliasing=3 +EXTRA_WARNINGS += -Wstrict-prototypes +EXTRA_WARNINGS += -Wswitch-default +EXTRA_WARNINGS += -Wswitch-enum +EXTRA_WARNINGS += -Wundef +EXTRA_WARNINGS += -Wwrite-strings +EXTRA_WARNINGS += -Wformat ifneq ($(findstring $(MAKEFLAGS), w),w) PRINT_DIR = --no-print-directory
Commit-ID: 2363ecb17041d711fa2b3fb1b1ea2ebc47a0f974 Gitweb: http://git.kernel.org/tip/2363ecb17041d711fa2b3fb1b1ea2ebc47a0f974 Author: Borislav Petkov <borislav.petkov@amd.com> AuthorDate: Wed, 11 Apr 2012 18:36:16 +0200 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Wed, 11 Apr 2012 14:58:43 -0300 tools: Add a toplevel Makefile Add a Makefile with all the targets under tools/. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Michal Marek <mmarek@suse.cz> Cc: Sam Ravnborg <sam@ravnborg.org> Link: http://lkml.kernel.org/r/1334162178-17152-4-git-send-email-bp@amd64.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/Makefile | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 47 insertions(+), 0 deletions(-) diff --git a/tools/Makefile b/tools/Makefile new file mode 100644 index 0000000..feadfdd --- /dev/null +++ b/tools/Makefile @@ -0,0 +1,47 @@ +include scripts/Makefile.include + +cpupower: FORCE + $(QUIET_SUBDIR0)power/$@/ $(QUIET_SUBDIR1) + +firewire lguest perf usb virtio vm: FORCE + $(QUIET_SUBDIR0)$@/ $(QUIET_SUBDIR1) + +selftests: FORCE + $(QUIET_SUBDIR0)testing/$@/ $(QUIET_SUBDIR1) + +turbostat x86_energy_perf_policy: FORCE + $(QUIET_SUBDIR0)power/x86/$@/ $(QUIET_SUBDIR1) + +cpupower_install: + $(QUIET_SUBDIR0)power/$(@:_install=)/ $(QUIET_SUBDIR1) install + +firewire_install lguest_install perf_install usb_install virtio_install vm_install: + $(QUIET_SUBDIR0)$(@:_install=)/ $(QUIET_SUBDIR1) install + +selftests_install: + $(QUIET_SUBDIR0)testing/$(@:_clean=)/ $(QUIET_SUBDIR1) install + +turbostat_install x86_energy_perf_policy_install: + $(QUIET_SUBDIR0)power/x86/$(@:_install=)/ $(QUIET_SUBDIR1) install + +install: cpupower_install firewire_install lguest_install perf_install \ + selftests_install turbostat_install usb_install virtio_install \ + vm_install x86_energy_perf_policy_install + +cpupower_clean: + $(QUIET_SUBDIR0)power/cpupower/ $(QUIET_SUBDIR1) clean + +firewire_clean lguest_clean perf_clean usb_clean virtio_clean vm_clean: + $(QUIET_SUBDIR0)$(@:_clean=)/ $(QUIET_SUBDIR1) clean + +selftests_clean: + $(QUIET_SUBDIR0)testing/$(@:_clean=)/ $(QUIET_SUBDIR1) clean + +turbostat_clean x86_energy_perf_policy_clean: + $(QUIET_SUBDIR0)power/x86/$(@:_clean=)/ $(QUIET_SUBDIR1) clean + +clean: cpupower_clean firewire_clean lguest_clean perf_clean selftests_clean \ + turbostat_clean usb_clean virtio_clean vm_clean \ + x86_energy_perf_policy_clean + +.PHONY: FORCE
Commit-ID: d5dd8afb569cdf89bd2b322d10f80a23bd3d2cfd Gitweb: http://git.kernel.org/tip/d5dd8afb569cdf89bd2b322d10f80a23bd3d2cfd Author: Borislav Petkov <borislav.petkov@amd.com> AuthorDate: Wed, 11 Apr 2012 18:36:17 +0200 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Wed, 11 Apr 2012 14:59:00 -0300 tools: Add a help target ... and make it the default one so that calling 'make' without arguments in the tools/ directory gives you the possible targets to build along with a short description of what they are. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Michal Marek <mmarek@suse.cz> Cc: Sam Ravnborg <sam@ravnborg.org> Link: http://lkml.kernel.org/r/1334162178-17152-5-git-send-email-bp@amd64.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/Makefile | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) diff --git a/tools/Makefile b/tools/Makefile index feadfdd..f87c0ec 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,5 +1,25 @@ include scripts/Makefile.include +help: + @echo 'Possible targets:' + @echo '' + @echo ' cpupower - a tool for all things x86 CPU power' + @echo ' firewire - the userspace part of nosy, an IEEE-1394 traffic sniffer' + @echo ' lguest - a minimal 32-bit x86 hypervisor' + @echo ' perf - Linux performance measurement and analysis tool' + @echo ' selftests - various kernel selftests' + @echo ' turbostat - Intel CPU idle stats and freq reporting tool' + @echo ' usb - USB testing tools' + @echo ' virtio - vhost test module' + @echo ' vm - misc vm tools' + @echo ' x86_energy_perf_policy - Intel energy policy tool' + @echo '' + @echo 'Cleaning targets:' + @echo '' + @echo ' all of the above with the "_clean" string appended cleans' + @echo ' the respective build directory.' + @echo ' clean: a summary clean target to clean _all_ folders' + cpupower: FORCE $(QUIET_SUBDIR0)power/$@/ $(QUIET_SUBDIR1)
Commit-ID: ea01fa9f63aeff3ac918868217aa94adf76ddcc7 Gitweb: http://git.kernel.org/tip/ea01fa9f63aeff3ac918868217aa94adf76ddcc7 Author: Borislav Petkov <borislav.petkov@amd.com> AuthorDate: Wed, 11 Apr 2012 18:36:18 +0200 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Wed, 11 Apr 2012 15:00:17 -0300 tools: Connect to the kernel build system Now you can do $ make tools/<toolname> from the toplevel kernel directory and have the respective tool built. If you want to build and install it, do $ make tools/<toolname>_install $ make tools/<toolname>_clean should clean the respective tool directories. If you want to clean all in tools, simply do $ make tools/clean Also, if you want to get what the possible targets are, simply calling $ make tools/ should give you the short help. $ make tools/install installs all tools, of course. Doh. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Michal Marek <mmarek@suse.cz> Cc: Sam Ravnborg <sam@ravnborg.org> Link: http://lkml.kernel.org/r/1334162178-17152-6-git-send-email-bp@amd64.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- Makefile | 7 +++++++ tools/Makefile | 10 ++++++++++ 2 files changed, 17 insertions(+), 0 deletions(-) diff --git a/Makefile b/Makefile index 1932984..23b9ce5 100644 --- a/Makefile +++ b/Makefile @@ -1468,6 +1468,13 @@ kernelrelease: kernelversion: @echo $(KERNELVERSION) +# Clear a bunch of variables before executing the submake +tools/: FORCE + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ + +tools/%: FORCE + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ $* + # Single targets # --------------------------------------------------------------------------- # Single targets are compatible with: diff --git a/tools/Makefile b/tools/Makefile index f87c0ec..3ae4394 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -14,6 +14,16 @@ help: @echo ' vm - misc vm tools' @echo ' x86_energy_perf_policy - Intel energy policy tool' @echo '' + @echo 'You can do:' + @echo ' $$ make -C tools/<tool>_install' + @echo '' + @echo ' from the kernel command line to build and install one of' + @echo ' the tools above' + @echo '' + @echo ' $$ make tools/install' + @echo '' + @echo ' installs all tools.' + @echo '' @echo 'Cleaning targets:' @echo '' @echo ' all of the above with the "_clean" string appended cleans'
On Fri, Apr 13, 2012 at 20:18, tip-bot for Borislav Petkov
<borislav.petkov@amd.com> wrote:
> Also, if you want to get what the possible targets are, simply calling
>
> $ make tools/
>
> should give you the short help.
Is "make tools" (without trailing slash) reserved for something?
If not, it might make sense to allow it also (to mean "make tools/").