xref: /linux/samples/bpf/Makefile (revision b88c06e36dcb9b4ae285f7821f62d68dc34b25d3)
13c731ebaSAlexei Starovoitov# kbuild trick to avoid linker error. Can be omitted if a module is built.
23c731ebaSAlexei Starovoitovobj- := dummy.o
33c731ebaSAlexei Starovoitov
43c731ebaSAlexei Starovoitov# List of programs to build
5ffb65f27SAlexei Starovoitovhostprogs-y := test_verifier test_maps
603f4723eSAlexei Starovoitovhostprogs-y += sock_example
7a8085782SAlexei Starovoitovhostprogs-y += sockex1
8fbe33108SAlexei Starovoitovhostprogs-y += sockex2
9b896c4f9SAlexei Starovoitovhostprogs-y += tracex1
10d822a192SAlexei Starovoitovhostprogs-y += tracex2
115c7fc2d2SAlexei Starovoitovhostprogs-y += tracex3
129811e353SAlexei Starovoitovhostprogs-y += tracex4
133c731ebaSAlexei Starovoitov
143c731ebaSAlexei Starovoitovtest_verifier-objs := test_verifier.o libbpf.o
15ffb65f27SAlexei Starovoitovtest_maps-objs := test_maps.o libbpf.o
1603f4723eSAlexei Starovoitovsock_example-objs := sock_example.o libbpf.o
17a8085782SAlexei Starovoitovsockex1-objs := bpf_load.o libbpf.o sockex1_user.o
18fbe33108SAlexei Starovoitovsockex2-objs := bpf_load.o libbpf.o sockex2_user.o
19b896c4f9SAlexei Starovoitovtracex1-objs := bpf_load.o libbpf.o tracex1_user.o
20d822a192SAlexei Starovoitovtracex2-objs := bpf_load.o libbpf.o tracex2_user.o
215c7fc2d2SAlexei Starovoitovtracex3-objs := bpf_load.o libbpf.o tracex3_user.o
229811e353SAlexei Starovoitovtracex4-objs := bpf_load.o libbpf.o tracex4_user.o
233c731ebaSAlexei Starovoitov
243c731ebaSAlexei Starovoitov# Tell kbuild to always build the programs
253c731ebaSAlexei Starovoitovalways := $(hostprogs-y)
26a8085782SAlexei Starovoitovalways += sockex1_kern.o
27fbe33108SAlexei Starovoitovalways += sockex2_kern.o
28b896c4f9SAlexei Starovoitovalways += tracex1_kern.o
29d822a192SAlexei Starovoitovalways += tracex2_kern.o
305c7fc2d2SAlexei Starovoitovalways += tracex3_kern.o
319811e353SAlexei Starovoitovalways += tracex4_kern.o
3291bc4822SAlexei Starovoitovalways += tcbpf1_kern.o
333c731ebaSAlexei Starovoitov
343c731ebaSAlexei StarovoitovHOSTCFLAGS += -I$(objtree)/usr/include
35a8085782SAlexei Starovoitov
36a8085782SAlexei StarovoitovHOSTCFLAGS_bpf_load.o += -I$(objtree)/usr/include -Wno-unused-variable
37a8085782SAlexei StarovoitovHOSTLOADLIBES_sockex1 += -lelf
38fbe33108SAlexei StarovoitovHOSTLOADLIBES_sockex2 += -lelf
39b896c4f9SAlexei StarovoitovHOSTLOADLIBES_tracex1 += -lelf
40d822a192SAlexei StarovoitovHOSTLOADLIBES_tracex2 += -lelf
415c7fc2d2SAlexei StarovoitovHOSTLOADLIBES_tracex3 += -lelf
429811e353SAlexei StarovoitovHOSTLOADLIBES_tracex4 += -lelf -lrt
43a8085782SAlexei Starovoitov
44a8085782SAlexei Starovoitov# point this to your LLVM backend with bpf support
45a8085782SAlexei StarovoitovLLC=$(srctree)/tools/bpf/llvm/bld/Debug+Asserts/bin/llc
46a8085782SAlexei Starovoitov
47*b88c06e3SBrenden Blanco$(obj)/%.o: $(src)/%.c
48a8085782SAlexei Starovoitov	clang $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS) \
49a8085782SAlexei Starovoitov		-D__KERNEL__ -Wno-unused-value -Wno-pointer-sign \
50a8085782SAlexei Starovoitov		-O2 -emit-llvm -c $< -o -| $(LLC) -march=bpf -filetype=obj -o $@
51