Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1# SPDX-License-Identifier: GPL-2.0-only
2
3STOP_ERROR :=
4
5LIBTRACEEVENT_MIN_VERSION = 1.5
6LIBTRACEFS_MIN_VERSION = 1.6
7
8define lib_setup
9 $(eval LIB_INCLUDES += $(shell sh -c "$(PKG_CONFIG) --cflags lib$(1)"))
10 $(eval LDFLAGS += $(shell sh -c "$(PKG_CONFIG) --libs-only-L lib$(1)"))
11 $(eval EXTLIBS += $(shell sh -c "$(PKG_CONFIG) --libs-only-l lib$(1)"))
12endef
13
14$(call feature_check,libtraceevent)
15ifeq ($(feature-libtraceevent), 1)
16 $(call detected,CONFIG_LIBTRACEEVENT)
17
18 TEST = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEEVENT_MIN_VERSION) libtraceevent > /dev/null 2>&1 && echo y || echo n")
19 ifeq ($(TEST),n)
20 $(info libtraceevent version is too low, it must be at least $(LIBTRACEEVENT_MIN_VERSION))
21 STOP_ERROR := 1
22 endif
23
24 $(call lib_setup,traceevent)
25else
26 STOP_ERROR := 1
27 $(info libtraceevent is missing. Please install libtraceevent-dev/libtraceevent-devel)
28endif
29
30$(call feature_check,libtracefs)
31ifeq ($(feature-libtracefs), 1)
32 $(call detected,CONFIG_LIBTRACEFS)
33
34 TEST = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEFS_MIN_VERSION) libtracefs > /dev/null 2>&1 && echo y || echo n")
35 ifeq ($(TEST),n)
36 $(info libtracefs version is too low, it must be at least $(LIBTRACEFS_MIN_VERSION))
37 STOP_ERROR := 1
38 endif
39
40 $(call lib_setup,tracefs)
41else
42 STOP_ERROR := 1
43 $(info libtracefs is missing. Please install libtracefs-dev/libtracefs-devel)
44endif
45
46$(call feature_check,libcpupower)
47ifeq ($(feature-libcpupower), 1)
48 $(call detected,CONFIG_LIBCPUPOWER)
49 CFLAGS += -DHAVE_LIBCPUPOWER_SUPPORT
50 EXTLIBS += -lcpupower
51else
52 $(info libcpupower is missing, building without --deepest-idle-state support.)
53 $(info Please install libcpupower-dev/kernel-tools-libs-devel)
54endif
55
56ifndef BUILD_BPF_SKEL
57 # BPF skeletons are used to implement improved sample collection, enable
58 # them by default.
59 BUILD_BPF_SKEL := 1
60endif
61
62ifeq ($(BUILD_BPF_SKEL),0)
63 $(info BPF skeleton support disabled, building without BPF skeleton support.)
64endif
65
66$(call feature_check,libbpf)
67ifeq ($(feature-libbpf), 1)
68 $(call detected,CONFIG_LIBBPF)
69else
70 $(info libbpf is missing, building without BPF skeleton support.)
71 $(info Please install libbpf-dev/libbpf-devel)
72 BUILD_BPF_SKEL := 0
73endif
74
75$(call feature_check,clang-bpf-co-re)
76ifeq ($(feature-clang-bpf-co-re), 1)
77 $(call detected,CONFIG_CLANG_BPF_CO_RE)
78else
79 $(info clang is missing or does not support BPF CO-RE, building without BPF skeleton support.)
80 $(info Please install clang)
81 BUILD_BPF_SKEL := 0
82endif
83
84$(call feature_check,bpftool-skeletons)
85ifeq ($(feature-bpftool-skeletons), 1)
86 $(call detected,CONFIG_BPFTOOL_SKELETONS)
87else
88 $(info bpftool is missing or not supporting skeletons, building without BPF skeleton support.)
89 $(info Please install bpftool)
90 BUILD_BPF_SKEL := 0
91endif
92
93ifeq ($(BUILD_BPF_SKEL),1)
94 CFLAGS += -DHAVE_BPF_SKEL
95 EXTLIBS += -lbpf
96endif
97
98ifeq ($(STOP_ERROR),1)
99 $(error Please, check the errors above.)
100endif