^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) include ../../scripts/Makefile.include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) ifeq ($(srctree),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) srctree := $(patsubst %/,%,$(dir $(CURDIR)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) srctree := $(patsubst %/,%,$(dir $(srctree)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) srctree := $(patsubst %/,%,$(dir $(srctree)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) ifeq ($(V),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) Q =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Q = @
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) BPF_DIR = $(srctree)/tools/lib/bpf/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) ifneq ($(OUTPUT),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) LIBBPF_OUTPUT = $(OUTPUT)/libbpf/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) LIBBPF_PATH = $(LIBBPF_OUTPUT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) LIBBPF_PATH = $(BPF_DIR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) LIBBPF = $(LIBBPF_PATH)libbpf.a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) BPFTOOL_VERSION ?= $(shell make -rR --no-print-directory -sC ../../.. kernelversion)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) $(LIBBPF): FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) $(if $(LIBBPF_OUTPUT),@mkdir -p $(LIBBPF_OUTPUT))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(LIBBPF_OUTPUT) $(LIBBPF_OUTPUT)libbpf.a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) $(LIBBPF)-clean:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) $(call QUIET_CLEAN, libbpf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(LIBBPF_OUTPUT) clean >/dev/null
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) prefix ?= /usr/local
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) bash_compdir ?= /usr/share/bash-completion/completions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) CFLAGS += -O2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) CFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) CFLAGS += $(filter-out -Wswitch-enum -Wnested-externs,$(EXTRA_WARNINGS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) CFLAGS += -DPACKAGE='"bpftool"' -D__EXPORTED_HEADERS__ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) -I$(if $(OUTPUT),$(OUTPUT),.) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) -I$(srctree)/kernel/bpf/ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) -I$(srctree)/tools/include \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) -I$(srctree)/tools/include/uapi \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) -I$(srctree)/tools/lib \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) -I$(srctree)/tools/perf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) CFLAGS += -DBPFTOOL_VERSION='"$(BPFTOOL_VERSION)"'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) ifneq ($(EXTRA_CFLAGS),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) CFLAGS += $(EXTRA_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) ifneq ($(EXTRA_LDFLAGS),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) LDFLAGS += $(EXTRA_LDFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) INSTALL ?= install
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) RM ?= rm -f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) CLANG ?= clang
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) LLVM_STRIP ?= llvm-strip
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) FEATURE_USER = .bpftool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) FEATURE_TESTS = libbfd disassembler-four-args reallocarray zlib libcap \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) clang-bpf-co-re
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) FEATURE_DISPLAY = libbfd disassembler-four-args zlib libcap \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) clang-bpf-co-re
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) check_feat := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) NON_CHECK_FEAT_TARGETS := clean uninstall doc doc-clean doc-install doc-uninstall
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) ifdef MAKECMDGOALS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) ifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) check_feat := 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) ifeq ($(check_feat),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) ifeq ($(FEATURES_DUMP),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) include $(srctree)/tools/build/Makefile.feature
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) include $(FEATURES_DUMP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) ifeq ($(feature-disassembler-four-args), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) ifeq ($(feature-reallocarray), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) CFLAGS += -DCOMPAT_NEED_REALLOCARRAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) LIBS = $(LIBBPF) -lelf -lz
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) ifeq ($(feature-libcap), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) CFLAGS += -DUSE_LIBCAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) LIBS += -lcap
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) include $(wildcard $(OUTPUT)*.d)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) all: $(OUTPUT)bpftool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) BFD_SRCS = jit_disasm.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) SRCS = $(filter-out $(BFD_SRCS),$(wildcard *.c))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) ifeq ($(feature-libbfd),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) LIBS += -lbfd -ldl -lopcodes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) else ifeq ($(feature-libbfd-liberty),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) LIBS += -lbfd -ldl -lopcodes -liberty
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) else ifeq ($(feature-libbfd-liberty-z),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) LIBS += -lbfd -ldl -lopcodes -liberty -lz
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) ifneq ($(filter -lbfd,$(LIBS)),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) CFLAGS += -DHAVE_LIBBFD_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) SRCS += $(BFD_SRCS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) BPFTOOL_BOOTSTRAP := $(if $(OUTPUT),$(OUTPUT)bpftool-bootstrap,./bpftool-bootstrap)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) BOOTSTRAP_OBJS = $(addprefix $(OUTPUT),main.o common.o json_writer.o gen.o btf.o)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) OBJS = $(patsubst %.c,$(OUTPUT)%.o,$(SRCS)) $(OUTPUT)disasm.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) VMLINUX_BTF_PATHS ?= $(if $(O),$(O)/vmlinux) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) $(if $(KBUILD_OUTPUT),$(KBUILD_OUTPUT)/vmlinux) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) ../../../vmlinux \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) /sys/kernel/btf/vmlinux \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) /boot/vmlinux-$(shell uname -r)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) VMLINUX_BTF ?= $(abspath $(firstword $(wildcard $(VMLINUX_BTF_PATHS))))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) ifneq ($(VMLINUX_BTF)$(VMLINUX_H),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) ifeq ($(feature-clang-bpf-co-re),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) BUILD_BPF_SKELS := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) $(OUTPUT)vmlinux.h: $(VMLINUX_BTF) $(BPFTOOL_BOOTSTRAP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) ifeq ($(VMLINUX_H),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) $(QUIET_GEN)$(BPFTOOL_BOOTSTRAP) btf dump file $< format c > $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) $(Q)cp "$(VMLINUX_H)" $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) $(OUTPUT)%.bpf.o: skeleton/%.bpf.c $(OUTPUT)vmlinux.h $(LIBBPF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) $(QUIET_CLANG)$(CLANG) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) -I$(if $(OUTPUT),$(OUTPUT),.) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) -I$(srctree)/tools/include/uapi/ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) -I$(LIBBPF_PATH) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) -I$(srctree)/tools/lib \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) -g -O2 -target bpf -c $< -o $@ && $(LLVM_STRIP) -g $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) $(OUTPUT)%.skel.h: $(OUTPUT)%.bpf.o $(BPFTOOL_BOOTSTRAP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) $(QUIET_GEN)$(BPFTOOL_BOOTSTRAP) gen skeleton $< > $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) $(OUTPUT)prog.o: $(OUTPUT)profiler.skel.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) $(OUTPUT)pids.o: $(OUTPUT)pid_iter.skel.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) CFLAGS += $(if $(BUILD_BPF_SKELS),,-DBPFTOOL_WITHOUT_SKELETONS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) $(OUTPUT)disasm.o: $(srctree)/kernel/bpf/disasm.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) $(QUIET_CC)$(CC) $(CFLAGS) -c -MMD -o $@ $<
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) $(OUTPUT)feature.o: | zdep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) $(BPFTOOL_BOOTSTRAP): $(BOOTSTRAP_OBJS) $(LIBBPF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(BOOTSTRAP_OBJS) $(LIBS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) $(OUTPUT)bpftool: $(OBJS) $(LIBBPF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) $(OUTPUT)%.o: %.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) $(QUIET_CC)$(CC) $(CFLAGS) -c -MMD -o $@ $<
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) feature-detect-clean:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) $(call QUIET_CLEAN, feature-detect)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ clean >/dev/null
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) clean: $(LIBBPF)-clean feature-detect-clean
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) $(call QUIET_CLEAN, bpftool)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) $(Q)$(RM) -- $(OUTPUT)bpftool $(OUTPUT)*.o $(OUTPUT)*.d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) $(Q)$(RM) -- $(BPFTOOL_BOOTSTRAP) $(OUTPUT)*.skel.h $(OUTPUT)vmlinux.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) $(Q)$(RM) -r -- $(OUTPUT)libbpf/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) $(call QUIET_CLEAN, core-gen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) $(Q)$(RM) -- $(OUTPUT)FEATURE-DUMP.bpftool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) $(Q)$(RM) -r -- $(OUTPUT)feature/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) install: $(OUTPUT)bpftool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) $(call QUIET_INSTALL, bpftool)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) $(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/sbin
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) $(Q)$(INSTALL) $(OUTPUT)bpftool $(DESTDIR)$(prefix)/sbin/bpftool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) $(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(bash_compdir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) $(Q)$(INSTALL) -m 0644 bash-completion/bpftool $(DESTDIR)$(bash_compdir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) uninstall:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) $(call QUIET_UNINST, bpftool)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) $(Q)$(RM) -- $(DESTDIR)$(prefix)/sbin/bpftool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) $(Q)$(RM) -- $(DESTDIR)$(bash_compdir)/bpftool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) doc:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) $(call descend,Documentation)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) doc-clean:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) $(call descend,Documentation,clean)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) doc-install:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) $(call descend,Documentation,install)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) doc-uninstall:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) $(call descend,Documentation,uninstall)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) FORCE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) zdep:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) @if [ "$(feature-zlib)" != "1" ]; then echo "No zlib found"; exit 1 ; fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) .SECONDARY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) .PHONY: all FORCE clean install uninstall zdep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) .PHONY: doc doc-clean doc-install doc-uninstall
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) .DEFAULT_GOAL := all