hi,
I'm following up on latest post from Alexis:
  http://marc.info/?l=linux-kernel&m=141427580405357&w=2

v3 changes:
  - disabling only builtin rules, keeping builtin variables in place
    because some projects we depends on using them (traceevent) [David]
  - fixed empy source list issue that happened on arm [Will, Mark]
  - updated to the current Arnaldo's perf/core branch
  - added automated tests into: tools/build/tests/
  - tested on arm64,ppc64,s390,x86_64,i386

v2 changes:
  - build Makefiles librarized and moved to 'tools/build' [Ingo]
  - several minor fixies [Namhyung]
  - tested on other archs now - x86_64, i386, powerpc
  - moved tools/lib/* under new build framework to show
    that it's possible ;-)
    included traceevent/lockdep maintainers to get the feedback
  - omitted last 2 patches

The patchset is also available in:
  git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
  perf/build

All tests/make tests passed.

Any feedback from ARM guys would be great ;-)


Since it's actually small portion of kbuild that perf needs,
I realized it's actually better to steal it than 'reconfigure'
kbuild to be usable for perf.

Also this patchset is kind of incremental version of the latest:
  perf tools: Add kbuild support into Makefile.kbuild
so it should be easier to review.

NOTE I couldn't find any copyright/credit messages in the kbuild
system, but would be happy to include it if someone suggests one.

The stolen parts are in files:
  Makefile.kbuild
  Build.include

The idea and more details are explained in the 'Documentation/Build'
file. The basic idea is the same as in kbuild system, with some minor
changes to allow for multiple binaries build definitions.

User provides 'Build' files with objects definitions like:
  perf-y += perf.o
  perf-y += builtin-bench.o
  ...

  libperf-y += util/
  ...

and the build framework outputs files:
  perf-in.o
  libperf-in.o

which are then linked into appropriate binaries/libraries.
(perf libperf.a libperf-gtk.so)

Also now we have the full dependency check ((gcc -Wp,-MD,... stuff) and
build command line is stored/checked automatically by the build system.

thanks for comments,
jirka


Signed-off-by: Jiri Olsa <jo...@kernel.org>
Cc: Adrian Hunter <adrian.hun...@intel.com>
Cc: Alexis Berlemont <alexis.berlem...@gmail.com>
Cc: Andi Kleen <a...@linux.intel.com>
Cc: Anton Blanchard <an...@samba.org>
Cc: Arnaldo Carvalho de Melo <a...@redhat.com>
Cc: Borislav Petkov <b...@alien8.de>
Cc: Borislav Petkov <b...@suse.de>
Cc: Cody P Schafer <c...@linux.vnet.ibm.com>
Cc: Corey Ashford <cjash...@linux.vnet.ibm.com>
Cc: David Ahern <dsah...@gmail.com>
Cc: Florian Fainelli <flor...@openwrt.org>
Cc: Frederic Weisbecker <fweis...@gmail.com>
Cc: Ingo Molnar <mi...@kernel.org>
Cc: Jan Heylen <heyl...@gmail.com>
Cc: Mark Salter <msal...@redhat.com>
Cc: Namhyung Kim <namhy...@kernel.org>
Cc: Paul Mackerras <pau...@samba.org>
Cc: Peter Zijlstra <pet...@infradead.org>
Cc: S. Lockwood-Childs <s...@vctlabs.com>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Sasha Levin <sasha.le...@oracle.com>
Cc: Stephane Eranian <eran...@google.com>
Cc: Steven Rostedt <rost...@goodmis.org>
Cc: Sukadev Bhattiprolu <suka...@linux.vnet.ibm.com>
Cc: Will Deacon <will.dea...@arm.com>
---
Jiri Olsa (36):
      tools build: Add new build support
      tools build: Add detected config support
      tools build: Add subdir support
      perf tools: Remove api fs object from python build
      perf build: Disable make's built-in rules
      perf build: Add bench objects building
      perf build: Add tests objects building
      perf build: Add builtin objects building
      perf build: Add libperf objects building
      perf build: Add probe objects building
      perf build: Add dwarf objects building
      perf build: Add dwarf unwind objects building
      perf build: Add ui objects building
      perf build: Add slang objects building
      perf build: Add gtk objects building
      perf build: Add scripts objects building
      perf build: Add perf regs objects building
      perf build: Add zlib objects building
      perf build: Add perf.o object building
      perf build: Add arch x86 objects building
      perf build: Add arch arm objects building
      perf build: Add arch arm64 objects building
      perf build: Add arch powerpc objects building
      perf build: Add arch s390 objects building
      perf build: Add arch sh objects building
      perf build: Add arch sparc objects building
      perf build: Add single target build framework support
      perf build: Remove directory dependency rules
      perf build: Remove uneeded variables
      perf build: Remove PERF-CFLAGS file
      perf build: Add build documentation
      tools lib api: Use tools build framework
      tools lib api: Rename libapikfs.a to libapi.a
      tools lib traceevent: Use tools build framework
      tools lib lockdep: Use tools build framework
      perf build: Display make commands on V=1

 tools/build/Build.include                       |  74 +++
 tools/build/Documentation/Build.txt             | 132 ++++++
 tools/build/Makefile.build                      | 125 +++++
 tools/build/tests/ex/Build                      |   8 +
 tools/build/tests/ex/Makefile                   |  23 +
 tools/build/tests/ex/a.c                        |   5 +
 tools/build/tests/ex/arch/Build                 |   2 +
 tools/build/tests/ex/arch/e.c                   |   5 +
 tools/build/tests/ex/arch/f.c                   |   5 +
 tools/build/tests/ex/b.c                        |   5 +
 tools/build/tests/ex/c.c                        |   5 +
 tools/build/tests/ex/d.c                        |   5 +
 tools/build/tests/ex/empty/Build                |   0
 tools/build/tests/ex/ex.c                       |  19 +
 tools/build/tests/run.sh                        |  42 ++
 tools/lib/api/Build                             |   2 +
 tools/lib/api/Makefile                          |  57 +--
 tools/lib/api/fd/Build                          |   1 +
 tools/lib/api/fs/Build                          |   2 +
 tools/lib/lockdep/Build                         |   1 +
 tools/lib/lockdep/Makefile                      | 132 +-----
 tools/lib/traceevent/Build                      |  17 +
 tools/lib/traceevent/Makefile                   | 161 ++-----
 tools/perf/Build                                |  43 ++
 tools/perf/Documentation/Build.txt              |  49 ++
 tools/perf/MANIFEST                             |   1 +
 tools/perf/Makefile.perf                        | 605 +++---------------------
 tools/perf/arch/Build                           |   2 +
 tools/perf/arch/arm/Build                       |   2 +
 tools/perf/arch/arm/Makefile                    |  11 -
 tools/perf/arch/arm/tests/Build                 |   2 +
 tools/perf/arch/arm/util/Build                  |   4 +
 tools/perf/arch/arm64/Build                     |   1 +
 tools/perf/arch/arm64/Makefile                  |   4 -
 tools/perf/arch/arm64/util/Build                |   2 +
 tools/perf/arch/powerpc/Build                   |   1 +
 tools/perf/arch/powerpc/Makefile                |   3 -
 tools/perf/arch/powerpc/util/Build              |   4 +
 tools/perf/arch/s390/Build                      |   1 +
 tools/perf/arch/s390/Makefile                   |   3 -
 tools/perf/arch/s390/util/Build                 |   4 +
 tools/perf/arch/sh/Build                        |   1 +
 tools/perf/arch/sh/Makefile                     |   1 -
 tools/perf/arch/sh/util/Build                   |   1 +
 tools/perf/arch/sparc/Build                     |   1 +
 tools/perf/arch/sparc/Makefile                  |   1 -
 tools/perf/arch/sparc/util/Build                |   1 +
 tools/perf/arch/x86/Build                       |   2 +
 tools/perf/arch/x86/Makefile                    |  15 -
 tools/perf/arch/x86/tests/Build                 |   2 +
 tools/perf/arch/x86/util/Build                  |   8 +
 tools/perf/bench/Build                          |  11 +
 tools/perf/config/Makefile                      |  41 ++
 tools/perf/scripts/Build                        |   2 +
 tools/perf/scripts/perl/Perf-Trace-Util/Build   |   3 +
 tools/perf/scripts/python/Perf-Trace-Util/Build |   3 +
 tools/perf/tests/Build                          |  42 ++
 tools/perf/ui/Build                             |  14 +
 tools/perf/ui/browsers/Build                    |  10 +
 tools/perf/ui/gtk/Build                         |   9 +
 tools/perf/ui/tui/Build                         |   4 +
 tools/perf/util/Build                           | 142 ++++++
 tools/perf/util/python-ext-sources              |   1 -
 tools/perf/util/scripting-engines/Build         |   6 +
 64 files changed, 1058 insertions(+), 833 deletions(-)
 create mode 100644 tools/build/Build.include
 create mode 100644 tools/build/Documentation/Build.txt
 create mode 100644 tools/build/Makefile.build
 create mode 100644 tools/build/tests/ex/Build
 create mode 100644 tools/build/tests/ex/Makefile
 create mode 100644 tools/build/tests/ex/a.c
 create mode 100644 tools/build/tests/ex/arch/Build
 create mode 100644 tools/build/tests/ex/arch/e.c
 create mode 100644 tools/build/tests/ex/arch/f.c
 create mode 100644 tools/build/tests/ex/b.c
 create mode 100644 tools/build/tests/ex/c.c
 create mode 100644 tools/build/tests/ex/d.c
 create mode 100644 tools/build/tests/ex/empty/Build
 create mode 100644 tools/build/tests/ex/ex.c
 create mode 100755 tools/build/tests/run.sh
 create mode 100644 tools/lib/api/Build
 create mode 100644 tools/lib/api/fd/Build
 create mode 100644 tools/lib/api/fs/Build
 create mode 100644 tools/lib/lockdep/Build
 create mode 100644 tools/lib/traceevent/Build
 create mode 100644 tools/perf/Build
 create mode 100644 tools/perf/Documentation/Build.txt
 create mode 100644 tools/perf/arch/Build
 create mode 100644 tools/perf/arch/arm/Build
 create mode 100644 tools/perf/arch/arm/tests/Build
 create mode 100644 tools/perf/arch/arm/util/Build
 create mode 100644 tools/perf/arch/arm64/Build
 create mode 100644 tools/perf/arch/arm64/util/Build
 create mode 100644 tools/perf/arch/powerpc/Build
 create mode 100644 tools/perf/arch/powerpc/util/Build
 create mode 100644 tools/perf/arch/s390/Build
 create mode 100644 tools/perf/arch/s390/util/Build
 create mode 100644 tools/perf/arch/sh/Build
 create mode 100644 tools/perf/arch/sh/util/Build
 create mode 100644 tools/perf/arch/sparc/Build
 create mode 100644 tools/perf/arch/sparc/util/Build
 create mode 100644 tools/perf/arch/x86/Build
 create mode 100644 tools/perf/arch/x86/tests/Build
 create mode 100644 tools/perf/arch/x86/util/Build
 create mode 100644 tools/perf/bench/Build
 create mode 100644 tools/perf/scripts/Build
 create mode 100644 tools/perf/scripts/perl/Perf-Trace-Util/Build
 create mode 100644 tools/perf/scripts/python/Perf-Trace-Util/Build
 create mode 100644 tools/perf/tests/Build
 create mode 100644 tools/perf/ui/Build
 create mode 100644 tools/perf/ui/browsers/Build
 create mode 100644 tools/perf/ui/gtk/Build
 create mode 100644 tools/perf/ui/tui/Build
 create mode 100644 tools/perf/util/Build
 create mode 100644 tools/perf/util/scripting-engines/Build
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to