Messages in this thread | | | Subject | Re: [PATCH] kbuild: do not add srctree to sysroot relative includes | From | Lars Persson <> | Date | Tue, 16 Aug 2016 14:22:35 +0200 |
| |
On 08/16/2016 01:59 PM, Michal Marek wrote: > On 2016-08-16 13:40, Lars Persson wrote: >> We need to filter out also -I=/path to allow sysroot relative >> include paths in the makefiles of external modules. >> >> Signed-off-by: Lars Persson <larper@axis.com> >> --- >> scripts/Kbuild.include | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include >> index 1792198..ffe5c6c 100644 >> --- a/scripts/Kbuild.include >> +++ b/scripts/Kbuild.include >> @@ -206,7 +206,7 @@ hdr-inst := -f $(srctree)/scripts/Makefile.headersinst obj >> # Prefix -I with $(srctree) if it is not an absolute path. >> # skip if -I has no parameter >> addtree = $(if $(patsubst -I%,%,$(1)), \ >> -$(if $(filter-out -I/% -I./% -I../%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1)),$(1))) >> +$(if $(filter-out -I/% -I./% -I../% -I=%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1)),$(1))) > > Hi Lars, > > Two questions: 1) Where is the -I=/... syntax documented? I could not > find it gcc docs.
You should find this in your gcc manual: If dir begins with "=", then the "=" will be replaced by the sysroot prefix; see --sysroot and -isysroot.
2) Why do these Makefiles use --sysroot at all? The > kernel does not use any system libraries and the host programs are > compiled for the host architecture.
One use-case is with the yocto build system. Suppose we have two kernel modules A and B. A installs header files into the sysroot that B will include.
- Lars
| |