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_EXTRATESTS "Enable extra tests that may be unreliable on some platforms" OFF)
|
||||||
option(ENABLE_NC "Enable installing TLS-enabled nc(1)" OFF)
|
option(ENABLE_NC "Enable installing TLS-enabled nc(1)" OFF)
|
||||||
set(OPENSSLDIR ${OPENSSLDIR} CACHE PATH "Set the default openssl directory" FORCE)
|
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)
|
option(USE_STATIC_MSVC_RUNTIMES "Use /MT instead of /MD in MSVC" OFF)
|
||||||
if(USE_STATIC_MSVC_RUNTIMES)
|
if(USE_STATIC_MSVC_RUNTIMES)
|
||||||
@ -439,6 +440,38 @@ if (BUILD_APPLE_XCFRAMEWORK)
|
|||||||
endif(ENABLE_LIBRESSL_INSTALL)
|
endif(ENABLE_LIBRESSL_INSTALL)
|
||||||
endif(BUILD_APPLE_XCFRAMEWORK)
|
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(ENABLE_LIBRESSL_INSTALL)
|
||||||
if(NOT MSVC)
|
if(NOT MSVC)
|
||||||
# Create pkgconfig files.
|
# Create pkgconfig files.
|
||||||
@ -449,7 +482,6 @@ if(ENABLE_LIBRESSL_INSTALL)
|
|||||||
if(PLATFORM_LIBS)
|
if(PLATFORM_LIBS)
|
||||||
string(REGEX REPLACE ";" " -l" PLATFORM_LDADD ";${PLATFORM_LIBS}")
|
string(REGEX REPLACE ";" " -l" PLATFORM_LDADD ";${PLATFORM_LIBS}")
|
||||||
endif()
|
endif()
|
||||||
file(STRINGS "VERSION" VERSION LIMIT_COUNT 1)
|
|
||||||
file(GLOB OPENSSL_PKGCONFIGS "*.pc.in")
|
file(GLOB OPENSSL_PKGCONFIGS "*.pc.in")
|
||||||
foreach(file ${OPENSSL_PKGCONFIGS})
|
foreach(file ${OPENSSL_PKGCONFIGS})
|
||||||
get_filename_component(filename ${file} NAME)
|
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
|
endif
|
||||||
|
|
||||||
EXTRA_DIST = README.md README.windows VERSION config scripts
|
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
|
EXTRA_DIST += cert.pem openssl.cnf x509v3.cnf
|
||||||
|
|
||||||
.PHONY: install_sw
|
.PHONY: install_sw
|
||||||
|
@ -990,9 +990,29 @@ if (WIN32)
|
|||||||
endif()
|
endif()
|
||||||
set_target_properties(crypto PROPERTIES
|
set_target_properties(crypto PROPERTIES
|
||||||
OUTPUT_NAME crypto${CRYPTO_POSTFIX}
|
OUTPUT_NAME crypto${CRYPTO_POSTFIX}
|
||||||
ARCHIVE_OUTPUT_NAME crypto${CRYPTO_POSTFIX})
|
ARCHIVE_OUTPUT_NAME crypto${CRYPTO_POSTFIX}
|
||||||
set_target_properties(crypto PROPERTIES VERSION
|
EXPORT_NAME Crypto
|
||||||
${CRYPTO_VERSION} SOVERSION ${CRYPTO_MAJOR_VERSION})
|
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)
|
if(ENABLE_LIBRESSL_INSTALL)
|
||||||
install(
|
install(
|
||||||
@ -1001,6 +1021,12 @@ if(ENABLE_LIBRESSL_INSTALL)
|
|||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
)
|
)
|
||||||
|
install(
|
||||||
|
EXPORT Crypto-target
|
||||||
|
FILE "LibreSSL-Crypto.cmake"
|
||||||
|
NAMESPACE LibreSSL::
|
||||||
|
DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}/LibreSSL"
|
||||||
|
)
|
||||||
endif(ENABLE_LIBRESSL_INSTALL)
|
endif(ENABLE_LIBRESSL_INSTALL)
|
||||||
|
|
||||||
# build static library for regression test
|
# build static library for regression test
|
||||||
|
@ -91,9 +91,29 @@ if (WIN32)
|
|||||||
endif()
|
endif()
|
||||||
set_target_properties(ssl PROPERTIES
|
set_target_properties(ssl PROPERTIES
|
||||||
OUTPUT_NAME ssl${SSL_POSTFIX}
|
OUTPUT_NAME ssl${SSL_POSTFIX}
|
||||||
ARCHIVE_OUTPUT_NAME ssl${SSL_POSTFIX})
|
ARCHIVE_OUTPUT_NAME ssl${SSL_POSTFIX}
|
||||||
set_target_properties(ssl PROPERTIES VERSION ${SSL_VERSION}
|
EXPORT_NAME SSL
|
||||||
SOVERSION ${SSL_MAJOR_VERSION})
|
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)
|
if(ENABLE_LIBRESSL_INSTALL)
|
||||||
install(
|
install(
|
||||||
@ -102,6 +122,12 @@ if(ENABLE_LIBRESSL_INSTALL)
|
|||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
)
|
)
|
||||||
|
install(
|
||||||
|
EXPORT SSL-target
|
||||||
|
FILE "LibreSSL-SSL.cmake"
|
||||||
|
NAMESPACE LibreSSL::
|
||||||
|
DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}/LibreSSL"
|
||||||
|
)
|
||||||
endif(ENABLE_LIBRESSL_INSTALL)
|
endif(ENABLE_LIBRESSL_INSTALL)
|
||||||
|
|
||||||
# build static library for regression test
|
# build static library for regression test
|
||||||
|
@ -58,9 +58,29 @@ if (WIN32)
|
|||||||
endif()
|
endif()
|
||||||
set_target_properties(tls PROPERTIES
|
set_target_properties(tls PROPERTIES
|
||||||
OUTPUT_NAME tls${TLS_POSTFIX}
|
OUTPUT_NAME tls${TLS_POSTFIX}
|
||||||
ARCHIVE_OUTPUT_NAME tls${TLS_POSTFIX})
|
ARCHIVE_OUTPUT_NAME tls${TLS_POSTFIX}
|
||||||
set_target_properties(tls PROPERTIES VERSION ${TLS_VERSION}
|
EXPORT_NAME TLS
|
||||||
SOVERSION ${TLS_MAJOR_VERSION})
|
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)
|
if(ENABLE_LIBRESSL_INSTALL)
|
||||||
install(
|
install(
|
||||||
@ -69,6 +89,12 @@ if(ENABLE_LIBRESSL_INSTALL)
|
|||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
)
|
)
|
||||||
|
install(
|
||||||
|
EXPORT TLS-target
|
||||||
|
FILE "LibreSSL-TLS.cmake"
|
||||||
|
NAMESPACE LibreSSL::
|
||||||
|
DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}/LibreSSL"
|
||||||
|
)
|
||||||
endif(ENABLE_LIBRESSL_INSTALL)
|
endif(ENABLE_LIBRESSL_INSTALL)
|
||||||
|
|
||||||
# build static library for regression test
|
# build static library for regression test
|
||||||
|
Loading…
x
Reference in New Issue
Block a user