xref: /linux/tools/tracing/rtla/Makefile (revision 0fc8f6200d2313278fbf4539bbab74677c685531)
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