101474dc7SDaniel Bristot de Oliveira# SPDX-License-Identifier: GPL-2.0-only 279ce8f43SDaniel Bristot de Oliveira 301474dc7SDaniel Bristot de Oliveiraifeq ($(srctree),) 401474dc7SDaniel Bristot de Oliveira srctree := $(patsubst %/,%,$(dir $(CURDIR))) 501474dc7SDaniel Bristot de Oliveira srctree := $(patsubst %/,%,$(dir $(srctree))) 601474dc7SDaniel Bristot de Oliveira srctree := $(patsubst %/,%,$(dir $(srctree))) 7bc4cbc9dSDaniel Bristot de Oliveiraendif 8bc4cbc9dSDaniel Bristot de Oliveira 901474dc7SDaniel Bristot de Oliveirainclude $(srctree)/tools/scripts/Makefile.include 1079ce8f43SDaniel Bristot de Oliveira 1101474dc7SDaniel Bristot de Oliveira# O is an alias for OUTPUT 1201474dc7SDaniel Bristot de OliveiraOUTPUT := $(O) 1379ce8f43SDaniel Bristot de Oliveira 1401474dc7SDaniel Bristot de Oliveiraifeq ($(OUTPUT),) 1501474dc7SDaniel Bristot de Oliveira OUTPUT := $(CURDIR) 16d40d48e1SDaniel Bristot de Oliveiraelse 1701474dc7SDaniel Bristot de Oliveira # subdir is used by the ../Makefile in $(call descend,) 1801474dc7SDaniel Bristot de Oliveira ifneq ($(subdir),) 1901474dc7SDaniel Bristot de Oliveira OUTPUT := $(OUTPUT)/$(subdir) 2001474dc7SDaniel Bristot de Oliveira endif 21d40d48e1SDaniel Bristot de Oliveiraendif 2279ce8f43SDaniel Bristot de Oliveira 2301474dc7SDaniel Bristot de Oliveiraifneq ($(patsubst %/,,$(lastword $(OUTPUT))),) 2401474dc7SDaniel Bristot de Oliveira OUTPUT := $(OUTPUT)/ 25fe4d0d5dSDaniel Bristot de Oliveiraendif 26fe4d0d5dSDaniel Bristot de Oliveira 2701474dc7SDaniel Bristot de OliveiraRTLA := $(OUTPUT)rtla 2801474dc7SDaniel Bristot de OliveiraRTLA_IN := $(RTLA)-in.o 2901474dc7SDaniel Bristot de Oliveira 3001474dc7SDaniel Bristot de OliveiraVERSION := $(shell sh -c "make -sC ../../.. kernelversion | grep -v make") 3101474dc7SDaniel Bristot de OliveiraDOCSRC := ../../../Documentation/tools/rtla/ 3201474dc7SDaniel Bristot de Oliveira 3301474dc7SDaniel Bristot de OliveiraFEATURE_TESTS := libtraceevent 3401474dc7SDaniel Bristot de OliveiraFEATURE_TESTS += libtracefs 35e2b48b22STomas GlozarFEATURE_TESTS += libcpupower 369dc3766eSTomas GlozarFEATURE_TESTS += libbpf 379dc3766eSTomas GlozarFEATURE_TESTS += clang-bpf-co-re 389dc3766eSTomas GlozarFEATURE_TESTS += bpftool-skeletons 3901474dc7SDaniel Bristot de OliveiraFEATURE_DISPLAY := libtraceevent 4001474dc7SDaniel Bristot de OliveiraFEATURE_DISPLAY += libtracefs 41e2b48b22STomas GlozarFEATURE_DISPLAY += libcpupower 429dc3766eSTomas GlozarFEATURE_DISPLAY += libbpf 439dc3766eSTomas GlozarFEATURE_DISPLAY += clang-bpf-co-re 449dc3766eSTomas GlozarFEATURE_DISPLAY += bpftool-skeletons 4501474dc7SDaniel Bristot de Oliveira 4601474dc7SDaniel Bristot de Oliveiraall: $(RTLA) 4720aec89aSSteven Rostedt (Google) 4801474dc7SDaniel Bristot de Oliveirainclude $(srctree)/tools/build/Makefile.include 4901474dc7SDaniel Bristot de Oliveirainclude Makefile.rtla 5020aec89aSSteven Rostedt (Google) 5101474dc7SDaniel Bristot de Oliveira# check for dependencies only on required targets 5201474dc7SDaniel Bristot de OliveiraNON_CONFIG_TARGETS := clean install tarball doc doc_clean doc_install 5320aec89aSSteven Rostedt (Google) 5401474dc7SDaniel Bristot de Oliveiraconfig := 1 5501474dc7SDaniel Bristot de Oliveiraifdef MAKECMDGOALS 5601474dc7SDaniel Bristot de Oliveiraifeq ($(filter-out $(NON_CONFIG_TARGETS),$(MAKECMDGOALS)),) 5701474dc7SDaniel Bristot de Oliveira config := 0 5801474dc7SDaniel Bristot de Oliveiraendif 5920aec89aSSteven Rostedt (Google)endif 6079ce8f43SDaniel Bristot de Oliveira 6101474dc7SDaniel Bristot de Oliveiraifeq ($(config),1) 6201474dc7SDaniel Bristot de Oliveira include $(srctree)/tools/build/Makefile.feature 6301474dc7SDaniel Bristot de Oliveira include Makefile.config 6401474dc7SDaniel Bristot de Oliveiraendif 6579ce8f43SDaniel Bristot de Oliveira 6601474dc7SDaniel Bristot de OliveiraCFLAGS += $(INCLUDES) $(LIB_INCLUDES) 6779ce8f43SDaniel Bristot de Oliveira 6801474dc7SDaniel Bristot de Oliveiraexport CFLAGS OUTPUT srctree 6979ce8f43SDaniel Bristot de Oliveira 70e34293ddSTomas Glozarifeq ($(BUILD_BPF_SKEL),1) 71e34293ddSTomas Glozarsrc/timerlat.bpf.o: src/timerlat.bpf.c 72e34293ddSTomas Glozar $(QUIET_CLANG)$(CLANG) -g -O2 -target bpf -c $(filter %.c,$^) -o $@ 73e34293ddSTomas Glozar 74e34293ddSTomas Glozarsrc/timerlat.skel.h: src/timerlat.bpf.o 75*814d051eSTomas Glozar $(QUIET_GENSKEL)$(SYSTEM_BPFTOOL) gen skeleton $< > $@ 76e34293ddSTomas Glozarelse 77e34293ddSTomas Glozarsrc/timerlat.skel.h: 78e34293ddSTomas Glozar $(Q)echo '/* BPF skeleton is disabled */' > src/timerlat.skel.h 79e34293ddSTomas Glozarendif 80e34293ddSTomas Glozar 8101474dc7SDaniel Bristot de Oliveira$(RTLA): $(RTLA_IN) 8201474dc7SDaniel Bristot de Oliveira $(QUIET_LINK)$(CC) $(LDFLAGS) -o $(RTLA) $(RTLA_IN) $(EXTLIBS) 8379ce8f43SDaniel Bristot de Oliveira 8401474dc7SDaniel Bristot de Oliveirastatic: $(RTLA_IN) 8501474dc7SDaniel Bristot de Oliveira $(eval LDFLAGS += -static) 8601474dc7SDaniel Bristot de Oliveira $(QUIET_LINK)$(CC) -static $(LDFLAGS) -o $(RTLA)-static $(RTLA_IN) $(EXTLIBS) 87d40d48e1SDaniel Bristot de Oliveira 8801474dc7SDaniel Bristot de Oliveirartla.%: fixdep FORCE 8901474dc7SDaniel Bristot de Oliveira make -f $(srctree)/tools/build/Makefile.build dir=. $@ 90d40d48e1SDaniel Bristot de Oliveira 91e34293ddSTomas Glozar$(RTLA_IN): fixdep FORCE src/timerlat.skel.h 9201474dc7SDaniel Bristot de Oliveira make $(build)=rtla 93d40d48e1SDaniel Bristot de Oliveira 9401474dc7SDaniel Bristot de Oliveiraclean: doc_clean fixdep-clean 9501474dc7SDaniel Bristot de Oliveira $(call QUIET_CLEAN, rtla) 9601474dc7SDaniel Bristot de Oliveira $(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete 9701474dc7SDaniel Bristot de Oliveira $(Q)rm -f rtla rtla-static fixdep FEATURE-DUMP rtla-* 9801474dc7SDaniel Bristot de Oliveira $(Q)rm -rf feature 99e34293ddSTomas Glozar $(Q)rm -f src/timerlat.bpf.o src/timerlat.skel.h 100ab16714fSTomas Glozarcheck: $(RTLA) 101ab16714fSTomas Glozar RTLA=$(RTLA) prove -o -f tests/ 102ab16714fSTomas Glozar.PHONY: FORCE clean check 103