1 # SPDX-License-Identifier: GPL-2.0-only
2 include ..
/..
/scripts
/Makefile.
include
3 include ..
/..
/scripts
/utilities.mak
6 srctree
:= $(patsubst %/,%,$(dir $(CURDIR
)))
7 srctree
:= $(patsubst %/,%,$(dir $(srctree
)))
8 srctree
:= $(patsubst %/,%,$(dir $(srctree
)))
17 BPF_DIR
= $(srctree
)/tools
/lib
/bpf
/
20 LIBBPF_OUTPUT
= $(OUTPUT
)/libbpf
/
21 LIBBPF_PATH
= $(LIBBPF_OUTPUT
)
23 LIBBPF_PATH
= $(BPF_DIR
)
26 LIBBPF
= $(LIBBPF_PATH
)libbpf.a
28 BPFTOOL_VERSION
:= $(shell make
-rR
--no-print-directory
-sC ..
/..
/.. kernelversion
)
31 $(if
$(LIBBPF_OUTPUT
),@mkdir
-p
$(LIBBPF_OUTPUT
))
32 $(Q
)$(MAKE
) -C
$(BPF_DIR
) OUTPUT
=$(LIBBPF_OUTPUT
) $(LIBBPF_OUTPUT
)libbpf.a
35 $(call QUIET_CLEAN
, libbpf
)
36 $(Q
)$(MAKE
) -C
$(BPF_DIR
) OUTPUT
=$(LIBBPF_OUTPUT
) clean >/dev
/null
39 bash_compdir ?
= /usr
/share
/bash-completion
/completions
42 CFLAGS
+= -W
-Wall
-Wextra
-Wno-unused-parameter
-Wno-missing-field-initializers
43 CFLAGS
+= $(filter-out -Wswitch-enum
,$(EXTRA_WARNINGS
))
44 CFLAGS
+= -DPACKAGE
='"bpftool"' -D__EXPORTED_HEADERS__ \
45 -I
$(srctree
)/kernel
/bpf
/ \
46 -I
$(srctree
)/tools
/include \
47 -I
$(srctree
)/tools
/include/uapi \
48 -I
$(srctree
)/tools
/lib \
49 -I
$(srctree
)/tools
/perf
50 CFLAGS
+= -DBPFTOOL_VERSION
='"$(BPFTOOL_VERSION)"'
51 ifneq ($(EXTRA_CFLAGS
),)
52 CFLAGS
+= $(EXTRA_CFLAGS
)
54 ifneq ($(EXTRA_LDFLAGS
),)
55 LDFLAGS
+= $(EXTRA_LDFLAGS
)
58 LIBS
= $(LIBBPF
) -lelf
-lz
63 FEATURE_USER
= .bpftool
64 FEATURE_TESTS
= libbfd disassembler-four-args reallocarray zlib
65 FEATURE_DISPLAY
= libbfd disassembler-four-args zlib
68 NON_CHECK_FEAT_TARGETS
:= clean uninstall doc doc-clean doc-install doc-uninstall
70 ifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS
),$(MAKECMDGOALS
)),)
75 ifeq ($(check_feat
),1)
76 ifeq ($(FEATURES_DUMP
),)
77 include $(srctree
)/tools
/build
/Makefile.feature
79 include $(FEATURES_DUMP
)
83 ifeq ($(feature-disassembler-four-args
), 1)
84 CFLAGS
+= -DDISASM_FOUR_ARGS_SIGNATURE
87 ifeq ($(feature-reallocarray
), 0)
88 CFLAGS
+= -DCOMPAT_NEED_REALLOCARRAY
91 include $(wildcard $(OUTPUT
)*.d
)
95 BFD_SRCS
= jit_disasm.c
97 SRCS
= $(filter-out $(BFD_SRCS
),$(wildcard *.c
))
99 ifeq ($(feature-libbfd
),1)
100 LIBS
+= -lbfd
-ldl
-lopcodes
101 else ifeq ($(feature-libbfd-liberty
),1)
102 LIBS
+= -lbfd
-ldl
-lopcodes
-liberty
103 else ifeq ($(feature-libbfd-liberty-z
),1)
104 LIBS
+= -lbfd
-ldl
-lopcodes
-liberty
-lz
107 ifneq ($(filter -lbfd
,$(LIBS
)),)
108 CFLAGS
+= -DHAVE_LIBBFD_SUPPORT
112 OBJS
= $(patsubst %.c
,$(OUTPUT
)%.o
,$(SRCS
)) $(OUTPUT
)disasm.o
114 $(OUTPUT
)disasm.o
: $(srctree
)/kernel
/bpf
/disasm.c
115 $(QUIET_CC
)$(COMPILE.c
) -MMD
-o
$@
$<
117 $(OUTPUT
)feature.o
: | zdep
119 $(OUTPUT
)bpftool
: $(OBJS
) $(LIBBPF
)
120 $(QUIET_LINK
)$(CC
) $(CFLAGS
) $(LDFLAGS
) -o
$@
$(OBJS
) $(LIBS
)
123 $(QUIET_CC
)$(COMPILE.c
) -MMD
-o
$@
$<
125 clean: $(LIBBPF
)-clean
126 $(call QUIET_CLEAN
, bpftool
)
127 $(Q
)$(RM
) -- $(OUTPUT
)bpftool
$(OUTPUT
)*.o
$(OUTPUT
)*.d
128 $(Q
)$(RM
) -r
-- $(OUTPUT
)libbpf
/
129 $(call QUIET_CLEAN
, core-gen
)
130 $(Q
)$(RM
) -- $(OUTPUT
)FEATURE-DUMP.bpftool
131 $(Q
)$(RM
) -r
-- $(OUTPUT
)feature
/
133 install: $(OUTPUT
)bpftool
134 $(call QUIET_INSTALL
, bpftool
)
135 $(Q
)$(INSTALL
) -m
0755 -d
$(DESTDIR
)$(prefix)/sbin
136 $(Q
)$(INSTALL
) $(OUTPUT
)bpftool
$(DESTDIR
)$(prefix)/sbin
/bpftool
137 $(Q
)$(INSTALL
) -m
0755 -d
$(DESTDIR
)$(bash_compdir
)
138 $(Q
)$(INSTALL
) -m
0644 bash-completion
/bpftool
$(DESTDIR
)$(bash_compdir
)
141 $(call QUIET_UNINST
, bpftool
)
142 $(Q
)$(RM
) -- $(DESTDIR
)$(prefix)/sbin
/bpftool
143 $(Q
)$(RM
) -- $(DESTDIR
)$(bash_compdir
)/bpftool
146 $(call descend
,Documentation
)
149 $(call descend
,Documentation
,clean)
152 $(call descend
,Documentation
,install)
155 $(call descend
,Documentation
,uninstall)
160 @if
[ "$(feature-zlib)" != "1" ]; then echo
"No zlib found"; exit
1 ; fi
162 .PHONY
: all FORCE
clean install uninstall zdep
163 .PHONY
: doc doc-clean doc-install doc-uninstall