[clang][NFC]add static for internal linkage function (#117482)
[llvm-project.git] / llvm / cmake / modules / FindLibpfm.cmake
blob38cf3af3953d91718c930cfb6c499b8b9b32eb40
1 # CMake module for finding libpfm4.
3 # If successful, the following variables will be defined:
4 # HAVE_LIBPFM
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)
19       set(HAVE_LIBPFM 1)
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>
25         int main() {
26           perf_branch_entry entry;
27           entry.cycles = 2;
28           return 0;
29         }" COMPILE_WITH_CYCLES)
30       if(COMPILE_WITH_CYCLES)
31         set(LIBPFM_HAS_FIELD_CYCLES 1)
32       endif()
33     endif()
34   endif()
35 endif()