Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[SMPI/PAPI] Added cmake switch for SMPI+PAPI
[simgrid.git] / tools / cmake / Modules / FindPAPI.cmake
diff --git a/tools/cmake/Modules/FindPAPI.cmake b/tools/cmake/Modules/FindPAPI.cmake
new file mode 100644 (file)
index 0000000..afb95bb
--- /dev/null
@@ -0,0 +1,77 @@
+# Try to find PAPI headers and LIBRARY.
+#
+# Usage of this module as follows:
+#
+#     find_package(PAPI)
+#
+# Variables used by this module, they can change the default behaviour and need
+# to be set before calling find_package:
+#
+#  PAPI_PREFIX         Set this variable to the root installation of
+#                      libpapi if the module has problems finding the
+#                      proper installation path.
+#
+# Variables defined by this module:
+#
+#  PAPI_FOUND              System has PAPI LIBRARY and headers
+#  PAPI_LIBRARY          The PAPI library
+#  PAPI_INCLUDE_DIRS       The location of PAPI headers
+
+set(HAVE_PAPI 0)
+set(PAPI_HINT ${papi_path} CACHE PATH "Path to search for PAPI headers and library")
+
+find_path(PAPI_PREFIX
+    NAMES include/papi.h
+       PATHS
+       ${PAPI_HINT}
+)
+
+message(STATUS "Looking for libpapi")
+find_library(PAPI_LIBRARY
+    NAMES libpapi papi
+    PATH_SUFFIXES lib64 lib 
+    # HINTS gets searched before PATHS
+    HINTS 
+    ${PAPI_PREFIX}/lib 
+)
+if(PAPI_LIBRARY)
+  message(STATUS "Looking for libpapi - found at ${PAPI_LIBRARY}")
+else()
+  message(STATUS "Looking for libpapi - not found")
+endif()
+
+message(STATUS "Looking for papi.h")
+find_path(PAPI_INCLUDE_DIRS
+    NAMES papi.h
+    # HINTS gets searched before PATHS
+    HINTS ${PAPI_PREFIX}/include 
+)
+if(PAPI_INCLUDE_DIRS)
+  message(STATUS "Looking for papi.h - found at ${PAPI_INCLUDE_DIRS}")
+else()
+  message(STATUS "Looking for papi.h - not found")
+endif()
+
+
+if (PAPI_LIBRARY)
+  if(PAPI_INCLUDE_DIRS)
+    set(HAVE_PAPI 1)
+    mark_as_advanced(HAVE_PAPI)
+  endif()
+endif()
+if(NOT HAVE_PAPI)
+  message(FATAL_ERROR, "Could not find PAPI LIBRARY and/or papi.h. Make sure they are correctly installed!")
+endif()
+
+#include(FindPackageHandleStandardArgs)
+#find_package_handle_standard_args(PAPI DEFAULT_MSG
+#    PAPI_LIBRARY
+#    PAPI_INCLUDE_DIRS
+#)
+
+mark_as_advanced(
+    PAPI_PREFIX_DIRS
+    PAPI_LIBRARY
+    PAPI_INCLUDE_DIRS
+)
+