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