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