1 # CMake module for finding libpfm4.
3 # If successful, the following variables will be defined:
6 # Libpfm can be disabled by setting LLVM_ENABLE_LIBPFM to 0.
8 include(CheckIncludeFile)
9 include(CheckLibraryExists)
10 include(CheckCXXSourceCompiles)
12 if (LLVM_ENABLE_LIBPFM)
13 check_library_exists(pfm pfm_initialize "" HAVE_LIBPFM_INITIALIZE)
14 if(HAVE_LIBPFM_INITIALIZE)
15 check_include_file(perfmon/perf_event.h HAVE_PERFMON_PERF_EVENT_H)
16 check_include_file(perfmon/pfmlib.h HAVE_PERFMON_PFMLIB_H)
17 check_include_file(perfmon/pfmlib_perf_event.h HAVE_PERFMON_PFMLIB_PERF_EVENT_H)
18 if(HAVE_PERFMON_PERF_EVENT_H AND HAVE_PERFMON_PFMLIB_H AND HAVE_PERFMON_PFMLIB_PERF_EVENT_H)
20 # Check to see if perf_branch_entry has the field 'cycles'.
21 # We couldn't use CheckStructHasMember here because 'cycles' is a bit field which is not
22 # supported by CheckStructHasMember.
23 CHECK_CXX_SOURCE_COMPILES("
24 #include <perfmon/perf_event.h>
26 perf_branch_entry entry;
29 }" COMPILE_WITH_CYCLES)
30 if(COMPILE_WITH_CYCLES)
31 set(LIBPFM_HAS_FIELD_CYCLES 1)