mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-28 00:19:36 +00:00

If tooling required for building BPF CO-RE skeletons is present (that is, libbpf, clang with BPF CO-RE support, and bpftool), turn on HAVE_BPF_SKEL flag. Those requirements are similar to what perf requires, with the difference of using system libbpf and bpftool instead of in-tree versions. rtla can be forcefully built without BPF skeleton support by setting BUILD_BPF_SKEL=0 manually; in that case, a warning is displayed. Cc: John Kacur <jkacur@redhat.com> Cc: Luis Goncalves <lgoncalv@redhat.com> Cc: Gabriele Monaco <gmonaco@redhat.com> Cc: Clark Williams <williams@redhat.com> Link: https://lore.kernel.org/20250218145859.27762-4-tglozar@redhat.com Signed-off-by: Tomas Glozar <tglozar@redhat.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
101 lines
2.9 KiB
Makefile
101 lines
2.9 KiB
Makefile
# 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
|