Commit | Line | Data |
---|---|---|
71bb428f | 1 | include ../../scripts/Makefile.include |
71bb428f JK |
2 | include ../../scripts/utilities.mak |
3 | ||
4 | ifeq ($(srctree),) | |
5 | srctree := $(patsubst %/,%,$(dir $(CURDIR))) | |
6 | srctree := $(patsubst %/,%,$(dir $(srctree))) | |
7 | srctree := $(patsubst %/,%,$(dir $(srctree))) | |
71bb428f JK |
8 | endif |
9 | ||
10 | ifeq ($(V),1) | |
11 | Q = | |
12 | else | |
13 | Q = @ | |
14 | endif | |
15 | ||
658e85aa | 16 | BPF_DIR = $(srctree)/tools/lib/bpf/ |
71bb428f JK |
17 | |
18 | ifneq ($(OUTPUT),) | |
658e85aa | 19 | BPF_PATH = $(OUTPUT) |
71bb428f | 20 | else |
658e85aa | 21 | BPF_PATH = $(BPF_DIR) |
71bb428f JK |
22 | endif |
23 | ||
24 | LIBBPF = $(BPF_PATH)libbpf.a | |
25 | ||
4bfe3bd3 RG |
26 | BPFTOOL_VERSION=$(shell make --no-print-directory -sC ../../.. kernelversion) |
27 | ||
71bb428f JK |
28 | $(LIBBPF): FORCE |
29 | $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) $(OUTPUT)libbpf.a FEATURES_DUMP=$(FEATURE_DUMP_EXPORT) | |
30 | ||
31 | $(LIBBPF)-clean: | |
32 | $(call QUIET_CLEAN, libbpf) | |
33 | $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) clean >/dev/null | |
34 | ||
658e85aa | 35 | prefix ?= /usr/local |
507e590d | 36 | bash_compdir ?= /usr/share/bash-completion/completions |
71bb428f JK |
37 | |
38 | CC = gcc | |
39 | ||
40 | CFLAGS += -O2 | |
41 | CFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wshadow | |
39b72ccd | 42 | CFLAGS += -DPACKAGE='"bpftool"' -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi -I$(srctree)/tools/include -I$(srctree)/tools/lib/bpf -I$(srctree)/kernel/bpf/ |
4bfe3bd3 | 43 | CFLAGS += -DBPFTOOL_VERSION='"$(BPFTOOL_VERSION)"' |
71bb428f JK |
44 | LIBS = -lelf -lbfd -lopcodes $(LIBBPF) |
45 | ||
658e85aa QM |
46 | INSTALL ?= install |
47 | RM ?= rm -f | |
48 | ||
fb982666 RG |
49 | FEATURE_USER = .bpftool |
50 | FEATURE_TESTS = libbfd disassembler-four-args | |
51 | FEATURE_DISPLAY = libbfd disassembler-four-args | |
52 | ||
53 | check_feat := 1 | |
54 | NON_CHECK_FEAT_TARGETS := clean uninstall doc doc-clean doc-install doc-uninstall | |
55 | ifdef MAKECMDGOALS | |
56 | ifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),) | |
57 | check_feat := 0 | |
58 | endif | |
59 | endif | |
60 | ||
61 | ifeq ($(check_feat),1) | |
62 | ifeq ($(FEATURES_DUMP),) | |
63 | include $(srctree)/tools/build/Makefile.feature | |
64 | else | |
65 | include $(FEATURES_DUMP) | |
66 | endif | |
67 | endif | |
68 | ||
69 | ifeq ($(feature-disassembler-four-args), 1) | |
70 | CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE | |
71 | endif | |
72 | ||
71bb428f JK |
73 | include $(wildcard *.d) |
74 | ||
75 | all: $(OUTPUT)bpftool | |
76 | ||
658e85aa QM |
77 | SRCS = $(wildcard *.c) |
78 | OBJS = $(patsubst %.c,$(OUTPUT)%.o,$(SRCS)) $(OUTPUT)disasm.o | |
c9c35995 JK |
79 | |
80 | $(OUTPUT)disasm.o: $(srctree)/kernel/bpf/disasm.c | |
81 | $(QUIET_CC)$(COMPILE.c) -MMD -o $@ $< | |
71bb428f JK |
82 | |
83 | $(OUTPUT)bpftool: $(OBJS) $(LIBBPF) | |
84 | $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ $(LIBS) | |
85 | ||
86 | $(OUTPUT)%.o: %.c | |
87 | $(QUIET_CC)$(COMPILE.c) -MMD -o $@ $< | |
88 | ||
89 | clean: $(LIBBPF)-clean | |
90 | $(call QUIET_CLEAN, bpftool) | |
658e85aa | 91 | $(Q)$(RM) $(OUTPUT)bpftool $(OUTPUT)*.o $(OUTPUT)*.d |
71bb428f | 92 | |
658e85aa QM |
93 | install: $(OUTPUT)bpftool |
94 | $(call QUIET_INSTALL, bpftool) | |
95 | $(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/sbin | |
96 | $(Q)$(INSTALL) $(OUTPUT)bpftool $(DESTDIR)$(prefix)/sbin/bpftool | |
97 | $(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(bash_compdir) | |
98 | $(Q)$(INSTALL) -m 0644 bash-completion/bpftool $(DESTDIR)$(bash_compdir) | |
71bb428f | 99 | |
d3244248 QM |
100 | uninstall: |
101 | $(call QUIET_UNINST, bpftool) | |
102 | $(Q)$(RM) $(DESTDIR)$(prefix)/sbin/bpftool | |
103 | $(Q)$(RM) $(DESTDIR)$(bash_compdir)/bpftool | |
104 | ||
ff69c21a | 105 | doc: |
658e85aa QM |
106 | $(call descend,Documentation) |
107 | ||
108 | doc-clean: | |
109 | $(call descend,Documentation,clean) | |
ff69c21a JK |
110 | |
111 | doc-install: | |
658e85aa | 112 | $(call descend,Documentation,install) |
ff69c21a | 113 | |
d3244248 QM |
114 | doc-uninstall: |
115 | $(call descend,Documentation,uninstall) | |
116 | ||
71bb428f JK |
117 | FORCE: |
118 | ||
d3244248 QM |
119 | .PHONY: all FORCE clean install uninstall |
120 | .PHONY: doc doc-clean doc-install doc-uninstall | |
71bb428f | 121 | .DEFAULT_GOAL := all |