blob: a7151f47fb40916e9ad868c6c5086cbf8372b96c [file] [log] [blame]
Jakub Kicinski71bb4282017-10-04 20:10:04 -07001include ../../scripts/Makefile.include
2
3include ../../scripts/utilities.mak
4
5ifeq ($(srctree),)
6srctree := $(patsubst %/,%,$(dir $(CURDIR)))
7srctree := $(patsubst %/,%,$(dir $(srctree)))
8srctree := $(patsubst %/,%,$(dir $(srctree)))
9#$(info Determined 'srctree' to be $(srctree))
10endif
11
12ifneq ($(objtree),)
13#$(info Determined 'objtree' to be $(objtree))
14endif
15
16ifneq ($(OUTPUT),)
17#$(info Determined 'OUTPUT' to be $(OUTPUT))
18# Adding $(OUTPUT) as a directory to look for source files,
19# because use generated output files as sources dependency
20# for flex/bison parsers.
21VPATH += $(OUTPUT)
22export VPATH
23endif
24
25ifeq ($(V),1)
26 Q =
27else
28 Q = @
29endif
30
31BPF_DIR = $(srctree)/tools/lib/bpf/
32
33ifneq ($(OUTPUT),)
34 BPF_PATH=$(OUTPUT)
35else
36 BPF_PATH=$(BPF_DIR)
37endif
38
39LIBBPF = $(BPF_PATH)libbpf.a
40
41$(LIBBPF): FORCE
42 $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) $(OUTPUT)libbpf.a FEATURES_DUMP=$(FEATURE_DUMP_EXPORT)
43
44$(LIBBPF)-clean:
45 $(call QUIET_CLEAN, libbpf)
46 $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) clean >/dev/null
47
48prefix = /usr
49
50CC = gcc
51
52CFLAGS += -O2
53CFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wshadow
54CFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi -I$(srctree)/tools/include -I$(srctree)/tools/lib/bpf
55LIBS = -lelf -lbfd -lopcodes $(LIBBPF)
56
57include $(wildcard *.d)
58
59all: $(OUTPUT)bpftool
60
61SRCS=$(wildcard *.c)
62OBJS=$(patsubst %.c,$(OUTPUT)%.o,$(SRCS))
63
64$(OUTPUT)bpftool: $(OBJS) $(LIBBPF)
65 $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
66
67$(OUTPUT)%.o: %.c
68 $(QUIET_CC)$(COMPILE.c) -MMD -o $@ $<
69
70clean: $(LIBBPF)-clean
71 $(call QUIET_CLEAN, bpftool)
72 $(Q)rm -rf $(OUTPUT)bpftool $(OUTPUT)*.o $(OUTPUT)*.d
73
74install:
75 install $(OUTPUT)bpftool $(prefix)/sbin/bpftool
76
77FORCE:
78
79.PHONY: all clean FORCE
80.DEFAULT_GOAL := all