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 4871bb428fSJakub Kicinskiprefix = /usr 4971bb428fSJakub Kicinski 5071bb428fSJakub KicinskiCC = gcc 5171bb428fSJakub Kicinski 5271bb428fSJakub KicinskiCFLAGS += -O2 5371bb428fSJakub KicinskiCFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wshadow 54c9c35995SJakub KicinskiCFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi -I$(srctree)/tools/include -I$(srctree)/tools/lib/bpf -I$(srctree)/kernel/bpf/ 5571bb428fSJakub KicinskiLIBS = -lelf -lbfd -lopcodes $(LIBBPF) 5671bb428fSJakub Kicinski 5771bb428fSJakub Kicinskiinclude $(wildcard *.d) 5871bb428fSJakub Kicinski 5971bb428fSJakub Kicinskiall: $(OUTPUT)bpftool 6071bb428fSJakub Kicinski 6171bb428fSJakub KicinskiSRCS=$(wildcard *.c) 62c9c35995SJakub KicinskiOBJS=$(patsubst %.c,$(OUTPUT)%.o,$(SRCS)) $(OUTPUT)disasm.o 63c9c35995SJakub Kicinski 64c9c35995SJakub Kicinski$(OUTPUT)disasm.o: $(srctree)/kernel/bpf/disasm.c 65c9c35995SJakub Kicinski $(QUIET_CC)$(COMPILE.c) -MMD -o $@ $< 6671bb428fSJakub Kicinski 6771bb428fSJakub Kicinski$(OUTPUT)bpftool: $(OBJS) $(LIBBPF) 6871bb428fSJakub Kicinski $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ $(LIBS) 6971bb428fSJakub Kicinski 7071bb428fSJakub Kicinski$(OUTPUT)%.o: %.c 7171bb428fSJakub Kicinski $(QUIET_CC)$(COMPILE.c) -MMD -o $@ $< 7271bb428fSJakub Kicinski 7371bb428fSJakub Kicinskiclean: $(LIBBPF)-clean 7471bb428fSJakub Kicinski $(call QUIET_CLEAN, bpftool) 7571bb428fSJakub Kicinski $(Q)rm -rf $(OUTPUT)bpftool $(OUTPUT)*.o $(OUTPUT)*.d 7671bb428fSJakub Kicinski 7771bb428fSJakub Kicinskiinstall: 7871bb428fSJakub Kicinski install $(OUTPUT)bpftool $(prefix)/sbin/bpftool 7971bb428fSJakub Kicinski 80ff69c21aSJakub Kicinskidoc: 81ff69c21aSJakub Kicinski $(Q)$(MAKE) -C Documentation/ 82ff69c21aSJakub Kicinski 83ff69c21aSJakub Kicinskidoc-install: 84ff69c21aSJakub Kicinski $(Q)$(MAKE) -C Documentation/ install 85ff69c21aSJakub Kicinski 8671bb428fSJakub KicinskiFORCE: 8771bb428fSJakub Kicinski 8871bb428fSJakub Kicinski.PHONY: all clean FORCE 8971bb428fSJakub Kicinski.DEFAULT_GOAL := all 90