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 101