Re: [PATCH v1] samples/bpf: Add a .gitignore for binaries

From: Alexander Alemayhu
Date: Wed May 17 2017 - 04:19:02 EST


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