xref: /openbmc/linux/tools/bpf/Makefile (revision 33a57ce0a54d498275f432db04850001175dfdfa)
12a171788SDavid S. Miller# SPDX-License-Identifier: GPL-2.0
25a8997f2SJiri Bencinclude ../scripts/Makefile.include
35a8997f2SJiri Benc
4fde68c5bSJiri Bencprefix ?= /usr/local
5a92bb546SJakub Kicinski
6a92bb546SJakub KicinskiLEX = flex
7a92bb546SJakub KicinskiYACC = bison
871bb428fSJakub KicinskiMAKE = make
9fde68c5bSJiri BencINSTALL ?= install
10a92bb546SJakub Kicinski
11a92bb546SJakub KicinskiCFLAGS += -Wall -O2
125a8997f2SJiri BencCFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/include/uapi -I$(srctree)/include
13a92bb546SJakub Kicinski
1455d554f5SShuah Khan# This will work when bpf is built in tools env. where srctree
1555d554f5SShuah Khan# isn't set and when invoked from selftests build, where srctree
1655d554f5SShuah Khan# is set to ".". building_out_of_srctree is undefined for in srctree
1755d554f5SShuah Khan# builds
18a89b2cbfSQuentin Monnetifeq ($(srctree),)
19a89b2cbfSQuentin Monnetupdate_srctree := 1
20a89b2cbfSQuentin Monnetendif
2155d554f5SShuah Khanifndef building_out_of_srctree
22a89b2cbfSQuentin Monnetupdate_srctree := 1
23a89b2cbfSQuentin Monnetendif
24a89b2cbfSQuentin Monnetifeq ($(update_srctree),1)
25fb982666SRoman Gushchinsrctree := $(patsubst %/,%,$(dir $(CURDIR)))
26fb982666SRoman Gushchinsrctree := $(patsubst %/,%,$(dir $(srctree)))
27fb982666SRoman Gushchinendif
28fb982666SRoman Gushchin
29a50b7f8cSJiri Bencifeq ($(V),1)
30a50b7f8cSJiri Benc  Q =
31a50b7f8cSJiri Bencelse
32a50b7f8cSJiri Benc  Q = @
33a50b7f8cSJiri Bencendif
34a50b7f8cSJiri Benc
35fb982666SRoman GushchinFEATURE_USER = .bpf
36fb982666SRoman GushchinFEATURE_TESTS = libbfd disassembler-four-args
37fb982666SRoman GushchinFEATURE_DISPLAY = libbfd disassembler-four-args
38fb982666SRoman Gushchin
39fb982666SRoman Gushchincheck_feat := 1
409c01546dSAndrii NakryikoNON_CHECK_FEAT_TARGETS := clean bpftool_clean runqslower_clean
41fb982666SRoman Gushchinifdef MAKECMDGOALS
42fb982666SRoman Gushchinifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),)
43fb982666SRoman Gushchin  check_feat := 0
44fb982666SRoman Gushchinendif
45fb982666SRoman Gushchinendif
46fb982666SRoman Gushchin
47fb982666SRoman Gushchinifeq ($(check_feat),1)
48fb982666SRoman Gushchinifeq ($(FEATURES_DUMP),)
49fb982666SRoman Gushchininclude $(srctree)/tools/build/Makefile.feature
50fb982666SRoman Gushchinelse
51fb982666SRoman Gushchininclude $(FEATURES_DUMP)
52fb982666SRoman Gushchinendif
53fb982666SRoman Gushchinendif
54fb982666SRoman Gushchin
55fb982666SRoman Gushchinifeq ($(feature-disassembler-four-args), 1)
56fb982666SRoman GushchinCFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
57fb982666SRoman Gushchinendif
58fb982666SRoman Gushchin
595a8997f2SJiri Benc$(OUTPUT)%.yacc.c: $(srctree)/tools/bpf/%.y
60a50b7f8cSJiri Benc	$(QUIET_BISON)$(YACC) -o $@ -d $<
61a92bb546SJakub Kicinski
625a8997f2SJiri Benc$(OUTPUT)%.lex.c: $(srctree)/tools/bpf/%.l
63a50b7f8cSJiri Benc	$(QUIET_FLEX)$(LEX) -o $@ $<
64a92bb546SJakub Kicinski
655a8997f2SJiri Benc$(OUTPUT)%.o: $(srctree)/tools/bpf/%.c
66d70a6be1SIlya Leoshkevich	$(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $<
67a50b7f8cSJiri Benc
68a50b7f8cSJiri Benc$(OUTPUT)%.yacc.o: $(OUTPUT)%.yacc.c
69d70a6be1SIlya Leoshkevich	$(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $<
70a50b7f8cSJiri Benc$(OUTPUT)%.lex.o: $(OUTPUT)%.lex.c
71d70a6be1SIlya Leoshkevich	$(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $<
72a92bb546SJakub Kicinski
736c071008SJiri BencPROGS = $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg $(OUTPUT)bpf_asm
746c071008SJiri Benc
759c01546dSAndrii Nakryikoall: $(PROGS) bpftool runqslower
76a92bb546SJakub Kicinski
775a8997f2SJiri Benc$(OUTPUT)bpf_jit_disasm: CFLAGS += -DPACKAGE='bpf_jit_disasm'
785a8997f2SJiri Benc$(OUTPUT)bpf_jit_disasm: $(OUTPUT)bpf_jit_disasm.o
79a50b7f8cSJiri Benc	$(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ -lopcodes -lbfd -ldl
80a92bb546SJakub Kicinski
815a8997f2SJiri Benc$(OUTPUT)bpf_dbg: $(OUTPUT)bpf_dbg.o
82a50b7f8cSJiri Benc	$(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ -lreadline
835a8997f2SJiri Benc
845a8997f2SJiri Benc$(OUTPUT)bpf_asm: $(OUTPUT)bpf_asm.o $(OUTPUT)bpf_exp.yacc.o $(OUTPUT)bpf_exp.lex.o
85a50b7f8cSJiri Benc	$(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^
86a50b7f8cSJiri Benc
87ef8ba83bSJiri Benc$(OUTPUT)bpf_exp.lex.c: $(OUTPUT)bpf_exp.yacc.c
889c299a32SJohn Fastabend$(OUTPUT)bpf_exp.yacc.o: $(OUTPUT)bpf_exp.yacc.c
899c299a32SJohn Fastabend$(OUTPUT)bpf_exp.lex.o: $(OUTPUT)bpf_exp.lex.c
90a92bb546SJakub Kicinski
919c01546dSAndrii Nakryikoclean: bpftool_clean runqslower_clean
92a50b7f8cSJiri Benc	$(call QUIET_CLEAN, bpf-progs)
93fbdb620bSQuentin Monnet	$(Q)$(RM) -r -- $(OUTPUT)*.o $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg \
945a8997f2SJiri Benc	       $(OUTPUT)bpf_asm $(OUTPUT)bpf_exp.yacc.* $(OUTPUT)bpf_exp.lex.*
95cc5b3403SJakub Kicinski	$(call QUIET_CLEAN, core-gen)
96fbdb620bSQuentin Monnet	$(Q)$(RM) -- $(OUTPUT)FEATURE-DUMP.bpf
97fbdb620bSQuentin Monnet	$(Q)$(RM) -r -- $(OUTPUT)feature
98a92bb546SJakub Kicinski
999c01546dSAndrii Nakryikoinstall: $(PROGS) bpftool_install runqslower_install
100a50b7f8cSJiri Benc	$(call QUIET_INSTALL, bpf_jit_disasm)
101a50b7f8cSJiri Benc	$(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/bin
102a50b7f8cSJiri Benc	$(Q)$(INSTALL) $(OUTPUT)bpf_jit_disasm $(DESTDIR)$(prefix)/bin/bpf_jit_disasm
103a50b7f8cSJiri Benc	$(call QUIET_INSTALL, bpf_dbg)
104a50b7f8cSJiri Benc	$(Q)$(INSTALL) $(OUTPUT)bpf_dbg $(DESTDIR)$(prefix)/bin/bpf_dbg
105a50b7f8cSJiri Benc	$(call QUIET_INSTALL, bpf_asm)
106a50b7f8cSJiri Benc	$(Q)$(INSTALL) $(OUTPUT)bpf_asm $(DESTDIR)$(prefix)/bin/bpf_asm
10771bb428fSJakub Kicinski
10871bb428fSJakub Kicinskibpftool:
10958416c37SJiri Benc	$(call descend,bpftool)
11071bb428fSJakub Kicinski
11171bb428fSJakub Kicinskibpftool_install:
11258416c37SJiri Benc	$(call descend,bpftool,install)
11371bb428fSJakub Kicinski
11471bb428fSJakub Kicinskibpftool_clean:
11558416c37SJiri Benc	$(call descend,bpftool,clean)
11671bb428fSJakub Kicinski
1179c01546dSAndrii Nakryikorunqslower:
1189c01546dSAndrii Nakryiko	$(call descend,runqslower)
1199c01546dSAndrii Nakryiko
1209c01546dSAndrii Nakryikorunqslower_install:
1219c01546dSAndrii Nakryiko	$(call descend,runqslower,install)
1229c01546dSAndrii Nakryiko
1239c01546dSAndrii Nakryikorunqslower_clean:
1249c01546dSAndrii Nakryiko	$(call descend,runqslower,clean)
1259c01546dSAndrii Nakryiko
126*33a57ce0SJiri Olsaresolve_btfids:
127*33a57ce0SJiri Olsa	$(call descend,resolve_btfids)
128*33a57ce0SJiri Olsa
129*33a57ce0SJiri Olsaresolve_btfids_clean:
130*33a57ce0SJiri Olsa	$(call descend,resolve_btfids,clean)
131*33a57ce0SJiri Olsa
1329c01546dSAndrii Nakryiko.PHONY: all install clean bpftool bpftool_install bpftool_clean \
133*33a57ce0SJiri Olsa	runqslower runqslower_install runqslower_clean \
134*33a57ce0SJiri Olsa	resolve_btfids resolve_btfids_clean
135