# Try to find XROOTD
# Once done, this will define
#
# XROOTD_FOUND               - system has XRootD
# XROOTD_INCLUDE_DIRS        - XRootD include directories
# XROOTD_LIBRARIES           - libraries needed to use XRootD
# XROOTD_PRIVATE_INCLUDE_DIR - XRootD private include directory
#
# XROOTD_ROOT may be defined as a hint for where to look

find_path(XROOTD_INCLUDE_DIR
  NAMES XrdVersion.hh
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES include/xrootd)

find_path(XROOTD_PRIVATE_INCLUDE_DIR
  NAMES XrdOss/XrdOssApi.hh
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES include/xrootd/private)

find_library(XROOTD_UTILS_LIBRARY
  NAMES XrdUtils
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})

find_library(XROOTD_SERVER_LIBRARY
  NAMES XrdServer
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})

find_library(XROOTD_CL_LIBRARY
  NAMES XrdCl
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})

find_library(XROOTD_POSIX_LIBRARY
  NAMES XrdPosix
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})

find_library(XROOTD_SSI_LIBRARY
  NAMES XrdSsiLib
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})

find_library(
  XROOTD_HTTP_UTILS_LIBRARY
  NAMES XrdHttpUtils
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})

set(XROOTD_INCLUDE_DIRS ${XROOTD_INCLUDE_DIR} ${XROOTD_PRIVATE_INCLUDE_DIR})

set(XROOTD_LIBRARIES
  ${XROOTD_SERVER_LIBRARY}
  ${XROOTD_CL_LIBRARY}
  ${XROOTD_UTILS_LIBRARY}
  ${XROOTD_POSIX_LIBRARY}
  ${XROOTD_SSI_LIBRARY}
  ${XROOTD_HHTP_UTILS_LIBRARY})

###############################################################################
# Figure out what is the plugin version
###############################################################################
execute_process( COMMAND grep "#define XRDPLUGIN_SOVERSION" ${XROOTD_INCLUDE_DIR}/XrdVersion.hh
                 OUTPUT_VARIABLE XRDPLUGIN_SOVERSION )
string( REGEX MATCH "[0123456789]+" XRDPLUGIN_SOVERSION ${XRDPLUGIN_SOVERSION} )

# Find XRootD dynamically loaded libraries
find_library(XROOTD_DL_SECKRB5_LIBRARY
  NAMES XrdSeckrb5-${XRDPLUGIN_SOVERSION}
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})

find_library(XROOTD_DL_SECGSI_LIBRARY
  NAMES XrdSecgsi-${XRDPLUGIN_SOVERSION}
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})

find_library(XROOTD_DL_SECGSIAUTHZVO_LIBRARY
  NAMES XrdSecgsiAUTHZVO-${XRDPLUGIN_SOVERSION}
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})

find_library(XROOTD_DL_SECGSIGMAPDN_LIBRARY
  NAMES XrdSecgsiGMAPDN-${XRDPLUGIN_SOVERSION}
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})

find_library(XROOTD_DL_SECPWD_LIBRARY
  NAMES XrdSecpwd-${XRDPLUGIN_SOVERSION}
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})

find_library(XROOTD_DL_SECSSS_LIBRARY
  NAMES XrdSecsss-${XRDPLUGIN_SOVERSION}
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})

find_library(XROOTD_DL_SECUNIX_LIBRARY
  NAMES XrdSecunix-${XRDPLUGIN_SOVERSION}
  HINTS ${XROOTD_ROOT} $ENV{XROOTD_ROOT} /opt/eos/xrootd/
  PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})

