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 36*3a4080e5SCosta ShulyupinFEATURE_TESTS += libcheck 379dc3766eSTomas GlozarFEATURE_TESTS += libbpf 389dc3766eSTomas GlozarFEATURE_TESTS += clang-bpf-co-re 399dc3766eSTomas GlozarFEATURE_TESTS += bpftool-skeletons 4001474dc7SDaniel Bristot de OliveiraFEATURE_DISPLAY := libtraceevent 4101474dc7SDaniel Bristot de OliveiraFEATURE_DISPLAY += libtracefs 42e2b48b22STomas GlozarFEATURE_DISPLAY += libcpupower 43*3a4080e5SCosta ShulyupinFEATURE_DISPLAY += libcheck 449dc3766eSTomas GlozarFEATURE_DISPLAY += libbpf 459dc3766eSTomas GlozarFEATURE_DISPLAY += clang-bpf-co-re 469dc3766eSTomas GlozarFEATURE_DISPLAY += bpftool-skeletons 4701474dc7SDaniel Bristot de Oliveira 4801474dc7SDaniel Bristot de Oliveiraall: $(RTLA) 4920aec89aSSteven Rostedt (Google) 5001474dc7SDaniel Bristot de Oliveirainclude $(srctree)/tools/build/Makefile.include 5101474dc7SDaniel Bristot de Oliveirainclude Makefile.rtla 52*3a4080e5SCosta Shulyupininclude tests/unit/Makefile.unit 5320aec89aSSteven Rostedt (Google) 5401474dc7SDaniel Bristot de Oliveira# check for dependencies only on required targets 5501474dc7SDaniel Bristot de OliveiraNON_CONFIG_TARGETS := clean install tarball doc doc_clean doc_install 5620aec89aSSteven Rostedt (Google) 5701474dc7SDaniel Bristot de Oliveiraconfig := 1 5801474dc7SDaniel Bristot de Oliveiraifdef MAKECMDGOALS 5901474dc7SDaniel Bristot de Oliveiraifeq ($(filter-out $(NON_CONFIG_TARGETS),$(MAKECMDGOALS)),) 6001474dc7SDaniel Bristot de Oliveira config := 0 6101474dc7SDaniel Bristot de Oliveiraendif 6220aec89aSSteven Rostedt (Google)endif 6379ce8f43SDaniel Bristot de Oliveira 6401474dc7SDaniel Bristot de Oliveiraifeq ($(config),1) 6501474dc7SDaniel Bristot de Oliveira include $(srctree)/tools/build/Makefile.feature 6601474dc7SDaniel Bristot de Oliveira include Makefile.config 6701474dc7SDaniel Bristot de Oliveiraendif 6879ce8f43SDaniel Bristot de Oliveira 6901474dc7SDaniel Bristot de OliveiraCFLAGS += $(INCLUDES) $(LIB_INCLUDES) 7079ce8f43SDaniel Bristot de Oliveira 7101474dc7SDaniel Bristot de Oliveiraexport CFLAGS OUTPUT srctree 7279ce8f43SDaniel Bristot de Oliveira 73e34293ddSTomas Glozarifeq ($(BUILD_BPF_SKEL),1) 74e34293ddSTomas Glozarsrc/timerlat.bpf.o: src/timerlat.bpf.c 75e34293ddSTomas Glozar $(QUIET_CLANG)$(CLANG) -g -O2 -target bpf -c $(filter %.c,$^) -o $@ 76e34293ddSTomas Glozar 77e34293ddSTomas Glozarsrc/timerlat.skel.h: src/timerlat.bpf.o 78814d051eSTomas Glozar $(QUIET_GENSKEL)$(SYSTEM_BPFTOOL) gen skeleton $< > $@ 790304a3b7STomas Glozar 800304a3b7STomas Glozarexample/timerlat_bpf_action.o: example/timerlat_bpf_action.c 810304a3b7STomas Glozar $(QUIET_CLANG)$(CLANG) -g -O2 -target bpf -c $(filter %.c,$^) -o $@ 825525aebdSTomas Glozar 835525aebdSTomas Glozartests/bpf/bpf_action_map.o: tests/bpf/bpf_action_map.c 845525aebdSTomas Glozar $(QUIET_CLANG)$(CLANG) -g -O2 -target bpf -c $(filter %.c,$^) -o $@ 85e34293ddSTomas Glozarelse 86e34293ddSTomas Glozarsrc/timerlat.skel.h: 87e34293ddSTomas Glozar $(Q)echo '/* BPF skeleton is disabled */' > src/timerlat.skel.h 880304a3b7STomas Glozar 890304a3b7STomas Glozarexample/timerlat_bpf_action.o: example/timerlat_bpf_action.c 900304a3b7STomas Glozar $(Q)echo "BPF skeleton support is disabled, skipping example/timerlat_bpf_action.o" 915525aebdSTomas Glozar 925525aebdSTomas Glozartests/bpf/bpf_action_map.o: tests/bpf/bpf_action_map.c 935525aebdSTomas Glozar $(Q)echo "BPF skeleton support is disabled, skipping tests/bpf/bpf_action_map.o" 94e34293ddSTomas Glozarendif 95e34293ddSTomas Glozar 9601474dc7SDaniel Bristot de Oliveira$(RTLA): $(RTLA_IN) 9701474dc7SDaniel Bristot de Oliveira $(QUIET_LINK)$(CC) $(LDFLAGS) -o $(RTLA) $(RTLA_IN) $(EXTLIBS) 9879ce8f43SDaniel Bristot de Oliveira 9901474dc7SDaniel Bristot de Oliveirastatic: $(RTLA_IN) 10001474dc7SDaniel Bristot de Oliveira $(eval LDFLAGS += -static) 10101474dc7SDaniel Bristot de Oliveira $(QUIET_LINK)$(CC) -static $(LDFLAGS) -o $(RTLA)-static $(RTLA_IN) $(EXTLIBS) 102d40d48e1SDaniel Bristot de Oliveira 10301474dc7SDaniel Bristot de Oliveirartla.%: fixdep FORCE 10401474dc7SDaniel Bristot de Oliveira make -f $(srctree)/tools/build/Makefile.build dir=. $@ 105d40d48e1SDaniel Bristot de Oliveira 106e34293ddSTomas Glozar$(RTLA_IN): fixdep FORCE src/timerlat.skel.h 10701474dc7SDaniel Bristot de Oliveira make $(build)=rtla 108d40d48e1SDaniel Bristot de Oliveira 10901474dc7SDaniel Bristot de Oliveiraclean: doc_clean fixdep-clean 11001474dc7SDaniel Bristot de Oliveira $(call QUIET_CLEAN, rtla) 11101474dc7SDaniel Bristot de Oliveira $(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete 11201474dc7SDaniel Bristot de Oliveira $(Q)rm -f rtla rtla-static fixdep FEATURE-DUMP rtla-* 11301474dc7SDaniel Bristot de Oliveira $(Q)rm -rf feature 1140304a3b7STomas Glozar $(Q)rm -f src/timerlat.bpf.o src/timerlat.skel.h example/timerlat_bpf_action.o 115*3a4080e5SCosta Shulyupin $(Q)rm -f $(UNIT_TESTS) 116*3a4080e5SCosta Shulyupin 1175525aebdSTomas Glozarcheck: $(RTLA) tests/bpf/bpf_action_map.o 118fbb8ed66STomas Glozar RTLA=$(RTLA) BPFTOOL=$(SYSTEM_BPFTOOL) prove -o -f -v tests/ 1190304a3b7STomas Glozarexamples: example/timerlat_bpf_action.o 120ab16714fSTomas Glozar.PHONY: FORCE clean check 121