Skip to content

Commit

Permalink
Added CMake script to find OpenSAML
Browse files Browse the repository at this point in the history
  • Loading branch information
RockinRoel committed Aug 27, 2021
1 parent d561b26 commit 2d71f82
Show file tree
Hide file tree
Showing 7 changed files with 419 additions and 0 deletions.
8 changes: 8 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ OPTION(ENABLE_MYSQL "Build mariadb/mysql backend for Wt::Dbo" ON)
OPTION(ENABLE_MSSQLSERVER "Build Microsoft SQL Server backend for Wt::Dbo" ON)
OPTION(ENABLE_QT4 "Build Qt4 interworking library (libwtwithqt)" ON)
OPTION(ENABLE_QT5 "Build Qt5 interworking library (libwtwithqt5)" ON)
OPTION(ENABLE_SAML "Build built-in SAML service provider for Wt::Auth" OFF)
OPTION(ENABLE_LIBWTTEST "Build Wt::Test" ON)
OPTION(ENABLE_LIBWTDBO "Build Wt::Dbo" ON)
OPTION(WT_NO_STD_LOCALE "Build Wt to run on a system without std::locale support" OFF)
Expand Down Expand Up @@ -252,6 +253,13 @@ INCLUDE(cmake/WtFindSkia.txt)
set(OPENSSL_ROOT_DIR ${SSL_PREFIX})
find_package(OpenSSL)

IF (ENABLE_SAML)
find_package(OpenSAML)
if(OpenSAML_FOUND)
set(WT_HAS_SAML TRUE)
endif()
ENDIF (ENABLE_SAML)

IF (ENABLE_UNWIND)
INCLUDE(cmake/WtFindUnwind.txt)
ENDIF (ENABLE_UNWIND)
Expand Down
65 changes: 65 additions & 0 deletions cmake/FindLog4Cpp.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
set(LOG4CPP_ROOT "${LOG4CPP_ROOT}" CACHE PATH "Directory to look in for Log4Cpp")

find_package(PkgConfig)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_Log4Cpp QUIET log4cpp)
endif()

find_path(Log4Cpp_INCLUDE_DIR
NAMES log4cpp/config.h
PATHS ${PC_Log4Cpp_INCLUDE_DIRS} "${LOG4CPP_ROOT}"
PATH_SUFFIXES include
)
find_library(Log4Cpp_LIBRARY_RELEASE
NAMES log4cpp log4cpp2
PATHS ${PC_Log4Cpp_LIBRARY_DIRS} "${LOG4CPP_ROOT}"
PATH_SUFFIXES lib
)
find_library(Log4Cpp_LIBRARY_DEBUG
NAMES log4cpp log4cpp2D
PATHS ${PC_Log4Cpp_LIBRARY_DIRS} "${LOG4CPP_ROOT}"
PATH_SUFFIXES lib
)
if(Log4Cpp_INCLUDE_DIR)
file(READ "${Log4Cpp_INCLUDE_DIR}/log4cpp/config.h" _ver)
string(REGEX MATCH "LOG4CPP_VERSION[ ]+[\"]([0-9.]*)[\"]" _ ${_ver})
set(Log4Cpp_VERSION ${CMAKE_MATCH_1})
unset(_ver)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Log4Cpp
FOUND_VAR Log4Cpp_FOUND
REQUIRED_VARS
Log4Cpp_LIBRARY_RELEASE
Log4Cpp_INCLUDE_DIR
VERSION_VAR Log4Cpp_VERSION
)

if(Log4Cpp_FOUND)
if(NOT TARGET Log4Cpp::Log4Cpp)
add_library(Log4Cpp::Log4Cpp UNKNOWN IMPORTED)
endif()
if(Log4Cpp_LIBRARY_RELEASE)
set_property(TARGET Log4Cpp::Log4Cpp APPEND PROPERTY
IMPORTED_CONFIGURATIONS RELEASE
)
set_target_properties(Log4Cpp::Log4Cpp PROPERTIES
IMPORTED_LOCATION_RELEASE "${Log4Cpp_LIBRARY_RELEASE}"
)
endif()
if(Log4Cpp_LIBRARY_DEBUG)
set_property(TARGET Log4Cpp::Log4Cpp APPEND PROPERTY
IMPORTED_CONFIGURATIONS DEBUG
)
set_target_properties(Log4Cpp::Log4Cpp PROPERTIES
IMPORTED_LOCATION_DEBUG "${Log4Cpp_LIBRARY_DEBUG}"
)
endif()
set_target_properties(Log4Cpp::Log4Cpp PROPERTIES
INTERFACE_COMPILE_OPTIONS "${PC_Log4Cpp_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${Log4Cpp_INCLUDE_DIR}"
)
endif()

