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 3601474dc7SDaniel Bristot de OliveiraFEATURE_TESTS += libbpf 3701474dc7SDaniel Bristot de OliveiraFEATURE_TESTS += clang-bpf-co-re 38e2b48b22STomas GlozarFEATURE_TESTS += bpftool-skeletons 3901474dc7SDaniel Bristot de OliveiraFEATURE_DISPLAY := libtraceevent 4001474dc7SDaniel Bristot de OliveiraFEATURE_DISPLAY += libtracefs 4120aec89aSSteven Rostedt (Google)FEATURE_DISPLAY += libcpupower 4201474dc7SDaniel Bristot de OliveiraFEATURE_DISPLAY += libbpf 4301474dc7SDaniel Bristot de OliveiraFEATURE_DISPLAY += clang-bpf-co-re 4420aec89aSSteven Rostedt (Google)FEATURE_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 5001474dc7SDaniel Bristot de Oliveira 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) 5479ce8f43SDaniel 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 5979ce8f43SDaniel Bristot de Oliveiraendif 6001474dc7SDaniel Bristot de Oliveira 6179ce8f43SDaniel Bristot de Oliveiraifeq ($(config),1) 6201474dc7SDaniel Bristot de Oliveira include $(srctree)/tools/build/Makefile.feature 6379ce8f43SDaniel Bristot de Oliveira include Makefile.config 6401474dc7SDaniel Bristot de Oliveiraendif 6501474dc7SDaniel Bristot de Oliveira 6679ce8f43SDaniel Bristot de OliveiraCFLAGS += $(INCLUDES) $(LIB_INCLUDES) 6701474dc7SDaniel Bristot de Oliveira 6801474dc7SDaniel Bristot de Oliveiraexport CFLAGS OUTPUT srctree 6901474dc7SDaniel Bristot de Oliveira 70d40d48e1SDaniel Bristot de Oliveiraifeq ($(BUILD_BPF_SKEL),1) 7101474dc7SDaniel Bristot de Oliveirasrc/timerlat.bpf.o: src/timerlat.bpf.c 7201474dc7SDaniel Bristot de Oliveira $(QUIET_CLANG)$(CLANG) -g -O2 -target bpf -c $(filter %.c,$^) -o $@ 73d40d48e1SDaniel Bristot de Oliveira 7401474dc7SDaniel Bristot de Oliveirasrc/timerlat.skel.h: src/timerlat.bpf.o 7501474dc7SDaniel Bristot de Oliveira $(QUIET_GENSKEL)$(SYSTEM_BPFTOOL) gen skeleton $< > $@ 76d40d48e1SDaniel Bristot de Oliveiraelse 7701474dc7SDaniel Bristot de Oliveirasrc/timerlat.skel.h: 7801474dc7SDaniel Bristot de Oliveira $(Q)echo '/* BPF skeleton is disabled */' > src/timerlat.skel.h 7901474dc7SDaniel Bristot de Oliveiraendif 8001474dc7SDaniel Bristot de Oliveira 8101474dc7SDaniel Bristot de Oliveira$(RTLA): $(RTLA_IN) 82*ab16714fSTomas Glozar $(QUIET_LINK)$(CC) $(LDFLAGS) -o $(RTLA) $(RTLA_IN) $(EXTLIBS) 83*ab16714fSTomas Glozar 84*ab16714fSTomas Glozarstatic: $(RTLA_IN) 85 $(eval LDFLAGS += -static) 86 $(QUIET_LINK)$(CC) -static $(LDFLAGS) -o $(RTLA)-static $(RTLA_IN) $(EXTLIBS) 87 88rtla.%: fixdep FORCE 89 make -f $(srctree)/tools/build/Makefile.build dir=. $@ 90 91$(RTLA_IN): fixdep FORCE src/timerlat.skel.h 92 make $(build)=rtla 93 94clean: doc_clean fixdep-clean 95 $(call QUIET_CLEAN, rtla) 96 $(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete 97 $(Q)rm -f rtla rtla-static fixdep FEATURE-DUMP rtla-* 98 $(Q)rm -rf feature 99 $(Q)rm -f src/timerlat.bpf.o src/timerlat.skel.h 100check: $(RTLA) 101 RTLA=$(RTLA) prove -o -f tests/ 102.PHONY: FORCE clean check 103