xref: /openbmc/linux/tools/bpf/bpftool/Makefile (revision 658e85aa)
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
2671bb428fSJakub Kicinski$(LIBBPF): FORCE
2771bb428fSJakub Kicinski	$(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) $(OUTPUT)libbpf.a FEATURES_DUMP=$(FEATURE_DUMP_EXPORT)
2871bb428fSJakub Kicinski
2971bb428fSJakub Kicinski$(LIBBPF)-clean:
3071bb428fSJakub Kicinski	$(call QUIET_CLEAN, libbpf)
3171bb428fSJakub Kicinski	$(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) clean >/dev/null
3271bb428fSJakub Kicinski
33658e85aaSQuentin Monnetprefix ?= /usr/local
34507e590dSQuentin Monnetbash_compdir ?= /usr/share/bash-completion/completions
3571bb428fSJakub Kicinski
3671bb428fSJakub KicinskiCC = gcc
3771bb428fSJakub Kicinski
3871bb428fSJakub KicinskiCFLAGS += -O2
3971bb428fSJakub KicinskiCFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wshadow
40c9c35995SJakub KicinskiCFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi -I$(srctree)/tools/include -I$(srctree)/tools/lib/bpf -I$(srctree)/kernel/bpf/
4171bb428fSJakub KicinskiLIBS = -lelf -lbfd -lopcodes $(LIBBPF)
4271bb428fSJakub Kicinski
43658e85aaSQuentin MonnetINSTALL ?= install
44658e85aaSQuentin MonnetRM ?= rm -f
45658e85aaSQuentin Monnet
4671bb428fSJakub Kicinskiinclude $(wildcard *.d)
4771bb428fSJakub Kicinski
4871bb428fSJakub Kicinskiall: $(OUTPUT)bpftool
4971bb428fSJakub Kicinski
5071bb428fSJakub KicinskiSRCS = $(wildcard *.c)
51c9c35995SJakub KicinskiOBJS = $(patsubst %.c,$(OUTPUT)%.o,$(SRCS)) $(OUTPUT)disasm.o
52c9c35995SJakub Kicinski
53c9c35995SJakub Kicinski$(OUTPUT)disasm.o: $(srctree)/kernel/bpf/disasm.c
54c9c35995SJakub Kicinski	$(QUIET_CC)$(COMPILE.c) -MMD -o $@ $<
5571bb428fSJakub Kicinski
5671bb428fSJakub Kicinski$(OUTPUT)bpftool: $(OBJS) $(LIBBPF)
5771bb428fSJakub Kicinski	$(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
5871bb428fSJakub Kicinski
5971bb428fSJakub Kicinski$(OUTPUT)%.o: %.c
6071bb428fSJakub Kicinski	$(QUIET_CC)$(COMPILE.c) -MMD -o $@ $<
6171bb428fSJakub Kicinski
6271bb428fSJakub Kicinskiclean: $(LIBBPF)-clean
6371bb428fSJakub Kicinski	$(call QUIET_CLEAN, bpftool)
64658e85aaSQuentin Monnet	$(Q)$(RM) $(OUTPUT)bpftool $(OUTPUT)*.o $(OUTPUT)*.d
6571bb428fSJakub Kicinski
66658e85aaSQuentin Monnetinstall: $(OUTPUT)bpftool
67658e85aaSQuentin Monnet	$(call QUIET_INSTALL, bpftool)
68658e85aaSQuentin Monnet	$(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/sbin
69658e85aaSQuentin Monnet	$(Q)$(INSTALL) $(OUTPUT)bpftool $(DESTDIR)$(prefix)/sbin/bpftool
70658e85aaSQuentin Monnet	$(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(bash_compdir)
71658e85aaSQuentin Monnet	$(Q)$(INSTALL) -m 0644 bash-completion/bpftool $(DESTDIR)$(bash_compdir)
7271bb428fSJakub Kicinski
73ff69c21aSJakub Kicinskidoc:
74658e85aaSQuentin Monnet	$(call descend,Documentation)
75658e85aaSQuentin Monnet
76658e85aaSQuentin Monnetdoc-clean:
77658e85aaSQuentin Monnet	$(call descend,Documentation,clean)
78ff69c21aSJakub Kicinski
79ff69c21aSJakub Kicinskidoc-install:
80658e85aaSQuentin Monnet	$(call descend,Documentation,install)
81ff69c21aSJakub Kicinski
8271bb428fSJakub KicinskiFORCE:
8371bb428fSJakub Kicinski
84658e85aaSQuentin Monnet.PHONY: all FORCE clean install
85658e85aaSQuentin Monnet.PHONY: doc doc-clean doc-install
8671bb428fSJakub Kicinski.DEFAULT_GOAL := all
87