mark_as_advanced(Log4Cpp_INCLUDE_DIR Log4Cpp_LIBRARY_RELEASE Log4Cpp_LIBRARY_DEBUG)
set(Log4Cpp_VERSION_STRING ${Log4Cpp_VERSION})
71 changes: 71 additions & 0 deletions cmake/FindLog4Shib.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
set(LOG4SHIB_ROOT "${LOG4SHIB_ROOT}" CACHE PATH "Directory to look in for Log4Shib")

find_package(PkgConfig)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_Log4Shib QUIET log4shib)
endif()

if(WIN32)
set(_log4shib_config_file config-win32.h)
else()
set(_log4shib_config_file config.h)
endif()

find_path(Log4Shib_INCLUDE_DIR
NAMES log4shib/${_log4shib_config_file}
PATHS ${PC_Log4Shib_INCLUDE_DIRS} "${LOG4SHIB_ROOT}"
PATH_SUFFIXES include
)
find_library(Log4Shib_LIBRARY_RELEASE
NAMES log4shib log4shib2
PATHS ${PC_Log4Shib_LIBRARY_DIRS} "${LOG4SHIB_ROOT}"
PATH_SUFFIXES lib
)
find_library(Log4Shib_LIBRARY_DEBUG
NAMES log4shib log4shib2D
PATHS ${PC_Log4Shib_LIBRARY_DIRS} "${LOG4SHIB_ROOT}"
PATH_SUFFIXES lib
)
if(Log4Shib_INCLUDE_DIR)
file(READ "${Log4Shib_INCLUDE_DIR}/log4shib/${_log4shib_config_file}" _ver)
string(REGEX MATCH "LOG4SHIB_VERSION[ ]+[\"]([0-9.]*)[\"]" _ ${_ver})
set(Log4Shib_VERSION ${CMAKE_MATCH_1})
unset(_ver)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Log4Shib
FOUND_VAR Log4Shib_FOUND
REQUIRED_VARS
Log4Shib_LIBRARY_RELEASE
Log4Shib_INCLUDE_DIR
VERSION_VAR Log4Shib_VERSION
)

if(Log4Shib_FOUND)
if(NOT TARGET Log4Shib::Log4Shib)
add_library(Log4Shib::Log4Shib UNKNOWN IMPORTED)
endif()
if(Log4Shib_LIBRARY_RELEASE)
set_property(TARGET Log4Shib::Log4Shib APPEND PROPERTY
IMPORTED_CONFIGURATIONS RELEASE
)
set_target_properties(Log4Shib::Log4Shib PROPERTIES
IMPORTED_LOCATION_RELEASE "${Log4Shib_LIBRARY_RELEASE}"
)
endif()
if(Log4Shib_LIBRARY_DEBUG)
set_property(TARGET Log4Shib::Log4Shib APPEND PROPERTY
IMPORTED_CONFIGURATIONS DEBUG
)
set_target_properties(Log4Shib::Log4Shib PROPERTIES
IMPORTED_LOCATION_DEBUG "${Log4Shib_LIBRARY_DEBUG}"
)
endif()
set_target_properties(Log4Shib::Log4Shib PROPERTIES
INTERFACE_COMPILE_OPTIONS "${PC_Log4Shib_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${Log4Shib_INCLUDE_DIR}"
)
endif()

mark_as_advanced(Log4Shib_INCLUDE_DIR Log4Shib_LIBRARY_RELEASE Log4Shib_LIBRARY_DEBUG)
set(Log4Shib_VERSION_STRING ${Log4Shib_VERSION})
77 changes: 77 additions & 0 deletions cmake/FindOpenSAML.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
set(OPENSAML_ROOT "${OPENSAML_ROOT}" CACHE PATH "Directory to look in for Shibboleth's OpenSAML")

