xref: /linux/tools/bpf/bpftool/Makefile (revision 507e590da398a0e3438d563b5e736c3f2a7749d7)
171bb428fSJakub Kicinskiinclude ../../scripts/Makefile.include
271bb428fSJakub Kicinski
371bb428fSJakub Kicinskiinclude ../../scripts/utilities.mak
471bb428fSJakub Kicinski
571bb428fSJakub Kicinskiifeq ($(srctree),)
671bb428fSJakub Kicinskisrctree := $(patsubst %/,%,$(dir $(CURDIR)))
771bb428fSJakub Kicinskisrctree := $(patsubst %/,%,$(dir $(srctree)))
871bb428fSJakub Kicinskisrctree := $(patsubst %/,%,$(dir $(srctree)))
971bb428fSJakub Kicinski#$(info Determined 'srctree' to be $(srctree))
1071bb428fSJakub Kicinskiendif
1171bb428fSJakub Kicinski
1271bb428fSJakub Kicinskiifneq ($(objtree),)
1371bb428fSJakub Kicinski#$(info Determined 'objtree' to be $(objtree))
1471bb428fSJakub Kicinskiendif
1571bb428fSJakub Kicinski
1671bb428fSJakub Kicinskiifneq ($(OUTPUT),)
1771bb428fSJakub Kicinski#$(info Determined 'OUTPUT' to be $(OUTPUT))
1871bb428fSJakub Kicinski# Adding $(OUTPUT) as a directory to look for source files,
1971bb428fSJakub Kicinski# because use generated output files as sources dependency
2071bb428fSJakub Kicinski# for flex/bison parsers.
2171bb428fSJakub KicinskiVPATH += $(OUTPUT)
2271bb428fSJakub Kicinskiexport VPATH
2371bb428fSJakub Kicinskiendif
2471bb428fSJakub Kicinski
2571bb428fSJakub Kicinskiifeq ($(V),1)
2671bb428fSJakub Kicinski  Q =
2771bb428fSJakub Kicinskielse
2871bb428fSJakub Kicinski  Q = @
2971bb428fSJakub Kicinskiendif
3071bb428fSJakub Kicinski
3171bb428fSJakub KicinskiBPF_DIR	= $(srctree)/tools/lib/bpf/
3271bb428fSJakub Kicinski
3371bb428fSJakub Kicinskiifneq ($(OUTPUT),)
3471bb428fSJakub Kicinski  BPF_PATH=$(OUTPUT)
3571bb428fSJakub Kicinskielse
3671bb428fSJakub Kicinski  BPF_PATH=$(BPF_DIR)
3771bb428fSJakub Kicinskiendif
3871bb428fSJakub Kicinski
3971bb428fSJakub KicinskiLIBBPF = $(BPF_PATH)libbpf.a
4071bb428fSJakub Kicinski
4171bb428fSJakub Kicinski$(LIBBPF): FORCE
4271bb428fSJakub Kicinski	$(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) $(OUTPUT)libbpf.a FEATURES_DUMP=$(FEATURE_DUMP_EXPORT)
4371bb428fSJakub Kicinski
4471bb428fSJakub Kicinski$(LIBBPF)-clean:
4571bb428fSJakub Kicinski	$(call QUIET_CLEAN, libbpf)
4671bb428fSJakub Kicinski	$(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) clean >/dev/null
4771bb428fSJakub Kicinski
48*507e590dSQuentin Monnetprefix = /usr/local
49*507e590dSQuentin Monnetbash_compdir ?= /usr/share/bash-completion/completions
5071bb428fSJakub Kicinski
5171bb428fSJakub KicinskiCC = gcc
5271bb428fSJakub Kicinski
5371bb428fSJakub KicinskiCFLAGS += -O2
5471bb428fSJakub KicinskiCFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wshadow
55c9c35995SJakub KicinskiCFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi -I$(srctree)/tools/include -I$(srctree)/tools/lib/bpf -I$(srctree)/kernel/bpf/
5671bb428fSJakub KicinskiLIBS = -lelf -lbfd -lopcodes $(LIBBPF)
5771bb428fSJakub Kicinski
5871bb428fSJakub Kicinskiinclude $(wildcard *.d)
5971bb428fSJakub Kicinski
6071bb428fSJakub Kicinskiall: $(OUTPUT)bpftool
6171bb428fSJakub Kicinski
6271bb428fSJakub KicinskiSRCS=$(wildcard *.c)
63c9c35995SJakub KicinskiOBJS=$(patsubst %.c,$(OUTPUT)%.o,$(SRCS)) $(OUTPUT)disasm.o
64c9c35995SJakub Kicinski
65c9c35995SJakub Kicinski$(OUTPUT)disasm.o: $(srctree)/kernel/bpf/disasm.c
66c9c35995SJakub Kicinski	$(QUIET_CC)$(COMPILE.c) -MMD -o $@ $<
6771bb428fSJakub Kicinski
6871bb428fSJakub Kicinski$(OUTPUT)bpftool: $(OBJS) $(LIBBPF)
6971bb428fSJakub Kicinski	$(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
7071bb428fSJakub Kicinski
7171bb428fSJakub Kicinski$(OUTPUT)%.o: %.c
7271bb428fSJakub Kicinski	$(QUIET_CC)$(COMPILE.c) -MMD -o $@ $<
7371bb428fSJakub Kicinski
7471bb428fSJakub Kicinskiclean: $(LIBBPF)-clean
7571bb428fSJakub Kicinski	$(call QUIET_CLEAN, bpftool)
7671bb428fSJakub Kicinski	$(Q)rm -rf $(OUTPUT)bpftool $(OUTPUT)*.o $(OUTPUT)*.d
7771bb428fSJakub Kicinski
7871bb428fSJakub Kicinskiinstall:
79*507e590dSQuentin Monnet	install -m 0755 -d $(prefix)/sbin
8071bb428fSJakub Kicinski	install $(OUTPUT)bpftool $(prefix)/sbin/bpftool
81995231c8SQuentin Monnet	install -m 0755 -d $(bash_compdir)
82995231c8SQuentin Monnet	install -m 0644 bash-completion/bpftool $(bash_compdir)
8371bb428fSJakub Kicinski
84ff69c21aSJakub Kicinskidoc:
85ff69c21aSJakub Kicinski	$(Q)$(MAKE) -C Documentation/
86ff69c21aSJakub Kicinski
87ff69c21aSJakub Kicinskidoc-install:
88ff69c21aSJakub Kicinski	$(Q)$(MAKE) -C Documentation/ install
89ff69c21aSJakub Kicinski
9071bb428fSJakub KicinskiFORCE:
9171bb428fSJakub Kicinski
9271bb428fSJakub Kicinski.PHONY: all clean FORCE
9371bb428fSJakub Kicinski.DEFAULT_GOAL := all
94