| # CMake module for finding libpfm4. | |
| # | |
| # If successful, the following variables will be defined: | |
| # HAVE_LIBPFM | |
| # | |
| # Libpfm can be disabled by setting LLVM_ENABLE_LIBPFM to 0. | |
| include(CheckIncludeFile) | |
| include(CheckLibraryExists) | |
| include(CheckCXXSourceCompiles) | |
| if (LLVM_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() | |