diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-10-21 08:10:34 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-10-21 08:10:34 +0800 |
| commit | bbfffc8ce49b9afe854f0799513ab6b7891d6dab (patch) | |
| tree | d1b2a1cc8166270764b627960fa193b60e9b3271 /rcc/cmake/modules/FindLibpfm.cmake | |
| parent | 49de843452f161ee42cb8f4ff4780ccc02ae3a7a (diff) | |
| download | rcc-project-bbfffc8ce49b9afe854f0799513ab6b7891d6dab.tar.gz rcc-project-bbfffc8ce49b9afe854f0799513ab6b7891d6dab.tar.xz | |
[CMake] Add RCC platform configuration checks
Diffstat (limited to 'rcc/cmake/modules/FindLibpfm.cmake')
| -rw-r--r-- | rcc/cmake/modules/FindLibpfm.cmake | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/rcc/cmake/modules/FindLibpfm.cmake b/rcc/cmake/modules/FindLibpfm.cmake new file mode 100644 index 0000000..9e5900b --- /dev/null +++ b/rcc/cmake/modules/FindLibpfm.cmake @@ -0,0 +1,37 @@ +# CMake module for finding libpfm4. +# +# If successful, the following variables will be defined: +# HAVE_LIBPFM +# +# Libpfm can be disabled by setting RCC_ENABLE_LIBPFM to 0. + +include(CheckIncludeFile) +include(CheckLibraryExists) +include(CheckCXXSourceCompiles) + +if (RCC_ENABLE_LIBPFM) + check_library_exists(pfm pfm_initialize "" HAVE_LIBPFM_INITIALIZE) + if(HAVE_LIBPFM_INITIALIZE) + check_include_file(perfmon/perf_event.h HAVE_PERFMON_PERF_EVENT_H) + check_include_file(perfmon/pfmlib.h HAVE_PERFMON_PFMLIB_H) + check_include_file(perfmon/pfmlib_perf_event.h HAVE_PERFMON_PFMLIB_PERF_EVENT_H) + if(HAVE_PERFMON_PERF_EVENT_H AND HAVE_PERFMON_PFMLIB_H AND HAVE_PERFMON_PFMLIB_PERF_EVENT_H) + set(HAVE_LIBPFM 1) + # Check to see if perf_branch_entry has the field 'cycles'. + # We couldn't use CheckStructHasMember here because 'cycles' is a bit field which is not + # supported by CheckStructHasMember. + CHECK_CXX_SOURCE_COMPILES(" + #include <perfmon/perf_event.h> + int main() { + perf_branch_entry entry; + entry.cycles = 2; + return 0; + }" COMPILE_WITH_CYCLES) + if(COMPILE_WITH_CYCLES) + set(LIBPFM_HAS_FIELD_CYCLES 1) + endif() + endif() + endif() +endif() + + |
