find_path(LibPSL_INCLUDE_DIR NAMES libpsl.h) find_library(LibPSL_LIBRARY NAMES psl) if(LibPSL_INCLUDE_DIR) file(STRINGS "${LibPSL_INCLUDE_DIR}/libpsl.h" _LibPSL_VERSION_LINE REGEX "^#define PSL_VERSION[ \t]+\"[0-9]+\\.[0-9]+\\.[0-9]+\"") string(REGEX MATCH "\"([0-9]+\\.[0-9]+\\.[0-9]+)\"" _LibPSL_VERSION_MATCH "${_LibPSL_VERSION_LINE}") set(LibPSL_VERSION "${CMAKE_MATCH_1}") endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LibPSL REQUIRED_VARS LibPSL_LIBRARY LibPSL_INCLUDE_DIR VERSION_VAR LibPSL_VERSION) if(LibPSL_FOUND AND NOT TARGET LibPSL::LibPSL) add_library(LibPSL::LibPSL UNKNOWN IMPORTED) set_target_properties(LibPSL::LibPSL PROPERTIES IMPORTED_LOCATION "${LibPSL_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${LibPSL_INCLUDE_DIR}") endif() mark_as_advanced(LibPSL_INCLUDE_DIR LibPSL_LIBRARY)