38 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			CMake
		
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			CMake
		
	
	
	
# 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()
 | 
						|
 | 
						|
 |