find_package(XmlTooling)
if(NOT XmlTooling_FOUND)
set(OpenSAML_FOUND FALSE)
return()
endif()

find_package(PkgConfig)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_OpenSAML QUIET opensaml)
endif()

find_path(OpenSAML_INCLUDE_DIR
NAMES saml/version.h
PATHS ${PC_OpenSAML_INCLUDE_DIRS}
PATH_SUFFIXES include
)
find_library(OpenSAML_LIBRARY_RELEASE
NAMES saml saml3
PATHS ${PC_OpenSAML_LIBRARY_DIRS}
PATH_SUFFIXES lib
)
find_library(OpenSAML_LIBRARY_DEBUG
NAMES saml saml3D
PATHS ${PC_OpenSAML_LIBRARY_DIRS}
PATH_SUFFIXES lib
)
if(OpenSAML_INCLUDE_DIR)
file(READ "${OpenSAML_INCLUDE_DIR}/saml/version.h" _ver)
string(REGEX MATCH "OPENSAML_VERSION_MAJOR[ ]+([0-9.]*)" _ ${_ver})
set(OpenSAML_VERSION_MAJOR ${CMAKE_MATCH_1})
string(REGEX MATCH "OPENSAML_VERSION_MINOR[ ]+([0-9.]*)" _ ${_ver})
set(OpenSAML_VERSION_MINOR ${CMAKE_MATCH_1})
string(REGEX MATCH "OPENSAML_VERSION_REVISION[ ]+([0-9.]*)" _ ${_ver})
set(OpenSAML_VERSION_PATCH ${CMAKE_MATCH_1})
set(OpenSAML_VERSION "${OpenSAML_VERSION_MAJOR}.${OpenSAML_VERSION_MINOR}.${OpenSAML_VERSION_PATCH}")
unset(_ver)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OpenSAML
FOUND_VAR OpenSAML_FOUND
REQUIRED_VARS
OpenSAML_LIBRARY_RELEASE
OpenSAML_INCLUDE_DIR
VERSION_VAR OpenSAML_VERSION
)

if(OpenSAML_FOUND)
if(NOT TARGET Shibboleth::OpenSAML)
add_library(Shibboleth::OpenSAML UNKNOWN IMPORTED)
endif()
if(OpenSAML_LIBRARY_RELEASE)
set_property(TARGET Shibboleth::OpenSAML APPEND PROPERTY
IMPORTED_CONFIGURATIONS RELEASE
)
set_target_properties(Shibboleth::OpenSAML PROPERTIES
IMPORTED_LOCATION_RELEASE "${OpenSAML_LIBRARY_RELEASE}"
)
endif()
if(OpenSAML_LIBRARY_DEBUG)
set_property(TARGET Shibboleth::OpenSAML APPEND PROPERTY
IMPORTED_CONFIGURATIONS DEBUG
)
set_target_properties(Shibboleth::OpenSAML PROPERTIES
IMPORTED_LOCATION_DEBUG "${OpenSAML_LIBRARY_DEBUG}"
)
endif()
set_target_properties(Shibboleth::OpenSAML PROPERTIES
INTERFACE_COMPILE_OPTIONS "${PC_OpenSAML_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${OpenSAML_INCLUDE_DIR}"
IMPORTED_LINK_INTERFACE_LIBRARIES Shibboleth::XmlTooling
)
endif()

mark_as_advanced(OpenSAML_INCLUDE_DIR OpenSAML_LIBRARY_RELEASE OpenSAML_LIBRARY_DEBUG)
set(OpenSAML_VERSION_STRING ${OpenSAML_VERSION})
85 changes: 85 additions & 0 deletions cmake/FindXmlSecurityC.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
set(XERCESC_ROOT "${XERCESC_ROOT}" CACHE PATH "Directory to look in for Apache Xerces C++")
set(XMLSECURITYC_ROOT "${XMLSECURITYC_ROOT}" CACHE PATH "Directory to look in for Apache XML Security for C++")

