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

