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