xref: /aosp_15_r20/external/bpftool/src/Makefile (revision 858ea5e570667251cdc31d3fe7b846b591105938)
1*858ea5e5SAndroid Build Coastguard Worker# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*858ea5e5SAndroid Build Coastguard Workerinclude Makefile.include
3*858ea5e5SAndroid Build Coastguard Worker
4*858ea5e5SAndroid Build Coastguard Workerifeq ($(srctree),)
5*858ea5e5SAndroid Build Coastguard Workersrctree := $(patsubst %/,%,$(dir $(CURDIR)))
6*858ea5e5SAndroid Build Coastguard Workerendif
7*858ea5e5SAndroid Build Coastguard Worker
8*858ea5e5SAndroid Build Coastguard Workerifeq ($(V),1)
9*858ea5e5SAndroid Build Coastguard Worker  Q =
10*858ea5e5SAndroid Build Coastguard Workerelse
11*858ea5e5SAndroid Build Coastguard Worker  Q = @
12*858ea5e5SAndroid Build Coastguard Workerendif
13*858ea5e5SAndroid Build Coastguard Worker
14*858ea5e5SAndroid Build Coastguard WorkerBPF_DIR = $(srctree)/libbpf/src
15*858ea5e5SAndroid Build Coastguard Worker
16*858ea5e5SAndroid Build Coastguard Workerifneq ($(OUTPUT),)
17*858ea5e5SAndroid Build Coastguard Worker  _OUTPUT := $(OUTPUT)
18*858ea5e5SAndroid Build Coastguard Workerelse
19*858ea5e5SAndroid Build Coastguard Worker  _OUTPUT := $(CURDIR)/
20*858ea5e5SAndroid Build Coastguard Workerendif
21*858ea5e5SAndroid Build Coastguard WorkerBOOTSTRAP_OUTPUT := $(_OUTPUT)bootstrap/
22*858ea5e5SAndroid Build Coastguard Worker
23*858ea5e5SAndroid Build Coastguard WorkerLIBBPF_OUTPUT := $(_OUTPUT)libbpf/
24*858ea5e5SAndroid Build Coastguard WorkerLIBBPF_DESTDIR := $(LIBBPF_OUTPUT)
25*858ea5e5SAndroid Build Coastguard WorkerLIBBPF_INCLUDE := $(LIBBPF_DESTDIR)include
26*858ea5e5SAndroid Build Coastguard WorkerLIBBPF_HDRS_DIR := $(LIBBPF_INCLUDE)/bpf
27*858ea5e5SAndroid Build Coastguard WorkerLIBBPF := $(LIBBPF_OUTPUT)libbpf.a
28*858ea5e5SAndroid Build Coastguard Worker
29*858ea5e5SAndroid Build Coastguard WorkerLIBBPF_BOOTSTRAP_OUTPUT := $(BOOTSTRAP_OUTPUT)libbpf/
30*858ea5e5SAndroid Build Coastguard WorkerLIBBPF_BOOTSTRAP_DESTDIR := $(LIBBPF_BOOTSTRAP_OUTPUT)
31*858ea5e5SAndroid Build Coastguard WorkerLIBBPF_BOOTSTRAP_INCLUDE := $(LIBBPF_BOOTSTRAP_DESTDIR)include
32*858ea5e5SAndroid Build Coastguard WorkerLIBBPF_BOOTSTRAP_HDRS_DIR := $(LIBBPF_BOOTSTRAP_INCLUDE)/bpf
33*858ea5e5SAndroid Build Coastguard WorkerLIBBPF_BOOTSTRAP := $(LIBBPF_BOOTSTRAP_OUTPUT)libbpf.a
34*858ea5e5SAndroid Build Coastguard Worker
35*858ea5e5SAndroid Build Coastguard Worker# We need to copy hashmap.h, nlattr.h, relo_core.h and libbpf_internal.h
36*858ea5e5SAndroid Build Coastguard Worker# which are not otherwise exported by libbpf, but still required by bpftool.
37*858ea5e5SAndroid Build Coastguard WorkerLIBBPF_INTERNAL_HDRS := $(addprefix $(LIBBPF_HDRS_DIR)/,hashmap.h nlattr.h relo_core.h libbpf_internal.h)
38*858ea5e5SAndroid Build Coastguard WorkerLIBBPF_BOOTSTRAP_INTERNAL_HDRS := $(addprefix $(LIBBPF_BOOTSTRAP_HDRS_DIR)/,hashmap.h relo_core.h libbpf_internal.h)
39*858ea5e5SAndroid Build Coastguard Worker
40*858ea5e5SAndroid Build Coastguard Worker$(LIBBPF_OUTPUT) $(BOOTSTRAP_OUTPUT) $(LIBBPF_BOOTSTRAP_OUTPUT) $(LIBBPF_HDRS_DIR) $(LIBBPF_BOOTSTRAP_HDRS_DIR):
41*858ea5e5SAndroid Build Coastguard Worker	$(QUIET_MKDIR)mkdir -p $@
42*858ea5e5SAndroid Build Coastguard Worker
43*858ea5e5SAndroid Build Coastguard Worker$(LIBBPF): $(wildcard $(BPF_DIR)/*.[ch] $(BPF_DIR)/Makefile) | $(LIBBPF_OUTPUT)
44*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(BPF_DIR) OBJDIR=$(patsubst %/,%,$(LIBBPF_OUTPUT)) \
45*858ea5e5SAndroid Build Coastguard Worker		PREFIX=$(LIBBPF_DESTDIR:/=) $(LIBBPF) install_headers
46*858ea5e5SAndroid Build Coastguard Worker
47*858ea5e5SAndroid Build Coastguard Worker$(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_HDRS_DIR)
48*858ea5e5SAndroid Build Coastguard Worker	$(call QUIET_INSTALL, $@)
49*858ea5e5SAndroid Build Coastguard Worker	$(Q)install -m 644 -t $(LIBBPF_HDRS_DIR) $<
50*858ea5e5SAndroid Build Coastguard Worker
51*858ea5e5SAndroid Build Coastguard Worker$(LIBBPF_BOOTSTRAP): $(wildcard $(BPF_DIR)/*.[ch] $(BPF_DIR)/Makefile) | $(LIBBPF_BOOTSTRAP_OUTPUT)
52*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(BPF_DIR) OBJDIR=$(patsubst %/,%,$(LIBBPF_BOOTSTRAP_OUTPUT)) \
53*858ea5e5SAndroid Build Coastguard Worker		PREFIX=$(LIBBPF_BOOTSTRAP_DESTDIR:/=) \
54*858ea5e5SAndroid Build Coastguard Worker		ARCH= CROSS_COMPILE= CC="$(HOSTCC)" LD="$(HOSTLD)" AR="$(HOSTAR)" $@ install_headers
55*858ea5e5SAndroid Build Coastguard Worker
56*858ea5e5SAndroid Build Coastguard Worker$(LIBBPF_BOOTSTRAP_INTERNAL_HDRS): $(LIBBPF_BOOTSTRAP_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_BOOTSTRAP_HDRS_DIR)
57*858ea5e5SAndroid Build Coastguard Worker	$(call QUIET_INSTALL, $@)
58*858ea5e5SAndroid Build Coastguard Worker	$(Q)install -m 644 -t $(LIBBPF_BOOTSTRAP_HDRS_DIR) $<
59*858ea5e5SAndroid Build Coastguard Worker
60*858ea5e5SAndroid Build Coastguard Worker$(LIBBPF)-clean: FORCE | $(LIBBPF_OUTPUT)
61*858ea5e5SAndroid Build Coastguard Worker	$(call QUIET_CLEAN, libbpf)
62*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(LIBBPF_OUTPUT) clean >/dev/null
63*858ea5e5SAndroid Build Coastguard Worker
64*858ea5e5SAndroid Build Coastguard Worker$(LIBBPF_BOOTSTRAP)-clean: FORCE | $(LIBBPF_BOOTSTRAP_OUTPUT)
65*858ea5e5SAndroid Build Coastguard Worker	$(call QUIET_CLEAN, libbpf-bootstrap)
66*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(LIBBPF_BOOTSTRAP_OUTPUT) clean >/dev/null
67*858ea5e5SAndroid Build Coastguard Worker
68*858ea5e5SAndroid Build Coastguard Workerprefix ?= /usr/local
69*858ea5e5SAndroid Build Coastguard Workerbash_compdir ?= /usr/share/bash-completion/completions
70*858ea5e5SAndroid Build Coastguard Worker
71*858ea5e5SAndroid Build Coastguard WorkerCFLAGS += -O2
72*858ea5e5SAndroid Build Coastguard WorkerCFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers
73*858ea5e5SAndroid Build Coastguard WorkerCFLAGS += $(filter-out -Wswitch-enum -Wnested-externs,$(EXTRA_WARNINGS))
74*858ea5e5SAndroid Build Coastguard WorkerCFLAGS += -DPACKAGE='"bpftool"' -D__EXPORTED_HEADERS__ \
75*858ea5e5SAndroid Build Coastguard Worker	-I$(or $(OUTPUT),.) \
76*858ea5e5SAndroid Build Coastguard Worker	-I$(LIBBPF_INCLUDE) \
77*858ea5e5SAndroid Build Coastguard Worker	-I$(srctree)/src/kernel/bpf/ \
78*858ea5e5SAndroid Build Coastguard Worker	-I$(srctree)/include \
79*858ea5e5SAndroid Build Coastguard Worker	-I$(srctree)/include/uapi
80*858ea5e5SAndroid Build Coastguard Workerifneq ($(BPFTOOL_VERSION),)
81*858ea5e5SAndroid Build Coastguard WorkerCFLAGS += -DBPFTOOL_VERSION='"$(BPFTOOL_VERSION)"'
82*858ea5e5SAndroid Build Coastguard Workerendif
83*858ea5e5SAndroid Build Coastguard Workerifneq ($(EXTRA_CFLAGS),)
84*858ea5e5SAndroid Build Coastguard WorkerCFLAGS += $(EXTRA_CFLAGS)
85*858ea5e5SAndroid Build Coastguard Workerendif
86*858ea5e5SAndroid Build Coastguard Workerifneq ($(EXTRA_LDFLAGS),)
87*858ea5e5SAndroid Build Coastguard WorkerLDFLAGS += $(EXTRA_LDFLAGS)
88*858ea5e5SAndroid Build Coastguard Workerendif
89*858ea5e5SAndroid Build Coastguard Worker
90*858ea5e5SAndroid Build Coastguard WorkerHOST_CFLAGS := $(subst -I$(LIBBPF_INCLUDE),-I$(LIBBPF_BOOTSTRAP_INCLUDE),\
91*858ea5e5SAndroid Build Coastguard Worker		$(subst $(CLANG_CROSS_FLAGS),,$(CFLAGS)))
92*858ea5e5SAndroid Build Coastguard WorkerHOST_LDFLAGS := $(LDFLAGS)
93*858ea5e5SAndroid Build Coastguard Worker
94*858ea5e5SAndroid Build Coastguard WorkerINSTALL ?= install
95*858ea5e5SAndroid Build Coastguard WorkerRM ?= rm -f
96*858ea5e5SAndroid Build Coastguard Worker
97*858ea5e5SAndroid Build Coastguard WorkerFEATURE_USER = .bpftool
98*858ea5e5SAndroid Build Coastguard Worker
99*858ea5e5SAndroid Build Coastguard WorkerFEATURE_TESTS := clang-bpf-co-re
100*858ea5e5SAndroid Build Coastguard WorkerFEATURE_TESTS += llvm
101*858ea5e5SAndroid Build Coastguard WorkerFEATURE_TESTS += libcap
102*858ea5e5SAndroid Build Coastguard WorkerFEATURE_TESTS += libbfd
103*858ea5e5SAndroid Build Coastguard WorkerFEATURE_TESTS += libbfd-liberty
104*858ea5e5SAndroid Build Coastguard WorkerFEATURE_TESTS += libbfd-liberty-z
105*858ea5e5SAndroid Build Coastguard WorkerFEATURE_TESTS += disassembler-four-args
106*858ea5e5SAndroid Build Coastguard WorkerFEATURE_TESTS += disassembler-init-styled
107*858ea5e5SAndroid Build Coastguard Worker
108*858ea5e5SAndroid Build Coastguard WorkerFEATURE_DISPLAY := clang-bpf-co-re
109*858ea5e5SAndroid Build Coastguard WorkerFEATURE_DISPLAY += llvm
110*858ea5e5SAndroid Build Coastguard WorkerFEATURE_DISPLAY += libcap
111*858ea5e5SAndroid Build Coastguard WorkerFEATURE_DISPLAY += libbfd
112*858ea5e5SAndroid Build Coastguard WorkerFEATURE_DISPLAY += libbfd-liberty
113*858ea5e5SAndroid Build Coastguard WorkerFEATURE_DISPLAY += libbfd-liberty-z
114*858ea5e5SAndroid Build Coastguard Worker
115*858ea5e5SAndroid Build Coastguard Workercheck_feat := 1
116*858ea5e5SAndroid Build Coastguard WorkerNON_CHECK_FEAT_TARGETS := clean uninstall doc doc-clean doc-install doc-uninstall
117*858ea5e5SAndroid Build Coastguard Workerifdef MAKECMDGOALS
118*858ea5e5SAndroid Build Coastguard Workerifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),)
119*858ea5e5SAndroid Build Coastguard Worker  check_feat := 0
120*858ea5e5SAndroid Build Coastguard Workerendif
121*858ea5e5SAndroid Build Coastguard Workerendif
122*858ea5e5SAndroid Build Coastguard Worker
123*858ea5e5SAndroid Build Coastguard Workerifeq ($(check_feat),1)
124*858ea5e5SAndroid Build Coastguard Workerinclude Makefile.feature
125*858ea5e5SAndroid Build Coastguard Workerendif
126*858ea5e5SAndroid Build Coastguard Worker
127*858ea5e5SAndroid Build Coastguard WorkerLIBS = $(LIBBPF) -lelf -lz
128*858ea5e5SAndroid Build Coastguard WorkerLIBS_BOOTSTRAP = $(LIBBPF_BOOTSTRAP) -lelf -lz
129*858ea5e5SAndroid Build Coastguard Workerifeq ($(feature-libcap), 1)
130*858ea5e5SAndroid Build Coastguard WorkerCFLAGS += -DUSE_LIBCAP
131*858ea5e5SAndroid Build Coastguard WorkerLIBS += -lcap
132*858ea5e5SAndroid Build Coastguard Workerendif
133*858ea5e5SAndroid Build Coastguard Worker
134*858ea5e5SAndroid Build Coastguard Workerinclude $(wildcard $(OUTPUT)*.d)
135*858ea5e5SAndroid Build Coastguard Worker
136*858ea5e5SAndroid Build Coastguard Workerall: $(OUTPUT)bpftool
137*858ea5e5SAndroid Build Coastguard Worker
138*858ea5e5SAndroid Build Coastguard WorkerSRCS := $(wildcard *.c)
139*858ea5e5SAndroid Build Coastguard Worker
140*858ea5e5SAndroid Build Coastguard Workerifeq ($(feature-llvm),1)
141*858ea5e5SAndroid Build Coastguard Worker  # If LLVM is available, use it for JIT disassembly
142*858ea5e5SAndroid Build Coastguard Worker  CFLAGS  += -DHAVE_LLVM_SUPPORT
143*858ea5e5SAndroid Build Coastguard Worker  LLVM_CONFIG_LIB_COMPONENTS := mcdisassembler all-targets
144*858ea5e5SAndroid Build Coastguard Worker  CFLAGS  += $(shell $(LLVM_CONFIG) --cflags --libs $(LLVM_CONFIG_LIB_COMPONENTS))
145*858ea5e5SAndroid Build Coastguard Worker  LIBS    += $(shell $(LLVM_CONFIG) --libs $(LLVM_CONFIG_LIB_COMPONENTS))
146*858ea5e5SAndroid Build Coastguard Worker  ifeq ($(shell $(LLVM_CONFIG) --shared-mode),static)
147*858ea5e5SAndroid Build Coastguard Worker    LIBS += $(shell $(LLVM_CONFIG) --system-libs $(LLVM_CONFIG_LIB_COMPONENTS))
148*858ea5e5SAndroid Build Coastguard Worker    LIBS += -lstdc++
149*858ea5e5SAndroid Build Coastguard Worker  endif
150*858ea5e5SAndroid Build Coastguard Worker  LDFLAGS += $(shell $(LLVM_CONFIG) --ldflags)
151*858ea5e5SAndroid Build Coastguard Workerelse
152*858ea5e5SAndroid Build Coastguard Worker  # Fall back on libbfd
153*858ea5e5SAndroid Build Coastguard Worker  ifeq ($(feature-libbfd),1)
154*858ea5e5SAndroid Build Coastguard Worker    LIBS += -lbfd -ldl -lopcodes
155*858ea5e5SAndroid Build Coastguard Worker  else ifeq ($(feature-libbfd-liberty),1)
156*858ea5e5SAndroid Build Coastguard Worker    LIBS += -lbfd -ldl -lopcodes -liberty
157*858ea5e5SAndroid Build Coastguard Worker  else ifeq ($(feature-libbfd-liberty-z),1)
158*858ea5e5SAndroid Build Coastguard Worker    LIBS += -lbfd -ldl -lopcodes -liberty -lz
159*858ea5e5SAndroid Build Coastguard Worker  endif
160*858ea5e5SAndroid Build Coastguard Worker
161*858ea5e5SAndroid Build Coastguard Worker  # If one of the above feature combinations is set, we support libbfd
162*858ea5e5SAndroid Build Coastguard Worker  ifneq ($(filter -lbfd,$(LIBS)),)
163*858ea5e5SAndroid Build Coastguard Worker    CFLAGS += -DHAVE_LIBBFD_SUPPORT
164*858ea5e5SAndroid Build Coastguard Worker
165*858ea5e5SAndroid Build Coastguard Worker    # Libbfd interface changed over time, figure out what we need
166*858ea5e5SAndroid Build Coastguard Worker    ifeq ($(feature-disassembler-four-args), 1)
167*858ea5e5SAndroid Build Coastguard Worker      CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
168*858ea5e5SAndroid Build Coastguard Worker    endif
169*858ea5e5SAndroid Build Coastguard Worker    ifeq ($(feature-disassembler-init-styled), 1)
170*858ea5e5SAndroid Build Coastguard Worker      CFLAGS += -DDISASM_INIT_STYLED
171*858ea5e5SAndroid Build Coastguard Worker    endif
172*858ea5e5SAndroid Build Coastguard Worker  endif
173*858ea5e5SAndroid Build Coastguard Workerendif
174*858ea5e5SAndroid Build Coastguard Workerifeq ($(filter -DHAVE_LLVM_SUPPORT -DHAVE_LIBBFD_SUPPORT,$(CFLAGS)),)
175*858ea5e5SAndroid Build Coastguard Worker  # No support for JIT disassembly
176*858ea5e5SAndroid Build Coastguard Worker  SRCS := $(filter-out jit_disasm.c,$(SRCS))
177*858ea5e5SAndroid Build Coastguard Workerendif
178*858ea5e5SAndroid Build Coastguard Worker
179*858ea5e5SAndroid Build Coastguard WorkerBPFTOOL_BOOTSTRAP := $(BOOTSTRAP_OUTPUT)bpftool
180*858ea5e5SAndroid Build Coastguard Worker
181*858ea5e5SAndroid Build Coastguard WorkerBOOTSTRAP_OBJS = $(addprefix $(BOOTSTRAP_OUTPUT),main.o common.o json_writer.o gen.o btf.o)
182*858ea5e5SAndroid Build Coastguard Worker$(BOOTSTRAP_OBJS): $(LIBBPF_BOOTSTRAP)
183*858ea5e5SAndroid Build Coastguard Worker
184*858ea5e5SAndroid Build Coastguard WorkerOBJS = $(patsubst %.c,$(OUTPUT)%.o,$(SRCS)) $(OUTPUT)disasm.o
185*858ea5e5SAndroid Build Coastguard Worker$(OBJS): $(LIBBPF) $(LIBBPF_INTERNAL_HDRS)
186*858ea5e5SAndroid Build Coastguard Worker
187*858ea5e5SAndroid Build Coastguard WorkerVMLINUX_BTF_PATHS ?= $(if $(O),$(O)/vmlinux)				\
188*858ea5e5SAndroid Build Coastguard Worker		     $(if $(KBUILD_OUTPUT),$(KBUILD_OUTPUT)/vmlinux)	\
189*858ea5e5SAndroid Build Coastguard Worker		     ../../../vmlinux					\
190*858ea5e5SAndroid Build Coastguard Worker		     /sys/kernel/btf/vmlinux				\
191*858ea5e5SAndroid Build Coastguard Worker		     /boot/vmlinux-$(shell uname -r)
192*858ea5e5SAndroid Build Coastguard WorkerVMLINUX_BTF ?= $(abspath $(firstword $(wildcard $(VMLINUX_BTF_PATHS))))
193*858ea5e5SAndroid Build Coastguard Worker
194*858ea5e5SAndroid Build Coastguard Workerbootstrap: $(BPFTOOL_BOOTSTRAP)
195*858ea5e5SAndroid Build Coastguard Worker
196*858ea5e5SAndroid Build Coastguard Workerifneq ($(VMLINUX_BTF)$(VMLINUX_H),)
197*858ea5e5SAndroid Build Coastguard Workerifeq ($(feature-clang-bpf-co-re),1)
198*858ea5e5SAndroid Build Coastguard Worker
199*858ea5e5SAndroid Build Coastguard WorkerBUILD_BPF_SKELS := 1
200*858ea5e5SAndroid Build Coastguard Worker
201*858ea5e5SAndroid Build Coastguard Worker$(OUTPUT)vmlinux.h: $(VMLINUX_BTF) $(BPFTOOL_BOOTSTRAP)
202*858ea5e5SAndroid Build Coastguard Workerifeq ($(VMLINUX_H),)
203*858ea5e5SAndroid Build Coastguard Worker	$(QUIET_GEN)$(BPFTOOL_BOOTSTRAP) btf dump file $< format c > $@
204*858ea5e5SAndroid Build Coastguard Workerelse
205*858ea5e5SAndroid Build Coastguard Worker	$(Q)cp "$(VMLINUX_H)" $@
206*858ea5e5SAndroid Build Coastguard Workerendif
207*858ea5e5SAndroid Build Coastguard Worker
208*858ea5e5SAndroid Build Coastguard Worker$(OUTPUT)%.bpf.o: skeleton/%.bpf.c $(OUTPUT)vmlinux.h $(LIBBPF_BOOTSTRAP)
209*858ea5e5SAndroid Build Coastguard Worker	$(QUIET_CLANG)$(CLANG) \
210*858ea5e5SAndroid Build Coastguard Worker		-I$(or $(OUTPUT),.) \
211*858ea5e5SAndroid Build Coastguard Worker		-I$(srctree)/include/uapi/ \
212*858ea5e5SAndroid Build Coastguard Worker		-I$(LIBBPF_BOOTSTRAP_INCLUDE) \
213*858ea5e5SAndroid Build Coastguard Worker		-g -O2 -Wall -fno-stack-protector \
214*858ea5e5SAndroid Build Coastguard Worker		--target=bpf -c $< -o $@
215*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(LLVM_STRIP) -g $@
216*858ea5e5SAndroid Build Coastguard Worker
217*858ea5e5SAndroid Build Coastguard Worker$(OUTPUT)%.skel.h: $(OUTPUT)%.bpf.o $(BPFTOOL_BOOTSTRAP)
218*858ea5e5SAndroid Build Coastguard Worker	$(QUIET_GEN)$(BPFTOOL_BOOTSTRAP) gen skeleton $< > $@
219*858ea5e5SAndroid Build Coastguard Worker
220*858ea5e5SAndroid Build Coastguard Worker$(OUTPUT)prog.o: $(OUTPUT)profiler.skel.h
221*858ea5e5SAndroid Build Coastguard Worker
222*858ea5e5SAndroid Build Coastguard Worker$(OUTPUT)pids.o: $(OUTPUT)pid_iter.skel.h
223*858ea5e5SAndroid Build Coastguard Worker
224*858ea5e5SAndroid Build Coastguard Workerendif
225*858ea5e5SAndroid Build Coastguard Workerendif
226*858ea5e5SAndroid Build Coastguard Worker
227*858ea5e5SAndroid Build Coastguard WorkerCFLAGS += $(if $(BUILD_BPF_SKELS),,-DBPFTOOL_WITHOUT_SKELETONS)
228*858ea5e5SAndroid Build Coastguard Worker
229*858ea5e5SAndroid Build Coastguard Worker$(OUTPUT)disasm.o: $(srctree)/src/kernel/bpf/disasm.c
230*858ea5e5SAndroid Build Coastguard Worker	$(QUIET_CC)$(CC) $(CFLAGS) -c -MMD $< -o $@
231*858ea5e5SAndroid Build Coastguard Worker
232*858ea5e5SAndroid Build Coastguard Worker$(BPFTOOL_BOOTSTRAP): $(BOOTSTRAP_OBJS) $(LIBBPF_BOOTSTRAP)
233*858ea5e5SAndroid Build Coastguard Worker	$(QUIET_LINK)$(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) $(BOOTSTRAP_OBJS) $(LIBS_BOOTSTRAP) -o $@
234*858ea5e5SAndroid Build Coastguard Worker
235*858ea5e5SAndroid Build Coastguard Worker$(OUTPUT)bpftool: $(OBJS) $(LIBBPF)
236*858ea5e5SAndroid Build Coastguard Worker	$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
237*858ea5e5SAndroid Build Coastguard Worker
238*858ea5e5SAndroid Build Coastguard Worker$(BOOTSTRAP_OUTPUT)%.o: %.c $(LIBBPF_BOOTSTRAP_INTERNAL_HDRS) | $(BOOTSTRAP_OUTPUT)
239*858ea5e5SAndroid Build Coastguard Worker	$(QUIET_CC)$(HOSTCC) $(HOST_CFLAGS) -c -MMD $< -o $@
240*858ea5e5SAndroid Build Coastguard Worker
241*858ea5e5SAndroid Build Coastguard Worker$(OUTPUT)%.o: %.c
242*858ea5e5SAndroid Build Coastguard Worker	$(QUIET_CC)$(CC) $(CFLAGS) -c -MMD $< -o $@
243*858ea5e5SAndroid Build Coastguard Worker
244*858ea5e5SAndroid Build Coastguard Workerfeature-detect-clean:
245*858ea5e5SAndroid Build Coastguard Worker	$(call QUIET_CLEAN, feature-detect)
246*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(srctree)/tools/build/feature/ clean >/dev/null
247*858ea5e5SAndroid Build Coastguard Worker
248*858ea5e5SAndroid Build Coastguard Workerclean: $(LIBBPF)-clean $(LIBBPF_BOOTSTRAP)-clean
249*858ea5e5SAndroid Build Coastguard Worker	$(call QUIET_CLEAN, bpftool)
250*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(RM) -- $(OUTPUT)bpftool $(OUTPUT)*.o $(OUTPUT)*.d
251*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(RM) -- $(OUTPUT)*.skel.h $(OUTPUT)vmlinux.h
252*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(RM) -r -- $(LIBBPF_OUTPUT) $(BOOTSTRAP_OUTPUT)
253*858ea5e5SAndroid Build Coastguard Worker	$(call QUIET_CLEAN, core-gen)
254*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(RM) -- $(OUTPUT)FEATURE-DUMP.bpftool
255*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(RM) -r -- $(OUTPUT)feature/
256*858ea5e5SAndroid Build Coastguard Worker
257*858ea5e5SAndroid Build Coastguard Workerinstall-bin: $(OUTPUT)bpftool
258*858ea5e5SAndroid Build Coastguard Worker	$(call QUIET_INSTALL, bpftool)
259*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/sbin
260*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(INSTALL) $(OUTPUT)bpftool $(DESTDIR)$(prefix)/sbin/bpftool
261*858ea5e5SAndroid Build Coastguard Worker
262*858ea5e5SAndroid Build Coastguard Workerinstall: install-bin
263*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(bash_compdir)
264*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(INSTALL) -m 0644 $(srctree)/bash-completion/bpftool $(DESTDIR)$(bash_compdir)
265*858ea5e5SAndroid Build Coastguard Worker
266*858ea5e5SAndroid Build Coastguard Workeruninstall:
267*858ea5e5SAndroid Build Coastguard Worker	$(call QUIET_UNINST, bpftool)
268*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(RM) -- $(DESTDIR)$(prefix)/sbin/bpftool
269*858ea5e5SAndroid Build Coastguard Worker	$(Q)$(RM) -- $(DESTDIR)$(bash_compdir)/bpftool
270*858ea5e5SAndroid Build Coastguard Worker
271*858ea5e5SAndroid Build Coastguard Workerdoc:
272*858ea5e5SAndroid Build Coastguard Worker	$(call descend,$(srctree)/docs)
273*858ea5e5SAndroid Build Coastguard Worker
274*858ea5e5SAndroid Build Coastguard Workerdoc-clean:
275*858ea5e5SAndroid Build Coastguard Worker	$(call descend,$(srctree)/docs,clean)
276*858ea5e5SAndroid Build Coastguard Worker
277*858ea5e5SAndroid Build Coastguard Workerdoc-install:
278*858ea5e5SAndroid Build Coastguard Worker	$(call descend,$(srctree)/docs,install)
279*858ea5e5SAndroid Build Coastguard Worker
280*858ea5e5SAndroid Build Coastguard Workerdoc-uninstall:
281*858ea5e5SAndroid Build Coastguard Worker	$(call descend,$(srctree)/docs,uninstall)
282*858ea5e5SAndroid Build Coastguard Worker
283*858ea5e5SAndroid Build Coastguard WorkerFORCE:
284*858ea5e5SAndroid Build Coastguard Worker
285*858ea5e5SAndroid Build Coastguard Worker.SECONDARY:
286*858ea5e5SAndroid Build Coastguard Worker.PHONY: all FORCE bootstrap clean install-bin install uninstall
287*858ea5e5SAndroid Build Coastguard Worker.PHONY: doc doc-clean doc-install doc-uninstall
288*858ea5e5SAndroid Build Coastguard Worker.DEFAULT_GOAL := all
289*858ea5e5SAndroid Build Coastguard Worker
290*858ea5e5SAndroid Build Coastguard Worker# Delete partially updated (corrupted) files on error
291*858ea5e5SAndroid Build Coastguard Worker.DELETE_ON_ERROR:
292