cmake: add libpsl support

Fixes #8865
Closes #8867
This commit is contained in:
Vincent Torri 2022-05-19 15:29:54 +02:00 committed by Daniel Stenberg
parent 9accb9a5be
commit ee52bead4d
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
4 changed files with 78 additions and 0 deletions

43
CMake/FindLibPSL.cmake Normal file
View File

@ -0,0 +1,43 @@
#***************************************************************************
# _ _ ____ _
# Project ___| | | | _ \| |
# / __| | | | |_) | |
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
###########################################################################
# - Try to find the libpsl library
# Once done this will define
#
# LIBPSL_FOUND - system has the libpsl library
# LIBPSL_INCLUDE_DIR - the libpsl include directory
# LIBPSL_LIBRARY - the libpsl library name
find_path(LIBPSL_INCLUDE_DIR libpsl.h)
find_library(LIBPSL_LIBRARY NAMES psl libpsl)
if(LIBPSL_INCLUDE_DIR)
file(STRINGS "${LIBPSL_INCLUDE_DIR}/libpsl.h" libpsl_version_str REGEX "^#define[\t ]+PSL_VERSION[\t ]+\"(.*)\"")
string(REGEX REPLACE "^.*\"([^\"]+)\"" "\\1" LIBPSL_VERSION "${libpsl_version_str}")
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibPSL
REQUIRED_VARS LIBPSL_LIBRARY LIBPSL_INCLUDE_DIR
VERSION_VAR LIBPSL_VERSION)
mark_as_advanced(LIBPSL_INCLUDE_DIR LIBPSL_LIBRARY)

View File

@ -742,6 +742,31 @@ if(CURL_ZSTD)
endif()
endif()
#libpsl
option(CURL_USE_LIBPSL "Use libPSL" ON)
mark_as_advanced(CURL_USE_LIBPSL)
set(USE_LIBPSL OFF)
set(HAVE_LIBPSL OFF)
set(HAVE_LIBSPSL_H OFF)
if(CURL_USE_LIBPSL)
find_package(LibPSL)
if(LIBPSL_FOUND)
list(APPEND CURL_LIBS ${LIBPSL_LIBRARY})
set(CMAKE_REQUIRED_LIBRARIES ${LIBPSL_LIBRARY})
list(APPEND CMAKE_REQUIRED_INCLUDES "${LIBPSL_INCLUDE_DIR}")
include_directories("${LIBPSL_INCLUDE_DIR}")
set(HAVE_LIBPSL ON)
set(USE_LIBPSL ON)
# find_package has already found the headers
set(HAVE_LIBPSL_H ON)
set(CURL_INCLUDES ${CURL_INCLUDES} "${LIBPSL_INCLUDE_DIR}/libpsl.h")
set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -DHAVE_LIBPSL_H")
unset(CMAKE_REQUIRED_LIBRARIES)
endif()
endif()
#libSSH2
option(CURL_USE_LIBSSH2 "Use libSSH2" ON)
mark_as_advanced(CURL_USE_LIBSSH2)

View File

@ -34,6 +34,7 @@ CMAKE_DIST = \
CMake/FindBrotli.cmake \
CMake/FindCARES.cmake \
CMake/FindGSS.cmake \
CMake/FindLibPSL.cmake \
CMake/FindLibSSH2.cmake \
CMake/FindMbedTLS.cmake \
CMake/FindMSH3.cmake \

View File

@ -383,6 +383,12 @@
/* Define to 1 if you have the `socket' library (-lsocket). */
#cmakedefine HAVE_LIBSOCKET 1
/* Define to 1 if you have the `psl' library (-lpsl). */
#cmakedefine HAVE_LIBPSL 1
/* Define to 1 if you have the <libpsl.h> header file. */
#cmakedefine HAVE_LIBPSL_H 1
/* Define to 1 if you have the `ssh2' library (-lssh2). */
#cmakedefine HAVE_LIBSSH2 1
@ -915,6 +921,9 @@ ${SIZEOF_TIME_T_CODE}
/* if libSSH2 is in use */
#cmakedefine USE_LIBSSH2 1
/* if libPSL is in use */
#cmakedefine USE_LIBPSL 1
/* If you want to build curl with the built-in manual */
#cmakedefine USE_MANUAL 1