################################################################################
#
# rtla
#
################################################################################

LINUX_TOOLS += rtla

RTLA_DEPENDENCIES = host-pkgconf libtracefs
RTLA_MAKE_OPTS = $(LINUX_MAKE_FLAGS) \
	CC=$(TARGET_CC) \
	EXTRA_CFLAGS="-D_GNU_SOURCE" \
	LDFLAGS="$(TARGET_LDFLAGS)" \
	PKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig

ifeq ($(BR2_TOOLCHAIN_HAS_SSP),)
define RTLA_DISABLE_STACK_PROTECTOR
	$(SED) 's/-fstack-protector.* //' $(LINUX_DIR)/tools/tracing/rtla/Makefile
endef
endif

define RTLA_LINUX_CONFIG_FIXUPS
	$(call KCONFIG_ENABLE_OPT,CONFIG_FTRACE)
	$(call KCONFIG_ENABLE_OPT,CONFIG_TIMERLAT_TRACER)
	$(call KCONFIG_ENABLE_OPT,CONFIG_HIST_TRIGGERS)
endef

define RTLA_BUILD_CMDS
	$(Q)if ! grep install $(LINUX_DIR)/tools/tracing/rtla/Makefile >/dev/null 2>&1 ; then \
		echo "Your kernel version is too old and does not implement the rtla tool." ; \
		echo "At least kernel 5.19 must be used." ; \
		exit 1 ; \
	fi
	$(RTLA_DISABLE_STACK_PROTECTOR)
	$(TARGET_MAKE_ENV) $(MAKE) $(RTLA_MAKE_OPTS) \
		-C $(LINUX_DIR)/tools/tracing rtla
endef

# make rtla_install build and install by default documentation using rst2man
# but it's not available in Buildroot and we don't want manual files in target
# folder so let's simply install the resulting rtla binary and create symlinks
# like Linux does in its tools/tracing/rtla/Makefile
define RTLA_INSTALL_TARGET_CMDS
	$(INSTALL) -m 0755 -D $(LINUX_DIR)/tools/tracing/rtla/rtla $(TARGET_DIR)/usr/bin
	ln -sf rtla $(TARGET_DIR)/usr/bin/osnoise
	ln -sf rtla $(TARGET_DIR)/usr/bin/timerlat

	# Check if hwnoise is provided or not
	if grep -q hwnoise $(LINUX_DIR)/tools/tracing/rtla/Makefile; then \
		ln -sf rtla $(TARGET_DIR)/usr/bin/hwnoise ; \
	fi
endef
