# SPDX-License-Identifier: GPL-2.0-only STOP_ERROR := LIBTRACEEVENT_MIN_VERSION = 1.5 LIBTRACEFS_MIN_VERSION = 1.6 define lib_setup $(eval LIB_INCLUDES += $(shell sh -c "$(PKG_CONFIG) --cflags lib$(1)")) $(eval LDFLAGS += $(shell sh -c "$(PKG_CONFIG) --libs-only-L lib$(1)")) $(eval EXTLIBS += $(shell sh -c "$(PKG_CONFIG) --libs-only-l lib$(1)")) endef $(call feature_check,libtraceevent) ifeq ($(feature-libtraceevent), 1) $(call detected,CONFIG_LIBTRACEEVENT) TEST = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEEVENT_MIN_VERSION) libtraceevent > /dev/null 2>&1 && echo y || echo n") ifeq ($(TEST),n) $(info libtraceevent version is too low, it must be at least $(LIBTRACEEVENT_MIN_VERSION)) STOP_ERROR := 1 endif $(call lib_setup,traceevent) else STOP_ERROR := 1 $(info libtraceevent is missing. Please install libtraceevent-dev/libtraceevent-devel) endif $(call feature_check,libtracefs) ifeq ($(feature-libtracefs), 1) $(call detected,CONFIG_LIBTRACEFS) TEST = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEFS_MIN_VERSION) libtracefs > /dev/null 2>&1 && echo y || echo n") ifeq ($(TEST),n) $(info libtracefs version is too low, it must be at least $(LIBTRACEFS_MIN_VERSION)) STOP_ERROR := 1 endif $(call lib_setup,tracefs) else STOP_ERROR := 1 $(info libtracefs is missing. Please install libtracefs-dev/libtracefs-devel) endif $(call feature_check,libcpupower) ifeq ($(feature-libcpupower), 1) $(call detected,CONFIG_LIBCPUPOWER) CFLAGS += -DHAVE_LIBCPUPOWER_SUPPORT EXTLIBS += -lcpupower else $(info libcpupower is missing, building without --deepest-idle-state support.) $(info Please install libcpupower-dev/kernel-tools-libs-devel) endif ifndef BUILD_BPF_SKEL # BPF skeletons are used to implement improved sample collection, enable # them by default. BUILD_BPF_SKEL := 1 endif ifeq ($(BUILD_BPF_SKEL),0) $(info BPF skeleton support disabled, building without BPF skeleton support.) endif $(call feature_check,libbpf) ifeq ($(feature-libbpf), 1) $(call detected,CONFIG_LIBBPF) else $(info libbpf is missing, building without BPF skeleton support.) $(info Please install libbpf-dev/libbpf-devel) BUILD_BPF_SKEL := 0 endif $(call feature_check,clang-bpf-co-re) ifeq ($(feature-clang-bpf-co-re), 1) $(call detected,CONFIG_CLANG_BPF_CO_RE) else $(info clang is missing or does not support BPF CO-RE, building without BPF skeleton support.) $(info Please install clang) BUILD_BPF_SKEL := 0 endif $(call feature_check,bpftool-skeletons) ifeq ($(feature-bpftool-skeletons), 1) $(call detected,CONFIG_BPFTOOL_SKELETONS) else $(info bpftool is missing or not supporting skeletons, building without BPF skeleton support.) $(info Please install bpftool) BUILD_BPF_SKEL := 0 endif ifeq ($(BUILD_BPF_SKEL),1) CFLAGS += -DHAVE_BPF_SKEL EXTLIBS += -lbpf endif ifeq ($(STOP_ERROR),1) $(error Please, check the errors above.) endif