diff --git a/AUTHORS b/AUTHORS index bafecadd..d08c1fdb 100644 --- a/AUTHORS +++ b/AUTHORS @@ -28,6 +28,7 @@ Eric Backus Eric Fiselier Eugene Zhuk Evgeny Safronov +Fabien Pichot Federico Ficarelli Felix Homann Gergő Szitár @@ -47,14 +48,15 @@ Marcel Jacobse Matt Clarkson Maxim Vafin Mike Apodaca +Min-Yih Hsu MongoDB Inc. Nick Hutchinson Norman Heino Oleksandr Sochka Ori Livneh Paul Redmond -Raghu Raja Radoslav Yovchev +Raghu Raja Rainer Orth Roman Lebedev Sayan Bhattacharjee @@ -67,4 +69,3 @@ Tobias Schmidt Yixuan Qiu Yusuke Suzuki Zbigniew Skowron -Min-Yih Hsu diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 56f03e2d..95bcad01 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -46,6 +46,7 @@ Eric Backus Eric Fiselier Eugene Zhuk Evgeny Safronov +Fabien Pichot Fanbo Meng Federico Ficarelli Felix Homann @@ -60,14 +61,15 @@ Joao Paulo Magalhaes John Millikin Jordan Williams Jussi Knuuttila -Kai Wolf Kaito Udagawa +Kai Wolf Kishan Kumar Lei Xu Marcel Jacobse Matt Clarkson Maxim Vafin Mike Apodaca +Min-Yih Hsu Nick Hutchinson Norman Heino Oleksandr Sochka @@ -76,8 +78,8 @@ Pascal Leroy Paul Redmond Pierre Phaneuf Radoslav Yovchev -Rainer Orth Raghu Raja +Rainer Orth Raul Marin Ray Glover Robert Guo @@ -91,4 +93,3 @@ Tom Madams Yixuan Qiu Yusuke Suzuki Zbigniew Skowron -Min-Yih Hsu diff --git a/cmake/Modules/FindPFM.cmake b/cmake/Modules/FindPFM.cmake index cf807a1e..0c480f5d 100644 --- a/cmake/Modules/FindPFM.cmake +++ b/cmake/Modules/FindPFM.cmake @@ -1,26 +1,22 @@ # If successful, the following variables will be defined: -# HAVE_LIBPFM. -# Set BENCHMARK_ENABLE_LIBPFM to 0 to disable, regardless of libpfm presence. -include(CheckIncludeFile) -include(CheckLibraryExists) -include(FeatureSummary) -enable_language(C) +# PFM_FOUND. +# PFM_LIBRARIES +# PFM_INCLUDE_DIRS +# the following target will be defined: +# PFM::libpfm -set_package_properties(PFM PROPERTIES - URL http://perfmon2.sourceforge.net/ - DESCRIPTION "a helper library to develop monitoring tools" - PURPOSE "Used to program specific performance monitoring events") +include(FindPackageHandleStandardArgs) -check_library_exists(libpfm.a 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) - message("Using Perf Counters.") - set(HAVE_LIBPFM 1) - set(PFM_FOUND 1) - endif() -else() - message("Perf Counters support requested, but was unable to find libpfm.") +find_library(PFM_LIBRARY NAMES pfm) +find_path(PFM_INCLUDE_DIR NAMES perfmon/pfmlib.h) + +find_package_handle_standard_args(PFM REQUIRED_VARS PFM_LIBRARY PFM_INCLUDE_DIR) + +if (PFM_FOUND AND NOT TARGET PFM::libpfm) + add_library(PFM::libpfm UNKNOWN IMPORTED) + set_target_properties(PFM::libpfm PROPERTIES + IMPORTED_LOCATION "${PFM_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${PFM_INCLUDE_DIR}") endif() + +mark_as_advanced(PFM_LIBRARY PFM_INCLUDE_DIR) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 91ea5f42..daf82fb1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -29,8 +29,8 @@ target_include_directories(benchmark PUBLIC ) # libpfm, if available -if (HAVE_LIBPFM) - target_link_libraries(benchmark PRIVATE pfm) +if (PFM_FOUND) + target_link_libraries(benchmark PRIVATE PFM::libpfm) target_compile_definitions(benchmark PRIVATE -DHAVE_LIBPFM) endif()