1################################################################################
2#
3# rtla
4#
5################################################################################
6
7LINUX_TOOLS += rtla
8
9RTLA_DEPENDENCIES = host-pkgconf libtracefs
10RTLA_MAKE_OPTS = $(LINUX_MAKE_FLAGS) \
11	CC=$(TARGET_CC) \
12	EXTRA_CFLAGS="-D_GNU_SOURCE" \
13	LDFLAGS="$(TARGET_LDFLAGS)" \
14	PKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig
15
16ifeq ($(BR2_TOOLCHAIN_HAS_SSP),)
17define RTLA_DISABLE_STACK_PROTECTOR
18	$(SED) 's/-fstack-protector.* //' $(LINUX_DIR)/tools/tracing/rtla/Makefile
19endef
20endif
21
22define RTLA_LINUX_CONFIG_FIXUPS
23	$(call KCONFIG_ENABLE_OPT,CONFIG_FTRACE)
24	$(call KCONFIG_ENABLE_OPT,CONFIG_TIMERLAT_TRACER)
25	$(call KCONFIG_ENABLE_OPT,CONFIG_HIST_TRIGGERS)
26endef
27
28define RTLA_BUILD_CMDS
29	$(Q)if ! grep install $(LINUX_DIR)/tools/tracing/rtla/Makefile >/dev/null 2>&1 ; then \
30		echo "Your kernel version is too old and does not implement the rtla tool." ; \
31		echo "At least kernel 5.19 must be used." ; \
32		exit 1 ; \
33	fi
34	$(RTLA_DISABLE_STACK_PROTECTOR)
35	$(TARGET_MAKE_ENV) $(MAKE) $(RTLA_MAKE_OPTS) \
36		-C $(LINUX_DIR)/tools/tracing rtla
37endef
38
39# make rtla_install build and install by default documentation using rst2man
40# but it's not available in Buildroot and we don't want manual files in target
41# folder so let's simply install the resulting rtla binary and create symlinks
42# like Linux does in its tools/tracing/rtla/Makefile
43define RTLA_INSTALL_TARGET_CMDS
44	$(INSTALL) -m 0755 -D $(LINUX_DIR)/tools/tracing/rtla/rtla $(TARGET_DIR)/usr/bin
45	ln -sf rtla $(TARGET_DIR)/usr/bin/osnoise
46	ln -sf rtla $(TARGET_DIR)/usr/bin/timerlat
47
48	# Check if hwnoise is provided or not
49	if grep -q hwnoise $(LINUX_DIR)/tools/tracing/rtla/Makefile; then \
50		ln -sf rtla $(TARGET_DIR)/usr/bin/hwnoise ; \
51	fi
52endef
53