xref: /linux/tools/testing/selftests/bpf/Makefile (revision f09b2e382e9a7053e3ae6f2fb6535efd5760cf5d)
1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
2618e165bSHendrik Brueckner
3d498f871SMickaël SalaünLIBDIR := ../../../lib
4e8f1f34aSZi Shen LimBPFDIR := $(LIBDIR)/bpf
502ea80b1SDaniel BorkmannAPIDIR := ../../../include/uapi
602ea80b1SDaniel BorkmannGENDIR := ../../../../include/generated
702ea80b1SDaniel BorkmannGENHDR := $(GENDIR)/autoconf.h
8d498f871SMickaël Salaün
902ea80b1SDaniel Borkmannifneq ($(wildcard $(GENHDR)),)
1002ea80b1SDaniel Borkmann  GENFLAGS := -DHAVE_GENHDR
1102ea80b1SDaniel Borkmannendif
1202ea80b1SDaniel Borkmann
13720f228eSDaniel BorkmannCFLAGS += -Wall -O2 -I$(APIDIR) -I$(LIBDIR) -I$(GENDIR) $(GENFLAGS) -I../../../include
14af32efeeSYonghong SongLDLIBS += -lcap -lelf -lrt -lpthread
155aa5bd14SDaniel Borkmann
16*f09b2e38SJesper Dangaard Brouer# Order correspond to 'make run_tests' order
1718b3ad90SDavid S. MillerTEST_GEN_PROGS = test_verifier test_tag test_maps test_lru_map test_lpm_map test_progs \
18d6d4f60cSLawrence Brakmo	test_align test_verifier_log test_dev_cgroup test_tcpbpf_user
196882804cSAlexei Starovoitov
2018f3d6beSYonghong SongTEST_GEN_FILES = test_pkt_access.o test_xdp.o test_l4lb.o test_tcp_estats.o test_obj_id.o \
2122c88526SDaniel Borkmann	test_pkt_md_access.o test_xdp_redirect.o test_xdp_meta.o sockmap_parse_prog.o     \
223bc35c63SAlexei Starovoitov	sockmap_verdict_prog.o dev_cgroup.o sample_ret0.o test_tracepoint.o \
237fedbb7cSJakub Kicinski	test_l4lb_noinline.o test_xdp_noinline.o test_stacktrace_map.o \
24*f09b2e38SJesper Dangaard Brouer	sample_map_ret0.o test_tcpbpf_kern.o
255aa5bd14SDaniel Borkmann
26*f09b2e38SJesper Dangaard Brouer# Order correspond to 'make run_tests' order
27*f09b2e38SJesper Dangaard BrouerTEST_PROGS := test_kmod.sh \
28*f09b2e38SJesper Dangaard Brouer	test_libbpf.sh \
29*f09b2e38SJesper Dangaard Brouer	test_xdp_redirect.sh \
30*f09b2e38SJesper Dangaard Brouer	test_xdp_meta.sh \
31417ec264SJakub Kicinski	test_offload.py
325aa5bd14SDaniel Borkmann
33*f09b2e38SJesper Dangaard Brouer# Compile but not part of 'make run_tests'
34*f09b2e38SJesper Dangaard BrouerTEST_GEN_PROGS_EXTENDED = test_libbpf_open
35*f09b2e38SJesper Dangaard Brouer
36e8f1f34aSZi Shen Liminclude ../lib.mk
371da8ac7cSAlexei Starovoitov
3862a06994SYonghong SongBPFOBJ := $(OUTPUT)/libbpf.a cgroup_helpers.c
39e8f1f34aSZi Shen Lim
40e8f1f34aSZi Shen Lim$(TEST_GEN_PROGS): $(BPFOBJ)
41e8f1f34aSZi Shen Lim
42*f09b2e38SJesper Dangaard Brouer$(TEST_GEN_PROGS_EXTENDED): $(OUTPUT)/libbpf.a
43*f09b2e38SJesper Dangaard Brouer
44e8f1f34aSZi Shen Lim.PHONY: force
45d498f871SMickaël Salaün
46d498f871SMickaël Salaün# force a rebuild of BPFOBJ when its dependencies are updated
47d498f871SMickaël Salaünforce:
48d498f871SMickaël Salaün
49d498f871SMickaël Salaün$(BPFOBJ): force
50e8f1f34aSZi Shen Lim	$(MAKE) -C $(BPFDIR) OUTPUT=$(OUTPUT)/
516882804cSAlexei Starovoitov
526882804cSAlexei StarovoitovCLANG ?= clang
5322c88526SDaniel BorkmannLLC   ?= llc
5422c88526SDaniel Borkmann
55cd95a892SQuentin MonnetPROBE := $(shell $(LLC) -march=bpf -mcpu=probe -filetype=null /dev/null 2>&1)
5622c88526SDaniel Borkmann
5722c88526SDaniel Borkmann# Let newer LLVM versions transparently probe the kernel for availability
5822c88526SDaniel Borkmann# of full BPF instruction set.
5922c88526SDaniel Borkmannifeq ($(PROBE),)
6022c88526SDaniel Borkmann  CPU ?= probe
6122c88526SDaniel Borkmannelse
6222c88526SDaniel Borkmann  CPU ?= generic
6322c88526SDaniel Borkmannendif
646882804cSAlexei Starovoitov
653bc35c63SAlexei StarovoitovCLANG_FLAGS = -I. -I./include/uapi -I../../../include/uapi \
663bc35c63SAlexei Starovoitov	      -Wno-compare-distinct-pointer-types
673bc35c63SAlexei Starovoitov
683bc35c63SAlexei Starovoitov$(OUTPUT)/test_l4lb_noinline.o: CLANG_FLAGS += -fno-inline
69b0b04fc4SAlexei Starovoitov$(OUTPUT)/test_xdp_noinline.o: CLANG_FLAGS += -fno-inline
703bc35c63SAlexei Starovoitov
7162a06994SYonghong Song$(OUTPUT)/%.o: %.c
723bc35c63SAlexei Starovoitov	$(CLANG) $(CLANG_FLAGS) \
7322c88526SDaniel Borkmann		 -O2 -target bpf -emit-llvm -c $< -o - |      \
7422c88526SDaniel Borkmann	$(LLC) -march=bpf -mcpu=$(CPU) -filetype=obj -o $@
75