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