xref: /openbmc/linux/tools/bpf/bpftool/Makefile (revision c9c35995)
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