xref: /linux-6.15/samples/bpf/Makefile (revision 5c7fc2d2)
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
11*5c7fc2d2SAlexei Starovoitovhostprogs-y += tracex3
123c731ebaSAlexei Starovoitov
133c731ebaSAlexei Starovoitovtest_verifier-objs := test_verifier.o libbpf.o
14ffb65f27SAlexei Starovoitovtest_maps-objs := test_maps.o libbpf.o
1503f4723eSAlexei Starovoitovsock_example-objs := sock_example.o libbpf.o
16a8085782SAlexei Starovoitovsockex1-objs := bpf_load.o libbpf.o sockex1_user.o
17fbe33108SAlexei Starovoitovsockex2-objs := bpf_load.o libbpf.o sockex2_user.o
18b896c4f9SAlexei Starovoitovtracex1-objs := bpf_load.o libbpf.o tracex1_user.o
19d822a192SAlexei Starovoitovtracex2-objs := bpf_load.o libbpf.o tracex2_user.o
20*5c7fc2d2SAlexei Starovoitovtracex3-objs := bpf_load.o libbpf.o tracex3_user.o
213c731ebaSAlexei Starovoitov
223c731ebaSAlexei Starovoitov# Tell kbuild to always build the programs
233c731ebaSAlexei Starovoitovalways := $(hostprogs-y)
24a8085782SAlexei Starovoitovalways += sockex1_kern.o
25fbe33108SAlexei Starovoitovalways += sockex2_kern.o
26b896c4f9SAlexei Starovoitovalways += tracex1_kern.o
27d822a192SAlexei Starovoitovalways += tracex2_kern.o
28*5c7fc2d2SAlexei Starovoitovalways += tracex3_kern.o
293c731ebaSAlexei Starovoitov
303c731ebaSAlexei StarovoitovHOSTCFLAGS += -I$(objtree)/usr/include
31a8085782SAlexei Starovoitov
32a8085782SAlexei StarovoitovHOSTCFLAGS_bpf_load.o += -I$(objtree)/usr/include -Wno-unused-variable
33a8085782SAlexei StarovoitovHOSTLOADLIBES_sockex1 += -lelf
34fbe33108SAlexei StarovoitovHOSTLOADLIBES_sockex2 += -lelf
35b896c4f9SAlexei StarovoitovHOSTLOADLIBES_tracex1 += -lelf
36d822a192SAlexei StarovoitovHOSTLOADLIBES_tracex2 += -lelf
37*5c7fc2d2SAlexei StarovoitovHOSTLOADLIBES_tracex3 += -lelf
38a8085782SAlexei Starovoitov
39a8085782SAlexei Starovoitov# point this to your LLVM backend with bpf support
40a8085782SAlexei StarovoitovLLC=$(srctree)/tools/bpf/llvm/bld/Debug+Asserts/bin/llc
41a8085782SAlexei Starovoitov
42a8085782SAlexei Starovoitov%.o: %.c
43a8085782SAlexei Starovoitov	clang $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS) \
44a8085782SAlexei Starovoitov		-D__KERNEL__ -Wno-unused-value -Wno-pointer-sign \
45a8085782SAlexei Starovoitov		-O2 -emit-llvm -c $< -o -| $(LLC) -march=bpf -filetype=obj -o $@
46