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