On Tue, May 16, 2017 at 04:27:36PM -0700, David Ahern wrote: > > The problem stems from the fact that bpf samples do not really fall into > the 'hostprogs' category (see "4 Host Program support" in > Documentation/kbuild/makefiles.txt). Fixing samples/bpf to not rely on > it is the better long term solution. Building of tools/ for example does > not rely on it so there is an existing example of leveraging kernel > headers without the overhead. +1
I have looked into this but found it to be not easy and all attempts to change the Makefile has resulted in obscure errors :/ Getting clang to output in a different directory was easy[0], but I guess this is not the right approach either. Have you tried making the change? [0]: diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile index 6c7468eb3684..79268d310ba5 100644 --- a/samples/bpf/Makefile +++ b/samples/bpf/Makefile @@ -1,6 +1,13 @@ # kbuild trick to avoid linker error. Can be omitted if a module is built. obj- := dummy.o +ifndef O + OUTPUT := $(shell pwd)/samples/bpf/_build/ +else + OUTPUT := $O/ +endif +$(shell mkdir -p $(OUTPUT)) + # List of programs to build hostprogs-y := test_lru_dist hostprogs-y += sock_example @@ -190,4 +197,4 @@ $(obj)/%.o: $(src)/%.c -Wno-gnu-variable-sized-type-not-at-end \ -Wno-address-of-packed-member -Wno-tautological-compare \ -Wno-unknown-warning-option \ - -O2 -emit-llvm -c $< -o -| $(LLC) -march=bpf -filetype=obj -o $@ + -O2 -emit-llvm -c $< -o -| $(LLC) -march=bpf -filetype=obj -o $(OUTPUT)$(shell basename $@) -- Mit freundlichen Grüßen Alexander Alemayhu