diff options
author | Pierre Wendling <pierre.wendling.4@gmail.com> | 2023-08-06 15:07:31 -0400 |
---|---|---|
committer | Pierre Wendling <pierre.wendling.4@gmail.com> | 2023-08-19 12:16:15 -0400 |
commit | a89cd65980153ef60b42cb26d3bef949751f87f1 (patch) | |
tree | 15d4693562c401d0bbc0b3812d983ca1ac0391cb | |
parent | 5432e22b25026fb50b00ab5dcf894e18daa8bcb6 (diff) | |
download | portable-a89cd65980153ef60b42cb26d3bef949751f87f1.tar.gz portable-a89cd65980153ef60b42cb26d3bef949751f87f1.tar.bz2 portable-a89cd65980153ef60b42cb26d3bef949751f87f1.zip |
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.
-rw-r--r-- | CMakeLists.txt | 34 | ||||
-rw-r--r-- | LibreSSLConfig.cmake.in | 33 | ||||
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | crypto/CMakeLists.txt | 32 | ||||
-rw-r--r-- | ssl/CMakeLists.txt | 32 | ||||
-rw-r--r-- | tls/CMakeLists.txt | 32 |
6 files changed, 154 insertions, 11 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 991f60c..8e26e47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
@@ -39,6 +39,7 @@ option(ENABLE_ASM "Enable assembly" ON) | |||
39 | option(ENABLE_EXTRATESTS "Enable extra tests that may be unreliable on some platforms" OFF) | 39 | option(ENABLE_EXTRATESTS "Enable extra tests that may be unreliable on some platforms" OFF) |
40 | option(ENABLE_NC "Enable installing TLS-enabled nc(1)" OFF) | 40 | option(ENABLE_NC "Enable installing TLS-enabled nc(1)" OFF) |
41 | set(OPENSSLDIR ${OPENSSLDIR} CACHE PATH "Set the default openssl directory" FORCE) | 41 | set(OPENSSLDIR ${OPENSSLDIR} CACHE PATH "Set the default openssl directory" FORCE) |
42 | set(LIBRESSL_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake" CACHE STRING "Installation directory for the CMake targets") | ||
42 | 43 | ||
43 | option(USE_STATIC_MSVC_RUNTIMES "Use /MT instead of /MD in MSVC" OFF) | 44 | option(USE_STATIC_MSVC_RUNTIMES "Use /MT instead of /MD in MSVC" OFF) |
44 | if(USE_STATIC_MSVC_RUNTIMES) | 45 | if(USE_STATIC_MSVC_RUNTIMES) |
@@ -439,6 +440,38 @@ if (BUILD_APPLE_XCFRAMEWORK) | |||
439 | endif(ENABLE_LIBRESSL_INSTALL) | 440 | endif(ENABLE_LIBRESSL_INSTALL) |
440 | endif(BUILD_APPLE_XCFRAMEWORK) | 441 | endif(BUILD_APPLE_XCFRAMEWORK) |
441 | 442 | ||
443 | file(STRINGS "VERSION" VERSION LIMIT_COUNT 1) | ||
444 | include(CMakePackageConfigHelpers) | ||
445 | write_basic_package_version_file( | ||
446 | "LibreSSLConfigVersion.cmake" | ||
447 | VERSION "${VERSION}" | ||
448 | COMPATIBILITY SameMajorVersion | ||
449 | ) | ||
450 | |||
451 | set(INCLUDE_DIRECTORY "${CMAKE_BINARY_DIR}/include") | ||
452 | configure_package_config_file( | ||
453 | "${CMAKE_CURRENT_LIST_DIR}/LibreSSLConfig.cmake.in" | ||
454 | "${CMAKE_CURRENT_BINARY_DIR}/LibreSSLConfig.cmake" | ||
455 | PATH_VARS INCLUDE_DIRECTORY | ||
456 | INSTALL_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" | ||
457 | INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}" | ||
458 | ) | ||
459 | |||
460 | if(ENABLE_LIBRESSL_INSTALL) | ||
461 | set(INCLUDE_DIRECTORY "${CMAKE_INSTALL_INCLUDEDIR}") | ||
462 | configure_package_config_file( | ||
463 | "${CMAKE_CURRENT_LIST_DIR}/LibreSSLConfig.cmake.in" | ||
464 | "${CMAKE_CURRENT_BINARY_DIR}/install-config/LibreSSLConfig.cmake" | ||
465 | PATH_VARS INCLUDE_DIRECTORY | ||
466 | INSTALL_DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}/LibreSSL" | ||
467 | ) | ||
468 | install(FILES | ||
469 | "${CMAKE_BINARY_DIR}/install-config/LibreSSLConfig.cmake" | ||
470 | "${CMAKE_BINARY_DIR}/LibreSSLConfigVersion.cmake" | ||
471 | DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}/LibreSSL" | ||
472 | ) | ||
473 | endif() | ||
474 | |||
442 | if(ENABLE_LIBRESSL_INSTALL) | 475 | if(ENABLE_LIBRESSL_INSTALL) |
443 | if(NOT MSVC) | 476 | if(NOT MSVC) |
444 | # Create pkgconfig files. | 477 | # Create pkgconfig files. |
@@ -449,7 +482,6 @@ if(ENABLE_LIBRESSL_INSTALL) | |||
449 | if(PLATFORM_LIBS) | 482 | if(PLATFORM_LIBS) |
450 | string(REGEX REPLACE ";" " -l" PLATFORM_LDADD ";${PLATFORM_LIBS}") | 483 | string(REGEX REPLACE ";" " -l" PLATFORM_LDADD ";${PLATFORM_LIBS}") |
451 | endif() | 484 | endif() |
452 | file(STRINGS "VERSION" VERSION LIMIT_COUNT 1) | ||
453 | file(GLOB OPENSSL_PKGCONFIGS "*.pc.in") | 485 | file(GLOB OPENSSL_PKGCONFIGS "*.pc.in") |
454 | foreach(file ${OPENSSL_PKGCONFIGS}) | 486 | foreach(file ${OPENSSL_PKGCONFIGS}) |
455 | get_filename_component(filename ${file} NAME) | 487 | get_filename_component(filename ${file} NAME) |
diff --git a/LibreSSLConfig.cmake.in b/LibreSSLConfig.cmake.in new file mode 100644 index 0000000..d6fbe3b --- /dev/null +++ b/LibreSSLConfig.cmake.in | |||
@@ -0,0 +1,33 @@ | |||
1 | @PACKAGE_INIT@ | ||
2 | |||
3 | set(LIBRESSL_VERSION @VERSION@) | ||
4 | set_and_check(LIBRESSL_INCLUDE_DIR @PACKAGE_INCLUDE_DIRECTORY@) | ||
5 | |||
6 | if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/LibreSSL-Crypto.cmake") | ||
7 | include("${CMAKE_CURRENT_LIST_DIR}/LibreSSL-Crypto.cmake") | ||
8 | set(LIBRESSL_CRYPTO_LIBRARY LibreSSL::Crypto) | ||
9 | endif() | ||
10 | |||
11 | if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/LibreSSL-SSL.cmake") | ||
12 | include("${CMAKE_CURRENT_LIST_DIR}/LibreSSL-SSL.cmake") | ||
13 | set(LIBRESSL_SSL_LIBRARY LibreSSL::SSL) | ||
14 | endif() | ||
15 | |||
16 | if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/LibreSSL-TLS.cmake") | ||
17 | include("${CMAKE_CURRENT_LIST_DIR}/LibreSSL-TLS.cmake") | ||
18 | set(LIBRESSL_TLS_LIBRARY LibreSSL::TLS) | ||
19 | endif() | ||
20 | |||
21 | set(LIBRESSL_LIBRARIES | ||
22 | ${LIBRESSL_CRYPTO_LIBRARY} | ||
23 | ${LIBRESSL_SSL_LIBRARY} | ||
24 | ${LIBRESSL_TLS_LIBRARY} | ||
25 | ) | ||
26 | |||
27 | check_required_components( | ||
28 | Crypto | ||
29 | SSL | ||
30 | TLS | ||
31 | ) | ||
32 | |||
33 | set(LIBRESSL_FOUND TRUE) | ||
diff --git a/Makefile.am b/Makefile.am index d28692a..2edef0d 100644 --- a/Makefile.am +++ b/Makefile.am | |||
@@ -11,7 +11,7 @@ pkgconfig_DATA += libcrypto.pc libssl.pc openssl.pc | |||
11 | endif | 11 | endif |
12 | 12 | ||
13 | EXTRA_DIST = README.md README.windows VERSION config scripts | 13 | EXTRA_DIST = README.md README.windows VERSION config scripts |
14 | EXTRA_DIST += CMakeLists.txt cmake_export_symbol.cmake cmake_uninstall.cmake.in FindLibreSSL.cmake | 14 | EXTRA_DIST += CMakeLists.txt cmake_export_symbol.cmake cmake_uninstall.cmake.in FindLibreSSL.cmake LibreSSLConfig.cmake.in |
15 | EXTRA_DIST += cert.pem openssl.cnf x509v3.cnf | 15 | EXTRA_DIST += cert.pem openssl.cnf x509v3.cnf |
16 | 16 | ||
17 | .PHONY: install_sw | 17 | .PHONY: install_sw |
diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index 1e73e88..597ffef 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt | |||
@@ -990,9 +990,29 @@ if (WIN32) | |||
990 | endif() | 990 | endif() |
991 | set_target_properties(crypto PROPERTIES | 991 | set_target_properties(crypto PROPERTIES |
992 | OUTPUT_NAME crypto${CRYPTO_POSTFIX} | 992 | OUTPUT_NAME crypto${CRYPTO_POSTFIX} |
993 | ARCHIVE_OUTPUT_NAME crypto${CRYPTO_POSTFIX}) | 993 | ARCHIVE_OUTPUT_NAME crypto${CRYPTO_POSTFIX} |
994 | set_target_properties(crypto PROPERTIES VERSION | 994 | EXPORT_NAME Crypto |
995 | ${CRYPTO_VERSION} SOVERSION ${CRYPTO_MAJOR_VERSION}) | 995 | VERSION ${CRYPTO_VERSION} |
996 | SOVERSION ${CRYPTO_MAJOR_VERSION} | ||
997 | ) | ||
998 | |||
999 | target_include_directories( | ||
1000 | crypto | ||
1001 | PUBLIC | ||
1002 | $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include> | ||
1003 | $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> | ||
1004 | ) | ||
1005 | |||
1006 | install( | ||
1007 | TARGETS crypto | ||
1008 | EXPORT Crypto-target | ||
1009 | ) | ||
1010 | |||
1011 | export( | ||
1012 | EXPORT Crypto-target | ||
1013 | FILE "${LibreSSL_BINARY_DIR}/LibreSSL-Crypto.cmake" | ||
1014 | NAMESPACE LibreSSL:: | ||
1015 | ) | ||
996 | 1016 | ||
997 | if(ENABLE_LIBRESSL_INSTALL) | 1017 | if(ENABLE_LIBRESSL_INSTALL) |
998 | install( | 1018 | install( |
@@ -1001,6 +1021,12 @@ if(ENABLE_LIBRESSL_INSTALL) | |||
1001 | LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} | 1021 | LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} |
1002 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} | 1022 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} |
1003 | ) | 1023 | ) |
1024 | install( | ||
1025 | EXPORT Crypto-target | ||
1026 | FILE "LibreSSL-Crypto.cmake" | ||
1027 | NAMESPACE LibreSSL:: | ||
1028 | DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}/LibreSSL" | ||
1029 | ) | ||
1004 | endif(ENABLE_LIBRESSL_INSTALL) | 1030 | endif(ENABLE_LIBRESSL_INSTALL) |
1005 | 1031 | ||
1006 | # build static library for regression test | 1032 | # build static library for regression test |
diff --git a/ssl/CMakeLists.txt b/ssl/CMakeLists.txt index 3d5b5df..16ef277 100644 --- a/ssl/CMakeLists.txt +++ b/ssl/CMakeLists.txt | |||
@@ -91,9 +91,29 @@ if (WIN32) | |||
91 | endif() | 91 | endif() |
92 | set_target_properties(ssl PROPERTIES | 92 | set_target_properties(ssl PROPERTIES |
93 | OUTPUT_NAME ssl${SSL_POSTFIX} | 93 | OUTPUT_NAME ssl${SSL_POSTFIX} |
94 | ARCHIVE_OUTPUT_NAME ssl${SSL_POSTFIX}) | 94 | ARCHIVE_OUTPUT_NAME ssl${SSL_POSTFIX} |
95 | set_target_properties(ssl PROPERTIES VERSION ${SSL_VERSION} | 95 | EXPORT_NAME SSL |
96 | SOVERSION ${SSL_MAJOR_VERSION}) | 96 | VERSION ${SSL_VERSION} |
97 | SOVERSION ${SSL_MAJOR_VERSION} | ||
98 | ) | ||
99 | |||
100 | target_include_directories( | ||
101 | ssl | ||
102 | PUBLIC | ||
103 | $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include> | ||
104 | $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> | ||
105 | ) | ||
106 | |||
107 | install( | ||
108 | TARGETS ssl | ||
109 | EXPORT SSL-target | ||
110 | ) | ||
111 | |||
112 | export( | ||
113 | EXPORT SSL-target | ||
114 | FILE "${LibreSSL_BINARY_DIR}/LibreSSL-SSL.cmake" | ||
115 | NAMESPACE LibreSSL:: | ||
116 | ) | ||
97 | 117 | ||
98 | if(ENABLE_LIBRESSL_INSTALL) | 118 | if(ENABLE_LIBRESSL_INSTALL) |
99 | install( | 119 | install( |
@@ -102,6 +122,12 @@ if(ENABLE_LIBRESSL_INSTALL) | |||
102 | LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} | 122 | LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} |
103 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} | 123 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} |
104 | ) | 124 | ) |
125 | install( | ||
126 | EXPORT SSL-target | ||
127 | FILE "LibreSSL-SSL.cmake" | ||
128 | NAMESPACE LibreSSL:: | ||
129 | DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}/LibreSSL" | ||
130 | ) | ||
105 | endif(ENABLE_LIBRESSL_INSTALL) | 131 | endif(ENABLE_LIBRESSL_INSTALL) |
106 | 132 | ||
107 | # build static library for regression test | 133 | # build static library for regression test |
diff --git a/tls/CMakeLists.txt b/tls/CMakeLists.txt index 2a90192..a8f29af 100644 --- a/tls/CMakeLists.txt +++ b/tls/CMakeLists.txt | |||
@@ -58,9 +58,29 @@ if (WIN32) | |||
58 | endif() | 58 | endif() |
59 | set_target_properties(tls PROPERTIES | 59 | set_target_properties(tls PROPERTIES |
60 | OUTPUT_NAME tls${TLS_POSTFIX} | 60 | OUTPUT_NAME tls${TLS_POSTFIX} |
61 | ARCHIVE_OUTPUT_NAME tls${TLS_POSTFIX}) | 61 | ARCHIVE_OUTPUT_NAME tls${TLS_POSTFIX} |
62 | set_target_properties(tls PROPERTIES VERSION ${TLS_VERSION} | 62 | EXPORT_NAME TLS |
63 | SOVERSION ${TLS_MAJOR_VERSION}) | 63 | VERSION ${TLS_VERSION} |
64 | SOVERSION ${TLS_MAJOR_VERSION} | ||
65 | ) | ||
66 | |||
67 | target_include_directories( | ||
68 | tls | ||
69 | PUBLIC | ||
70 | $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include> | ||
71 | $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> | ||
72 | ) | ||
73 | |||
74 | install( | ||
75 | TARGETS tls | ||
76 | EXPORT TLS-target | ||
77 | ) | ||
78 | |||
79 | export( | ||
80 | EXPORT TLS-target | ||
81 | FILE "${LibreSSL_BINARY_DIR}/LibreSSL-TLS.cmake" | ||
82 | NAMESPACE LibreSSL:: | ||
83 | ) | ||
64 | 84 | ||
65 | if(ENABLE_LIBRESSL_INSTALL) | 85 | if(ENABLE_LIBRESSL_INSTALL) |
66 | install( | 86 | install( |
@@ -69,6 +89,12 @@ if(ENABLE_LIBRESSL_INSTALL) | |||
69 | LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} | 89 | LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} |
70 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} | 90 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} |
71 | ) | 91 | ) |
92 | install( | ||
93 | EXPORT TLS-target | ||
94 | FILE "LibreSSL-TLS.cmake" | ||
95 | NAMESPACE LibreSSL:: | ||
96 | DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}/LibreSSL" | ||
97 | ) | ||
72 | endif(ENABLE_LIBRESSL_INSTALL) | 98 | endif(ENABLE_LIBRESSL_INSTALL) |
73 | 99 | ||
74 | # build static library for regression test | 100 | # build static library for regression test |