CMake: Export and install library targets.
The configs can be consumed by setting LibreSSL_DIR to the build directory, or after installation using CMAKE_PREFIX_PATH/LibreSSL_DIR. For compatibility, the EXPORT_NAME of targets and the LIBRESSL_* variables are set to match the names used in FindLibreSSL.
This commit is contained in:
parent
5432e22b25
commit
a89cd65980
@ -39,6 +39,7 @@ option(ENABLE_ASM "Enable assembly" ON)
|
||||
option(ENABLE_EXTRATESTS "Enable extra tests that may be unreliable on some platforms" OFF)
|
||||
option(ENABLE_NC "Enable installing TLS-enabled nc(1)" OFF)
|
||||
set(OPENSSLDIR ${OPENSSLDIR} CACHE PATH "Set the default openssl directory" FORCE)
|
||||
set(LIBRESSL_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake" CACHE STRING "Installation directory for the CMake targets")
|
||||
|
||||
option(USE_STATIC_MSVC_RUNTIMES "Use /MT instead of /MD in MSVC" OFF)
|
||||
if(USE_STATIC_MSVC_RUNTIMES)
|
||||
@ -439,6 +440,38 @@ if (BUILD_APPLE_XCFRAMEWORK)
|
||||
endif(ENABLE_LIBRESSL_INSTALL)
|
||||
endif(BUILD_APPLE_XCFRAMEWORK)
|
||||
|
||||
file(STRINGS "VERSION" VERSION LIMIT_COUNT 1)
|
||||
include(CMakePackageConfigHelpers)
|
||||
write_basic_package_version_file(
|
||||
"LibreSSLConfigVersion.cmake"
|
||||
VERSION "${VERSION}"
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
|
||||
set(INCLUDE_DIRECTORY "${CMAKE_BINARY_DIR}/include")
|
||||
configure_package_config_file(
|
||||
"${CMAKE_CURRENT_LIST_DIR}/LibreSSLConfig.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/LibreSSLConfig.cmake"
|
||||
PATH_VARS INCLUDE_DIRECTORY
|
||||
INSTALL_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}"
|
||||
INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}"
|
||||
)
|
||||
|
||||
if(ENABLE_LIBRESSL_INSTALL)
|
||||
set(INCLUDE_DIRECTORY "${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
configure_package_config_file(
|
||||
"${CMAKE_CURRENT_LIST_DIR}/LibreSSLConfig.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/install-config/LibreSSLConfig.cmake"
|
||||
PATH_VARS INCLUDE_DIRECTORY
|
||||
INSTALL_DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}/LibreSSL"
|
||||
)
|
||||
install(FILES
|
||||
"${CMAKE_BINARY_DIR}/install-config/LibreSSLConfig.cmake"
|
||||
"${CMAKE_BINARY_DIR}/LibreSSLConfigVersion.cmake"
|
||||
DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}/LibreSSL"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ENABLE_LIBRESSL_INSTALL)
|
||||
if(NOT MSVC)
|
||||
# Create pkgconfig files.
|
||||
@ -449,7 +482,6 @@ if(ENABLE_LIBRESSL_INSTALL)
|
||||
if(PLATFORM_LIBS)
|
||||
string(REGEX REPLACE ";" " -l" PLATFORM_LDADD ";${PLATFORM_LIBS}")
|
||||
endif()
|
||||
file(STRINGS "VERSION" VERSION LIMIT_COUNT 1)
|
||||
file(GLOB OPENSSL_PKGCONFIGS "*.pc.in")
|
||||
foreach(file ${OPENSSL_PKGCONFIGS})
|
||||
get_filename_component(filename ${file} NAME)
|
||||
|
33
LibreSSLConfig.cmake.in
Normal file
33
LibreSSLConfig.cmake.in
Normal file
@ -0,0 +1,33 @@
|
||||
@PACKAGE_INIT@
|
||||
|
||||
set(LIBRESSL_VERSION @VERSION@)
|
||||
set_and_check(LIBRESSL_INCLUDE_DIR @PACKAGE_INCLUDE_DIRECTORY@)
|
||||
|
||||
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/LibreSSL-Crypto.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/LibreSSL-Crypto.cmake")
|
||||
set(LIBRESSL_CRYPTO_LIBRARY LibreSSL::Crypto)
|
||||
endif()
|
||||
|
||||
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/LibreSSL-SSL.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/LibreSSL-SSL.cmake")
|
||||
set(LIBRESSL_SSL_LIBRARY LibreSSL::SSL)
|
||||
endif()
|
||||
|
||||
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/LibreSSL-TLS.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/LibreSSL-TLS.cmake")
|
||||
set(LIBRESSL_TLS_LIBRARY LibreSSL::TLS)
|
||||
endif()
|
||||
|
||||
set(LIBRESSL_LIBRARIES
|
||||
${LIBRESSL_CRYPTO_LIBRARY}
|
||||
${LIBRESSL_SSL_LIBRARY}
|
||||
${LIBRESSL_TLS_LIBRARY}
|
||||
)
|
||||
|
||||
check_required_components(
|
||||
Crypto
|
||||
SSL
|
||||
TLS
|
||||
)
|
||||
|
||||
set(LIBRESSL_FOUND TRUE)
|
@ -11,7 +11,7 @@ pkgconfig_DATA += libcrypto.pc libssl.pc openssl.pc
|
||||
endif
|
||||
|
||||
EXTRA_DIST = README.md README.windows VERSION config scripts
|
||||
EXTRA_DIST += CMakeLists.txt cmake_export_symbol.cmake cmake_uninstall.cmake.in FindLibreSSL.cmake
|
||||
EXTRA_DIST += CMakeLists.txt cmake_export_symbol.cmake cmake_uninstall.cmake.in FindLibreSSL.cmake LibreSSLConfig.cmake.in
|
||||
EXTRA_DIST += cert.pem openssl.cnf x509v3.cnf
|
||||
|
||||
.PHONY: install_sw
|
||||
|
@ -990,9 +990,29 @@ if (WIN32)
|
||||
endif()
|
||||
set_target_properties(crypto PROPERTIES
|
||||
OUTPUT_NAME crypto${CRYPTO_POSTFIX}
|
||||
ARCHIVE_OUTPUT_NAME crypto${CRYPTO_POSTFIX})
|
||||
set_target_properties(crypto PROPERTIES VERSION
|
||||
${CRYPTO_VERSION} SOVERSION ${CRYPTO_MAJOR_VERSION})
|
||||
ARCHIVE_OUTPUT_NAME crypto${CRYPTO_POSTFIX}
|
||||
EXPORT_NAME Crypto
|
||||
VERSION ${CRYPTO_VERSION}
|
||||
SOVERSION ${CRYPTO_MAJOR_VERSION}
|
||||
)
|
||||
|
||||
target_include_directories(
|
||||
crypto
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS crypto
|
||||
EXPORT Crypto-target
|
||||
)
|
||||
|
||||
export(
|
||||
EXPORT Crypto-target
|
||||
FILE "${LibreSSL_BINARY_DIR}/LibreSSL-Crypto.cmake"
|
||||
NAMESPACE LibreSSL::
|
||||
)
|
||||
|
||||
if(ENABLE_LIBRESSL_INSTALL)
|
||||
install(
|
||||
@ -1001,6 +1021,12 @@ if(ENABLE_LIBRESSL_INSTALL)
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
install(
|
||||
EXPORT Crypto-target
|
||||
FILE "LibreSSL-Crypto.cmake"
|
||||
NAMESPACE LibreSSL::
|
||||
DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}/LibreSSL"
|
||||
)
|
||||
endif(ENABLE_LIBRESSL_INSTALL)
|
||||
|
||||
# build static library for regression test
|
||||
|
@ -91,9 +91,29 @@ if (WIN32)
|
||||
endif()
|
||||
set_target_properties(ssl PROPERTIES
|
||||
OUTPUT_NAME ssl${SSL_POSTFIX}
|
||||
ARCHIVE_OUTPUT_NAME ssl${SSL_POSTFIX})
|
||||
set_target_properties(ssl PROPERTIES VERSION ${SSL_VERSION}
|
||||
SOVERSION ${SSL_MAJOR_VERSION})
|
||||
ARCHIVE_OUTPUT_NAME ssl${SSL_POSTFIX}
|
||||
EXPORT_NAME SSL
|
||||
VERSION ${SSL_VERSION}
|
||||
SOVERSION ${SSL_MAJOR_VERSION}
|
||||
)
|
||||
|
||||
target_include_directories(
|
||||
ssl
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS ssl
|
||||
EXPORT SSL-target
|
||||
)
|
||||
|
||||
export(
|
||||
EXPORT SSL-target
|
||||
FILE "${LibreSSL_BINARY_DIR}/LibreSSL-SSL.cmake"
|
||||
NAMESPACE LibreSSL::
|
||||
)
|
||||
|
||||
if(ENABLE_LIBRESSL_INSTALL)
|
||||
install(
|
||||
@ -102,6 +122,12 @@ if(ENABLE_LIBRESSL_INSTALL)
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
install(
|
||||
EXPORT SSL-target
|
||||
FILE "LibreSSL-SSL.cmake"
|
||||
NAMESPACE LibreSSL::
|
||||
DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}/LibreSSL"
|
||||
)
|
||||
endif(ENABLE_LIBRESSL_INSTALL)
|
||||
|
||||
# build static library for regression test
|
||||
|
@ -58,9 +58,29 @@ if (WIN32)
|
||||
endif()
|
||||
set_target_properties(tls PROPERTIES
|
||||
OUTPUT_NAME tls${TLS_POSTFIX}
|
||||
ARCHIVE_OUTPUT_NAME tls${TLS_POSTFIX})
|
||||
set_target_properties(tls PROPERTIES VERSION ${TLS_VERSION}
|
||||
SOVERSION ${TLS_MAJOR_VERSION})
|
||||
ARCHIVE_OUTPUT_NAME tls${TLS_POSTFIX}
|
||||
EXPORT_NAME TLS
|
||||
VERSION ${TLS_VERSION}
|
||||
SOVERSION ${TLS_MAJOR_VERSION}
|
||||
)
|
||||
|
||||
target_include_directories(
|
||||
tls
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS tls
|
||||
EXPORT TLS-target
|
||||
)
|
||||
|
||||
export(
|
||||
EXPORT TLS-target
|
||||
FILE "${LibreSSL_BINARY_DIR}/LibreSSL-TLS.cmake"
|
||||
NAMESPACE LibreSSL::
|
||||
)
|
||||
|
||||
if(ENABLE_LIBRESSL_INSTALL)
|
||||
install(
|
||||
@ -69,6 +89,12 @@ if(ENABLE_LIBRESSL_INSTALL)
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
install(
|
||||
EXPORT TLS-target
|
||||
FILE "LibreSSL-TLS.cmake"
|
||||
NAMESPACE LibreSSL::
|
||||
DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}/LibreSSL"
|
||||
)
|
||||
endif(ENABLE_LIBRESSL_INSTALL)
|
||||
|
||||
# build static library for regression test
|
||||
|
Loading…
x
Reference in New Issue
Block a user