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