selftests/bpf: Makefile fix "missing" headers on build with -idirafter
authorSirio Balmelli <sirio@b-ad.ch>
Mon, 21 May 2018 07:00:03 +0000 (09:00 +0200)
committerDaniel Borkmann <daniel@iogearbox.net>
Wed, 23 May 2018 12:32:09 +0000 (14:32 +0200)
commit167381f3eac0d9db82ad2c565048bfea8fb01574
tree899d008f78649be357a1f8cb5c49100694f3ab67
parentff4fb475cea8580eb0490d0a5d55ee02d95d26e1
selftests/bpf: Makefile fix "missing" headers on build with -idirafter

Selftests fail to build on several distros/architectures because of
missing headers files.

On a Ubuntu/x86_64 some missing headers are:
asm/byteorder.h, asm/socket.h, asm/sockios.h

On a Debian/arm32 build already fails at sys/cdefs.h

In both cases, these already exist in /usr/include/<arch-specific-dir>,
but Clang does not include these when using '-target bpf' flag,
since it is no longer compiling against the host architecture.

The solution is to:

- run Clang without '-target bpf' and extract the include chain for the
current system

- add these to the bpf build with '-idirafter'

The choice of -idirafter is to catch this error without injecting
unexpected include behavior: if an arch-specific tree is built
for bpf in the future, this will be correctly found by Clang.

Signed-off-by: Sirio Balmelli <sirio@b-ad.ch>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
tools/testing/selftests/bpf/Makefile