list(APPEND CMAKE_PREFIX_PATH ${XERCESC_ROOT})
find_package(XercesC)
if(NOT XercesC_FOUND)
set(FindXmlSecurityC_FOUND FALSE)
return()
endif()

find_package(OpenSSL)
if(NOT OpenSSL_FOUND)
set(FindXmlSecurityC FOUND FALSE)
return()
endif()

find_package(PkgConfig)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_XmlSecurityC QUIET xml-security-c)
endif()

find_path(XmlSecurityC_INCLUDE_DIR
NAMES xsec/framework/XSECVersion.hpp
PATHS ${PC_XmlSecurityC_INCLUDE_DIRS}
PATH_SUFFIXES include
)
find_library(XmlSecurityC_LIBRARY_RELEASE
NAMES xml-security-c xsec_2
PATHS ${PC_XmlSecurityC_LIBRARY_DIRS}
PATH_SUFFIXES lib
)
find_library(XmlSecurityC_LIBRARY_DEBUG
NAMES xml-security-c xsec_2D
PATHS ${PC_XmlSecurityC_LIBRARY_DIRS}
PATH_SUFFIXES lib
)
if(XmlSecurityC_INCLUDE_DIR)
file(READ "${XmlSecurityC_INCLUDE_DIR}/xsec/framework/XSECVersion.hpp" _ver)
string(REGEX MATCH "XSEC_VERSION_MAJOR[ ]+([0-9.]*)" _ ${_ver})
set(XmlSecurityC_VERSION_MAJOR ${CMAKE_MATCH_1})
string(REGEX MATCH "XSEC_VERSION_MEDIUM[ ]+([0-9.]*)" _ ${_ver})
set(XmlSecurityC_VERSION_MINOR ${CMAKE_MATCH_1})
string(REGEX MATCH "XSEC_VERSION_MINOR[ ]+([0-9.]*)" _ ${_ver})
set(XmlSecurityC_VERSION_PATCH ${CMAKE_MATCH_1})
set(XmlSecurityC_VERSION "${XmlSecurityC_VERSION_MAJOR}.${XmlSecurityC_VERSION_MINOR}.${XmlSecurityC_VERSION_PATCH}")
unset(_ver)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(XmlSecurityC
FOUND_VAR XmlSecurityC_FOUND
REQUIRED_VARS
XmlSecurityC_LIBRARY_RELEASE
XmlSecurityC_INCLUDE_DIR
VERSION_VAR XmlSecurityC_VERSION
)

if(XmlSecurityC_FOUND)
if(NOT TARGET XmlSecurityC::XmlSecurityC)
add_library(XmlSecurityC::XmlSecurityC UNKNOWN IMPORTED)
endif()
if(XmlSecurityC_LIBRARY_RELEASE)
set_property(TARGET XmlSecurityC::XmlSecurityC APPEND PROPERTY
IMPORTED_CONFIGURATIONS RELEASE
)
set_target_properties(XmlSecurityC::XmlSecurityC PROPERTIES
IMPORTED_LOCATION_RELEASE "${XmlSecurityC_LIBRARY_RELEASE}"
)
endif()
if(XmlSecurityC_LIBRARY_DEBUG)
set_property(TARGET XmlSecurityC::XmlSecurityC APPEND PROPERTY
IMPORTED_CONFIGURATIONS DEBUG
)
set_target_properties(XmlSecurityC::XmlSecurityC PROPERTIES
IMPORTED_LOCATION_DEBUG "${XmlSecurityC_LIBRARY_DEBUG}"
)
endif()
set_target_properties(XmlSecurityC::XmlSecurityC PROPERTIES
INTERFACE_COMPILE_OPTIONS "${PC_XmlSecurityC_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${XmlSecurityC_INCLUDE_DIR}"
IMPORTED_LINK_INTERFACE_LIBRARIES "XercesC::XercesC;OpenSSL::Crypto"
)
endif()

mark_as_advanced(XmlSecurityC_INCLUDE_DIR XmlSecurityC_LIBRARY_RELEASE XmlSecurityC_LIBRARY_DEBUG)
set(XmlSecurityC_VERSION_STRING ${XmlSecurityC_VERSION})
Loading

0 comments on commit 2d71f82

Please sign in to comment.