| # 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() |
| |
| |