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