path: root/tools/build
diff options
authorJiri Olsa <>2015-09-23 12:33:56 +0200
committerArnaldo Carvalho de Melo <>2015-09-28 15:50:54 -0300
commitab6201d09b1840c7ffcd6606c1d3dae68b8b3048 (patch)
tree0e23136aa28cd1fcc259c79e12ba0a1ff42f2b0e /tools/build
parentdc240c5dc2a02e335c5bcb50ad3a1274818c8609 (diff)
tools build: Add Makefile.include
To ease up build framework code setup for users. More shared code will be added in the following patches. Signed-off-by: Jiri Olsa <> Cc: David Ahern <> Cc: Namhyung Kim <> Cc: Peter Zijlstra <> Link: Signed-off-by: Arnaldo Carvalho de Melo <>
Diffstat (limited to 'tools/build')
3 files changed, 35 insertions, 14 deletions
diff --git a/tools/build/Documentation/Build.txt b/tools/build/Documentation/Build.txt
index aa5e092c4352..88824359d595 100644
--- a/tools/build/Documentation/Build.txt
+++ b/tools/build/Documentation/Build.txt
@@ -11,8 +11,9 @@ Unlike the kernel we don't have a single build object 'obj-y' list that where
we setup source objects, but we support more. This allows one 'Build' file to
carry a sources list for multiple build objects.
-a) Build framework makefiles
+Build framework makefiles
The build framework consists of 2 Makefiles:
@@ -23,7 +24,7 @@ While the 'Build.include' file contains just some generic definitions, the
'' file is the makefile used from the outside. It's
interface/usage is following:
- $ make -f tools/build/Makefile srctree=$(KSRC) dir=$(DIR) obj=$(OBJECT)
+ $ make -f tools/build/ srctree=$(KSRC) dir=$(DIR) obj=$(OBJECT)
@@ -38,8 +39,9 @@ called $(OBJECT)-in.o:
which includes all compiled sources described in 'Build' makefiles.
-a) Build makefiles
+Build makefiles
The user supplies 'Build' makefiles that contains a objects list, and connects
the build to nested directories.
@@ -95,8 +97,24 @@ It's only a matter of 2 single commands to create the final binaries:
You can check the 'ex' example in 'tools/build/tests/ex' for more details.
-b) Rules
+The tools/build/Makefile.include makefile could be included
+via user makefiles to get usefull definitions.
+It defines following interface:
+ - build macro definition:
+ build := -f $(srctree)/tools/build/ dir=. obj
+ to make it easier to invoke build like:
+ make $(build)=ex
The build framework provides standard compilation rules to handle .S and .c
@@ -104,8 +122,9 @@ compilation.
It's possible to include special rule if needed (like we do for flex or bison
code generation).
It's possible to alter the standard object C flags in the following way:
@@ -115,8 +134,8 @@ It's possible to alter the standard object C flags in the following way:
This C flags changes has the scope of the Build makefile they are defined in.
-d) Dependencies
For each built object file 'a.o' the '.a.cmd' is created and holds:
@@ -130,8 +149,8 @@ All existing '.cmd' files are included in the Build process to follow properly
the dependencies and trigger a rebuild when necessary.
-e) Single rules
+Single rules
It's possible to build single object file by choice, like:
diff --git a/tools/build/Makefile.include b/tools/build/Makefile.include
new file mode 100644
index 000000000000..91bc60616de5
--- /dev/null
+++ b/tools/build/Makefile.include
@@ -0,0 +1 @@
+build := -f $(srctree)/tools/build/ dir=. obj
diff --git a/tools/build/tests/ex/Makefile b/tools/build/tests/ex/Makefile
index 52d2476073a3..a8f596e37fd2 100644
--- a/tools/build/tests/ex/Makefile
+++ b/tools/build/tests/ex/Makefile
@@ -3,7 +3,8 @@ export CC := gcc
export LD := ld
export AR := ar
-build := -f $(srctree)/tools/build/ dir=. obj
+include $(srctree)/tools/build/Makefile.include
ex: ex-in.o libex-in.o
gcc -o $@ $^