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