set(XROOTD_DL_LIBRARIES
  ${XROOTD_DL_SECUNIX_LIBRARY}
  ${XROOTD_DL_SECSSS_LIBRARY}
  ${XROOTD_DL_SECPWD_LIBRARY}
  ${XROOTD_DL_SECGSIGMAPDN_LIBRARY}
  ${XROOTD_DL_SECGSIAUTHZVO_LIBRARY}
  ${XROOTD_DL_SECGSI_LIBRARY}
  ${XROOTD_DL_SECKRB5_LIBRARY})

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(XRootD
  DEFAULT_MSG
  XROOTD_SERVER_LIBRARY
  XROOTD_UTILS_LIBRARY
  XROOTD_CL_LIBRARY
  XROOTD_POSIX_LIBRARY
  XROOTD_HTTP_UTILS_LIBRARY
  XROOTD_DL_SECUNIX_LIBRARY
  XROOTD_DL_SECSSS_LIBRARY
  XROOTD_DL_SECPWD_LIBRARY
  XROOTD_DL_SECGSIGMAPDN_LIBRARY
  XROOTD_DL_SECGSIAUTHZVO_LIBRARY
  XROOTD_DL_SECGSI_LIBRARY
  XROOTD_DL_SECKRB5_LIBRARY
  XROOTD_INCLUDE_DIR
  XROOTD_PRIVATE_INCLUDE_DIR)

mark_as_advanced(
  XROOTD_SERVER_LIBRARY
  XROOTD_UTILS_LIBRARY
  XROOTD_HTTP_UTILS_LIBRARY
  XROOTD_CL_LIBRARY
  XROOTD_INCLUDE_DIR
  XROOTD_PRIVATE_INCLUDE_DIR
  XRDPLUGIN_SOVERSION)

if (XROOTD_FOUND AND NOT TARGET XROOTD::SERVER)
  add_library(XROOTD::PRIVATE INTERFACE IMPORTED)
  set_target_properties(XROOTD::PRIVATE PROPERTIES
     INTERFACE_INCLUDE_DIRECTORIES "${XROOTD_PRIVATE_INCLUDE_DIR}")

  add_library(XROOTD::SERVER UNKNOWN IMPORTED)
  set_target_properties(XROOTD::SERVER PROPERTIES
    IMPORTED_LOCATION "${XROOTD_SERVER_LIBRARY}"
    INTERFACE_INCLUDE_DIRECTORIES "${XROOTD_INCLUDE_DIR}")

  add_library(XROOTD::CL UNKNOWN IMPORTED)
  set_target_properties(XROOTD::CL PROPERTIES
    IMPORTED_LOCATION "${XROOTD_CL_LIBRARY}"
    INTERFACE_INCLUDE_DIRECTORIES "${XROOTD_INCLUDE_DIR}")

  add_library(XROOTD::UTILS UNKNOWN IMPORTED)
  set_target_properties(XROOTD::UTILS PROPERTIES
    IMPORTED_LOCATION "${XROOTD_UTILS_LIBRARY}"
    INTERFACE_INCLUDE_DIRECTORIES "${XROOTD_INCLUDE_DIR}")

  add_library(XROOTD::HTTP UNKNOWN IMPORTED)
  set_target_properties(XROOTD::HTTP PROPERTIES
    IMPORTED_LOCATION "${XROOTD_HTTP_UTILS_LIBRARY}"
    INTERFACE_INCLUDE_DIRECTORIES "${XROOTD_INCLUDE_DIR}")

  add_library(XROOTD::SSI UNKNOWN IMPORTED)
  set_target_properties(XROOTD::SSI PROPERTIES
    IMPORTED_LOCATION "${XROOTD_SSI_LIBRARY}"
    INTERFACE_INCLUDE_DIRECTORIES "${XROOTD_INCLUDE_DIR}")

  add_library(XROOTD::POSIX UNKNOWN IMPORTED)
  set_target_properties(XROOTD::POSIX PROPERTIES
    IMPORTED_LOCATION "${XROOTD_POSIX_LIBRARY}"
    INTERFACE_INCLUDE_DIRECTORIES "${XROOTD_INCLUDE_DIR}")

  unset(XROOTD_INCLUDE_DIR)
  unset(XROOTD_PRIVATE_INCLUDE_DIR)
endif ()
