From: Ian Rogers Date: Tue, 25 Jun 2024 21:41:13 +0000 (-0700) Subject: perf test: Make tests its own library X-Git-Tag: v6.11-rc1~130^2~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1dad99af1a8211e2afc1b711c0cda4fbdd445ae2;p=thirdparty%2Fkernel%2Flinux.git perf test: Make tests its own library Make the tests code its own library. This is done to avoid compiling code twice, once for the perf tool and once for the perf python module. Signed-off-by: Ian Rogers Reviewed-by: James Clark Cc: Suzuki K Poulose Cc: Kees Cook Cc: Palmer Dabbelt Cc: Albert Ou Cc: Nick Terrell Cc: Gary Guo Cc: Alex Gaynor Cc: Boqun Feng Cc: Wedson Almeida Filho Cc: Ze Gao Cc: Alice Ryhl Cc: Andrei Vagin Cc: Yicong Yang Cc: Jonathan Cameron Cc: Guo Ren Cc: Miguel Ojeda Cc: Will Deacon Cc: Mike Leach Cc: Leo Yan Cc: Oliver Upton Cc: John Garry Cc: Benno Lossin Cc: Björn Roy Baron Cc: Andreas Hindborg Cc: Paul Walmsley Signed-off-by: Namhyung Kim Link: https://lore.kernel.org/r/20240625214117.953777-5-irogers@google.com --- diff --git a/tools/perf/Build b/tools/perf/Build index 16ed1357202ba..fddd45ab35b47 100644 --- a/tools/perf/Build +++ b/tools/perf/Build @@ -36,7 +36,7 @@ endif perf-$(CONFIG_LIBELF) += builtin-probe.o perf-y += bench/ -perf-y += tests/ +perf-test-y += tests/ perf-y += perf.o @@ -55,6 +55,7 @@ CFLAGS_builtin-report.o += -DDOCDIR="BUILD_STR($(srcdir_SQ)/Documentation)" perf-y += util/ perf-y += arch/ +perf-test-y += arch/ perf-ui-y += ui/ perf-y += scripts/ diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf index 9640c6ae1837c..9fa69dd0b4728 100644 --- a/tools/perf/Makefile.perf +++ b/tools/perf/Makefile.perf @@ -425,6 +425,9 @@ endif export PERL_PATH +LIBPERF_TEST_IN := $(OUTPUT)perf-test-in.o +LIBPERF_TEST := $(OUTPUT)libperf-test.a + LIBPERF_UI_IN := $(OUTPUT)perf-ui-in.o LIBPERF_UI := $(OUTPUT)libperf-ui.a @@ -435,7 +438,7 @@ PERFLIBS = $(LIBAPI) $(LIBPERF) $(LIBSUBCMD) $(LIBSYMBOL) ifdef LIBBPF_STATIC PERFLIBS += $(LIBBPF) endif -PERFLIBS += $(LIBPERF_UI) $(LIBPMU_EVENTS) +PERFLIBS += $(LIBPERF_TEST) $(LIBPERF_UI) $(LIBPMU_EVENTS) # We choose to avoid "if .. else if .. else .. endif endif" # because maintaining the nesting to match is a pain. If @@ -737,6 +740,12 @@ $(LIBPMU_EVENTS_IN): FORCE prepare $(LIBPMU_EVENTS): $(LIBPMU_EVENTS_IN) $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $< +$(LIBPERF_TEST_IN): FORCE prepare + $(Q)$(MAKE) $(build)=perf-test + +$(LIBPERF_TEST): $(LIBPERF_TEST_IN) + $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $< + $(LIBPERF_UI_IN): FORCE prepare $(Q)$(MAKE) $(build)=perf-ui diff --git a/tools/perf/arch/Build b/tools/perf/arch/Build index 688818844c113..6dd68c17924c4 100644 --- a/tools/perf/arch/Build +++ b/tools/perf/arch/Build @@ -1,2 +1,3 @@ perf-y += common.o perf-y += $(SRCARCH)/ +perf-test-y += $(SRCARCH)/ diff --git a/tools/perf/arch/arm/Build b/tools/perf/arch/arm/Build index 36222e64bbf7d..6b4fdec521220 100644 --- a/tools/perf/arch/arm/Build +++ b/tools/perf/arch/arm/Build @@ -1,2 +1,2 @@ perf-y += util/ -perf-$(CONFIG_DWARF_UNWIND) += tests/ +perf-test-$(CONFIG_DWARF_UNWIND) += tests/ diff --git a/tools/perf/arch/arm/tests/Build b/tools/perf/arch/arm/tests/Build index bc8e97380c826..599efa5457271 100644 --- a/tools/perf/arch/arm/tests/Build +++ b/tools/perf/arch/arm/tests/Build @@ -1,5 +1,5 @@ -perf-y += regs_load.o -perf-y += dwarf-unwind.o -perf-y += vectors-page.o +perf-test-y += regs_load.o +perf-test-y += dwarf-unwind.o +perf-test-y += vectors-page.o -perf-y += arch-tests.o +perf-test-y += arch-tests.o diff --git a/tools/perf/arch/arm64/Build b/tools/perf/arch/arm64/Build index a7dd46a5b6785..58b2d965ed869 100644 --- a/tools/perf/arch/arm64/Build +++ b/tools/perf/arch/arm64/Build @@ -1,2 +1,2 @@ perf-y += util/ -perf-y += tests/ +perf-test-y += tests/ diff --git a/tools/perf/arch/arm64/tests/Build b/tools/perf/arch/arm64/tests/Build index e337c09e7f567..d44c9de92d425 100644 --- a/tools/perf/arch/arm64/tests/Build +++ b/tools/perf/arch/arm64/tests/Build @@ -1,5 +1,5 @@ -perf-y += regs_load.o -perf-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o +perf-test-y += regs_load.o +perf-test-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o -perf-y += arch-tests.o -perf-y += cpuid-match.o +perf-test-y += arch-tests.o +perf-test-y += cpuid-match.o diff --git a/tools/perf/arch/powerpc/Build b/tools/perf/arch/powerpc/Build index a7dd46a5b6785..58b2d965ed869 100644 --- a/tools/perf/arch/powerpc/Build +++ b/tools/perf/arch/powerpc/Build @@ -1,2 +1,2 @@ perf-y += util/ -perf-y += tests/ +perf-test-y += tests/ diff --git a/tools/perf/arch/powerpc/tests/Build b/tools/perf/arch/powerpc/tests/Build index 3526ab0af9f9a..2750269506452 100644 --- a/tools/perf/arch/powerpc/tests/Build +++ b/tools/perf/arch/powerpc/tests/Build @@ -1,4 +1,4 @@ -perf-$(CONFIG_DWARF_UNWIND) += regs_load.o -perf-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o +perf-test-$(CONFIG_DWARF_UNWIND) += regs_load.o +perf-test-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o -perf-y += arch-tests.o +perf-test-y += arch-tests.o diff --git a/tools/perf/arch/x86/Build b/tools/perf/arch/x86/Build index ed37013b4289b..132cf8beaca25 100644 --- a/tools/perf/arch/x86/Build +++ b/tools/perf/arch/x86/Build @@ -1,5 +1,5 @@ perf-y += util/ -perf-y += tests/ +perf-test-y += tests/ ifdef SHELLCHECK SHELL_TESTS := entry/syscalls/syscalltbl.sh @@ -13,4 +13,4 @@ $(OUTPUT)%.shellcheck_log: % $(call rule_mkdir) $(Q)$(call echo-cmd,test)shellcheck -a -S warning "$<" > $@ || (cat $@ && rm $@ && false) -perf-y += $(TEST_LOGS) +perf-test-y += $(TEST_LOGS) diff --git a/tools/perf/arch/x86/tests/Build b/tools/perf/arch/x86/tests/Build index c1e3b7d395544..3227053f3355f 100644 --- a/tools/perf/arch/x86/tests/Build +++ b/tools/perf/arch/x86/tests/Build @@ -1,15 +1,15 @@ -perf-$(CONFIG_DWARF_UNWIND) += regs_load.o -perf-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o +perf-test-$(CONFIG_DWARF_UNWIND) += regs_load.o +perf-test-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o -perf-y += arch-tests.o -perf-y += sample-parsing.o -perf-y += hybrid.o -perf-$(CONFIG_AUXTRACE) += intel-pt-test.o +perf-test-y += arch-tests.o +perf-test-y += sample-parsing.o +perf-test-y += hybrid.o +perf-test-$(CONFIG_AUXTRACE) += intel-pt-test.o ifeq ($(CONFIG_EXTRA_TESTS),y) -perf-$(CONFIG_AUXTRACE) += insn-x86.o +perf-test-$(CONFIG_AUXTRACE) += insn-x86.o endif -perf-$(CONFIG_X86_64) += bp-modify.o -perf-y += amd-ibs-via-core-pmu.o +perf-test-$(CONFIG_X86_64) += bp-modify.o +perf-test-y += amd-ibs-via-core-pmu.o ifdef SHELLCHECK SHELL_TESTS := gen-insn-x86-dat.sh @@ -23,4 +23,4 @@ $(OUTPUT)%.shellcheck_log: % $(call rule_mkdir) $(Q)$(call echo-cmd,test)shellcheck -a -S warning "$<" > $@ || (cat $@ && rm $@ && false) -perf-y += $(TEST_LOGS) +perf-test-y += $(TEST_LOGS) diff --git a/tools/perf/tests/Build b/tools/perf/tests/Build index c7f9d96760959..5671ee5300195 100644 --- a/tools/perf/tests/Build +++ b/tools/perf/tests/Build @@ -1,82 +1,82 @@ # SPDX-License-Identifier: GPL-2.0 -perf-y += builtin-test.o -perf-y += tests-scripts.o -perf-y += parse-events.o -perf-y += dso-data.o -perf-y += attr.o -perf-y += vmlinux-kallsyms.o -perf-$(CONFIG_LIBTRACEEVENT) += openat-syscall.o -perf-$(CONFIG_LIBTRACEEVENT) += openat-syscall-all-cpus.o -perf-$(CONFIG_LIBTRACEEVENT) += openat-syscall-tp-fields.o -perf-$(CONFIG_LIBTRACEEVENT) += mmap-basic.o -perf-y += perf-record.o -perf-y += evsel-roundtrip-name.o -perf-$(CONFIG_LIBTRACEEVENT) += evsel-tp-sched.o -perf-y += fdarray.o -perf-y += pmu.o -perf-y += pmu-events.o -perf-y += hists_common.o -perf-y += hists_link.o -perf-y += hists_filter.o -perf-y += hists_output.o -perf-y += hists_cumulate.o -perf-y += python-use.o -perf-y += bp_signal.o -perf-y += bp_signal_overflow.o -perf-y += bp_account.o -perf-y += wp.o -perf-y += task-exit.o -perf-y += sw-clock.o -perf-y += mmap-thread-lookup.o -perf-y += thread-maps-share.o -perf-$(CONFIG_LIBTRACEEVENT) += switch-tracking.o -perf-y += keep-tracking.o -perf-y += code-reading.o -perf-y += sample-parsing.o -perf-y += parse-no-sample-id-all.o -perf-y += kmod-path.o -perf-y += thread-map.o -perf-y += topology.o -perf-y += mem.o -perf-y += cpumap.o -perf-y += stat.o -perf-y += event_update.o -perf-y += event-times.o -perf-y += expr.o -perf-y += backward-ring-buffer.o -perf-y += sdt.o -perf-y += is_printable_array.o -perf-y += bitmap.o -perf-y += perf-hooks.o -perf-y += unit_number__scnprintf.o -perf-y += mem2node.o -perf-y += maps.o -perf-y += time-utils-test.o -perf-y += genelf.o -perf-y += api-io.o -perf-y += demangle-java-test.o -perf-y += demangle-ocaml-test.o -perf-y += pfm.o -perf-y += parse-metric.o -perf-y += pe-file-parsing.o -perf-y += expand-cgroup.o -perf-y += perf-time-to-tsc.o -perf-y += dlfilter-test.o -perf-y += sigtrap.o -perf-y += event_groups.o -perf-y += symbols.o -perf-y += util.o +perf-test-y += builtin-test.o +perf-test-y += tests-scripts.o +perf-test-y += parse-events.o +perf-test-y += dso-data.o +perf-test-y += attr.o +perf-test-y += vmlinux-kallsyms.o +perf-test-$(CONFIG_LIBTRACEEVENT) += openat-syscall.o +perf-test-$(CONFIG_LIBTRACEEVENT) += openat-syscall-all-cpus.o +perf-test-$(CONFIG_LIBTRACEEVENT) += openat-syscall-tp-fields.o +perf-test-$(CONFIG_LIBTRACEEVENT) += mmap-basic.o +perf-test-y += perf-record.o +perf-test-y += evsel-roundtrip-name.o +perf-test-$(CONFIG_LIBTRACEEVENT) += evsel-tp-sched.o +perf-test-y += fdarray.o +perf-test-y += pmu.o +perf-test-y += pmu-events.o +perf-test-y += hists_common.o +perf-test-y += hists_link.o +perf-test-y += hists_filter.o +perf-test-y += hists_output.o +perf-test-y += hists_cumulate.o +perf-test-y += python-use.o +perf-test-y += bp_signal.o +perf-test-y += bp_signal_overflow.o +perf-test-y += bp_account.o +perf-test-y += wp.o +perf-test-y += task-exit.o +perf-test-y += sw-clock.o +perf-test-y += mmap-thread-lookup.o +perf-test-y += thread-maps-share.o +perf-test-$(CONFIG_LIBTRACEEVENT) += switch-tracking.o +perf-test-y += keep-tracking.o +perf-test-y += code-reading.o +perf-test-y += sample-parsing.o +perf-test-y += parse-no-sample-id-all.o +perf-test-y += kmod-path.o +perf-test-y += thread-map.o +perf-test-y += topology.o +perf-test-y += mem.o +perf-test-y += cpumap.o +perf-test-y += stat.o +perf-test-y += event_update.o +perf-test-y += event-times.o +perf-test-y += expr.o +perf-test-y += backward-ring-buffer.o +perf-test-y += sdt.o +perf-test-y += is_printable_array.o +perf-test-y += bitmap.o +perf-test-y += perf-hooks.o +perf-test-y += unit_number__scnprintf.o +perf-test-y += mem2node.o +perf-test-y += maps.o +perf-test-y += time-utils-test.o +perf-test-y += genelf.o +perf-test-y += api-io.o +perf-test-y += demangle-java-test.o +perf-test-y += demangle-ocaml-test.o +perf-test-y += pfm.o +perf-test-y += parse-metric.o +perf-test-y += pe-file-parsing.o +perf-test-y += expand-cgroup.o +perf-test-y += perf-time-to-tsc.o +perf-test-y += dlfilter-test.o +perf-test-y += sigtrap.o +perf-test-y += event_groups.o +perf-test-y += symbols.o +perf-test-y += util.o ifeq ($(SRCARCH),$(filter $(SRCARCH),x86 arm arm64 powerpc)) -perf-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o +perf-test-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o endif CFLAGS_attr.o += -DBINDIR="BUILD_STR($(bindir_SQ))" -DPYTHON="BUILD_STR($(PYTHON_WORD))" CFLAGS_python-use.o += -DPYTHONPATH="BUILD_STR($(OUTPUT)python)" -DPYTHON="BUILD_STR($(PYTHON_WORD))" CFLAGS_dwarf-unwind.o += -fno-optimize-sibling-calls -perf-y += workloads/ +perf-test-y += workloads/ ifdef SHELLCHECK SHELL_TESTS := $(shell find tests/shell -executable -type f -name '*.sh') @@ -90,4 +90,4 @@ $(OUTPUT)%.shellcheck_log: % $(call rule_mkdir) $(Q)$(call echo-cmd,test)shellcheck -a -S warning "$<" > $@ || (cat $@ && rm $@ && false) -perf-y += $(TEST_LOGS) +perf-test-y += $(TEST_LOGS) diff --git a/tools/perf/tests/workloads/Build b/tools/perf/tests/workloads/Build index a1f34d5861e36..48bf0d3b0f3d6 100644 --- a/tools/perf/tests/workloads/Build +++ b/tools/perf/tests/workloads/Build @@ -1,11 +1,11 @@ # SPDX-License-Identifier: GPL-2.0 -perf-y += noploop.o -perf-y += thloop.o -perf-y += leafloop.o -perf-y += sqrtloop.o -perf-y += brstack.o -perf-y += datasym.o +perf-test-y += noploop.o +perf-test-y += thloop.o +perf-test-y += leafloop.o +perf-test-y += sqrtloop.o +perf-test-y += brstack.o +perf-test-y += datasym.o CFLAGS_sqrtloop.o = -g -O0 -fno-inline -U_FORTIFY_SOURCE CFLAGS_leafloop.o = -g -O0 -fno-inline -fno-omit-frame-pointer -U_FORTIFY_SOURCE