xref: /openbmc/linux/tools/bpf/bpftool/Makefile (revision 29a9c10e)
171bb428fSJakub Kicinskiinclude ../../scripts/Makefile.include
271bb428fSJakub Kicinskiinclude ../../scripts/utilities.mak
371bb428fSJakub Kicinski
471bb428fSJakub Kicinskiifeq ($(srctree),)
571bb428fSJakub Kicinskisrctree := $(patsubst %/,%,$(dir $(CURDIR)))
671bb428fSJakub Kicinskisrctree := $(patsubst %/,%,$(dir $(srctree)))
771bb428fSJakub Kicinskisrctree := $(patsubst %/,%,$(dir $(srctree)))
871bb428fSJakub Kicinskiendif
971bb428fSJakub Kicinski
1071bb428fSJakub Kicinskiifeq ($(V),1)
1171bb428fSJakub Kicinski  Q =
1271bb428fSJakub Kicinskielse
1371bb428fSJakub Kicinski  Q = @
1471bb428fSJakub Kicinskiendif
1571bb428fSJakub Kicinski
1671bb428fSJakub KicinskiBPF_DIR = $(srctree)/tools/lib/bpf/
1771bb428fSJakub Kicinski
1871bb428fSJakub Kicinskiifneq ($(OUTPUT),)
1971bb428fSJakub Kicinski  BPF_PATH = $(OUTPUT)
2071bb428fSJakub Kicinskielse
2171bb428fSJakub Kicinski  BPF_PATH = $(BPF_DIR)
2271bb428fSJakub Kicinskiendif
2371bb428fSJakub Kicinski
2471bb428fSJakub KicinskiLIBBPF = $(BPF_PATH)libbpf.a
2571bb428fSJakub Kicinski
26c256429fSJakub KicinskiBPFTOOL_VERSION := $(shell make --no-print-directory -sC ../../.. kernelversion)
274bfe3bd3SRoman Gushchin
2871bb428fSJakub Kicinski$(LIBBPF): FORCE
29dc989d2cSJakub Kicinski	$(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) $(OUTPUT)libbpf.a
3071bb428fSJakub Kicinski
3171bb428fSJakub Kicinski$(LIBBPF)-clean:
3271bb428fSJakub Kicinski	$(call QUIET_CLEAN, libbpf)
3371bb428fSJakub Kicinski	$(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) clean >/dev/null
3471bb428fSJakub Kicinski
35658e85aaSQuentin Monnetprefix ?= /usr/local
36507e590dSQuentin Monnetbash_compdir ?= /usr/share/bash-completion/completions
3771bb428fSJakub Kicinski
3871bb428fSJakub KicinskiCC = gcc
3971bb428fSJakub Kicinski
4071bb428fSJakub KicinskiCFLAGS += -O2
4172ab55e9SJiri BencCFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wshadow -Wno-missing-field-initializers
42f412eed9SJakub KicinskiCFLAGS += -DPACKAGE='"bpftool"' -D__EXPORTED_HEADERS__ \
43f412eed9SJakub Kicinski	-I$(srctree)/kernel/bpf/ \
44f412eed9SJakub Kicinski	-I$(srctree)/tools/include \
45f412eed9SJakub Kicinski	-I$(srctree)/tools/include/uapi \
46f412eed9SJakub Kicinski	-I$(srctree)/tools/lib/bpf \
47f412eed9SJakub Kicinski	-I$(srctree)/tools/perf
484bfe3bd3SRoman GushchinCFLAGS += -DBPFTOOL_VERSION='"$(BPFTOOL_VERSION)"'
490ef6bf39SJiri Olsaifneq ($(EXTRA_CFLAGS),)
500ef6bf39SJiri OlsaCFLAGS += $(EXTRA_CFLAGS)
510ef6bf39SJiri Olsaendif
52c8506165SJiri Olsaifneq ($(EXTRA_LDFLAGS),)
53c8506165SJiri OlsaLDFLAGS += $(EXTRA_LDFLAGS)
54c8506165SJiri Olsaendif
550ef6bf39SJiri Olsa
5629a9c10eSStanislav FomichevLIBS = -lelf $(LIBBPF)
5771bb428fSJakub Kicinski
58658e85aaSQuentin MonnetINSTALL ?= install
59658e85aaSQuentin MonnetRM ?= rm -f
60658e85aaSQuentin Monnet
61fb982666SRoman GushchinFEATURE_USER = .bpftool
62531b014eSJakub KicinskiFEATURE_TESTS = libbfd disassembler-four-args reallocarray
63fb982666SRoman GushchinFEATURE_DISPLAY = libbfd disassembler-four-args
64fb982666SRoman Gushchin
65fb982666SRoman Gushchincheck_feat := 1
66fb982666SRoman GushchinNON_CHECK_FEAT_TARGETS := clean uninstall doc doc-clean doc-install doc-uninstall
67fb982666SRoman Gushchinifdef MAKECMDGOALS
68fb982666SRoman Gushchinifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),)
69fb982666SRoman Gushchin  check_feat := 0
70fb982666SRoman Gushchinendif
71fb982666SRoman Gushchinendif
72fb982666SRoman Gushchin
73fb982666SRoman Gushchinifeq ($(check_feat),1)
74fb982666SRoman Gushchinifeq ($(FEATURES_DUMP),)
75fb982666SRoman Gushchininclude $(srctree)/tools/build/Makefile.feature
76fb982666SRoman Gushchinelse
77fb982666SRoman Gushchininclude $(FEATURES_DUMP)
78fb982666SRoman Gushchinendif
79fb982666SRoman Gushchinendif
80fb982666SRoman Gushchin
81fb982666SRoman Gushchinifeq ($(feature-disassembler-four-args), 1)
82fb982666SRoman GushchinCFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
83fb982666SRoman Gushchinendif
84fb982666SRoman Gushchin
85531b014eSJakub Kicinskiifeq ($(feature-reallocarray), 0)
86531b014eSJakub KicinskiCFLAGS += -DCOMPAT_NEED_REALLOCARRAY
87531b014eSJakub Kicinskiendif
88531b014eSJakub Kicinski
8990126e3aSJakub Kicinskiinclude $(wildcard $(OUTPUT)*.d)
9071bb428fSJakub Kicinski
9171bb428fSJakub Kicinskiall: $(OUTPUT)bpftool
9271bb428fSJakub Kicinski
9329a9c10eSStanislav FomichevBFD_SRCS = jit_disasm.c
9429a9c10eSStanislav Fomichev
9529a9c10eSStanislav FomichevSRCS = $(filter-out $(BFD_SRCS),$(wildcard *.c))
9629a9c10eSStanislav Fomichev
9729a9c10eSStanislav Fomichevifeq ($(feature-libbfd),1)
9829a9c10eSStanislav FomichevCFLAGS += -DHAVE_LIBBFD_SUPPORT
9929a9c10eSStanislav FomichevSRCS += $(BFD_SRCS)
10029a9c10eSStanislav FomichevLIBS += -lbfd -lopcodes
10129a9c10eSStanislav Fomichevendif
10229a9c10eSStanislav Fomichev
103c9c35995SJakub KicinskiOBJS = $(patsubst %.c,$(OUTPUT)%.o,$(SRCS)) $(OUTPUT)disasm.o
104c9c35995SJakub Kicinski
105c9c35995SJakub Kicinski$(OUTPUT)disasm.o: $(srctree)/kernel/bpf/disasm.c
106c9c35995SJakub Kicinski	$(QUIET_CC)$(COMPILE.c) -MMD -o $@ $<
10771bb428fSJakub Kicinski
10871bb428fSJakub Kicinski$(OUTPUT)bpftool: $(OBJS) $(LIBBPF)
109c8506165SJiri Olsa	$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
11071bb428fSJakub Kicinski
11171bb428fSJakub Kicinski$(OUTPUT)%.o: %.c
11271bb428fSJakub Kicinski	$(QUIET_CC)$(COMPILE.c) -MMD -o $@ $<
11371bb428fSJakub Kicinski
11471bb428fSJakub Kicinskiclean: $(LIBBPF)-clean
11571bb428fSJakub Kicinski	$(call QUIET_CLEAN, bpftool)
116658e85aaSQuentin Monnet	$(Q)$(RM) $(OUTPUT)bpftool $(OUTPUT)*.o $(OUTPUT)*.d
117cc5b3403SJakub Kicinski	$(call QUIET_CLEAN, core-gen)
118cc5b3403SJakub Kicinski	$(Q)$(RM) $(OUTPUT)FEATURE-DUMP.bpftool
11971bb428fSJakub Kicinski
120658e85aaSQuentin Monnetinstall: $(OUTPUT)bpftool
121658e85aaSQuentin Monnet	$(call QUIET_INSTALL, bpftool)
122658e85aaSQuentin Monnet	$(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/sbin
123658e85aaSQuentin Monnet	$(Q)$(INSTALL) $(OUTPUT)bpftool $(DESTDIR)$(prefix)/sbin/bpftool
124658e85aaSQuentin Monnet	$(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(bash_compdir)
125658e85aaSQuentin Monnet	$(Q)$(INSTALL) -m 0644 bash-completion/bpftool $(DESTDIR)$(bash_compdir)
12671bb428fSJakub Kicinski
127d3244248SQuentin Monnetuninstall:
128d3244248SQuentin Monnet	$(call QUIET_UNINST, bpftool)
129d3244248SQuentin Monnet	$(Q)$(RM) $(DESTDIR)$(prefix)/sbin/bpftool
130d3244248SQuentin Monnet	$(Q)$(RM) $(DESTDIR)$(bash_compdir)/bpftool
131d3244248SQuentin Monnet
132ff69c21aSJakub Kicinskidoc:
133658e85aaSQuentin Monnet	$(call descend,Documentation)
134658e85aaSQuentin Monnet
135658e85aaSQuentin Monnetdoc-clean:
136658e85aaSQuentin Monnet	$(call descend,Documentation,clean)
137ff69c21aSJakub Kicinski
138ff69c21aSJakub Kicinskidoc-install:
139658e85aaSQuentin Monnet	$(call descend,Documentation,install)
140ff69c21aSJakub Kicinski
141d3244248SQuentin Monnetdoc-uninstall:
142d3244248SQuentin Monnet	$(call descend,Documentation,uninstall)
143d3244248SQuentin Monnet
14471bb428fSJakub KicinskiFORCE:
14571bb428fSJakub Kicinski
146d3244248SQuentin Monnet.PHONY: all FORCE clean install uninstall
147d3244248SQuentin Monnet.PHONY: doc doc-clean doc-install doc-uninstall
14871bb428fSJakub Kicinski.DEFAULT_GOAL := all
149