cmake: guard installation with WOLFSSL_INSTALL option

This commit is contained in:
Mikhail Paulyshka
2023-09-15 16:27:11 +03:00
committed by Christian Luca Civello
parent 7adddc5fb8
commit fca2f14f48

View File

@ -214,6 +214,8 @@ if(WOLFSSL_REPRODUCIBLE_BUILD)
set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -D <TARGET>") set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -D <TARGET>")
endif() endif()
add_option("WOLFSSL_INSTALL" "Create install target for WolfSSL project" "no" "yes;no")
# Support for forcing 32-bit mode # Support for forcing 32-bit mode
# TODO: detect platform from other options # TODO: detect platform from other options
add_option("WOLFSSL_32BIT" add_option("WOLFSSL_32BIT"
@ -2409,82 +2411,86 @@ list(JOIN HEADER_EXCLUDE "|" EXCLUDED_HEADERS_REGEX)
string(PREPEND EXCLUDED_HEADERS_REGEX "(") string(PREPEND EXCLUDED_HEADERS_REGEX "(")
string(APPEND EXCLUDED_HEADERS_REGEX ")") string(APPEND EXCLUDED_HEADERS_REGEX ")")
set(INSTALLED_EXAMPLES if(WOLFSSL_INSTALL)
${CMAKE_CURRENT_SOURCE_DIR}/examples/echoserver/echoserver.c
${CMAKE_CURRENT_SOURCE_DIR}/examples/sctp/sctp-server.c
${CMAKE_CURRENT_SOURCE_DIR}/examples/sctp/sctp-client-dtls.c
${CMAKE_CURRENT_SOURCE_DIR}/examples/sctp/sctp-client.c
${CMAKE_CURRENT_SOURCE_DIR}/examples/sctp/sctp-server-dtls.c
${CMAKE_CURRENT_SOURCE_DIR}/examples/echoclient/echoclient.c
${CMAKE_CURRENT_SOURCE_DIR}/examples/server/server.c
${CMAKE_CURRENT_SOURCE_DIR}/examples/benchmark/tls_bench.c
${CMAKE_CURRENT_SOURCE_DIR}/examples/client/client.c)
# Install the library set(INSTALLED_EXAMPLES
install(TARGETS wolfssl ${CMAKE_CURRENT_SOURCE_DIR}/examples/echoserver/echoserver.c
EXPORT wolfssl-targets ${CMAKE_CURRENT_SOURCE_DIR}/examples/sctp/sctp-server.c
LIBRARY DESTINATION lib ${CMAKE_CURRENT_SOURCE_DIR}/examples/sctp/sctp-client-dtls.c
ARCHIVE DESTINATION lib ${CMAKE_CURRENT_SOURCE_DIR}/examples/sctp/sctp-client.c
RUNTIME DESTINATION bin ${CMAKE_CURRENT_SOURCE_DIR}/examples/sctp/sctp-server-dtls.c
) ${CMAKE_CURRENT_SOURCE_DIR}/examples/echoclient/echoclient.c
# Install the headers ${CMAKE_CURRENT_SOURCE_DIR}/examples/server/server.c
install(DIRECTORY ${WOLFSSL_OUTPUT_BASE}/wolfssl/ ${CMAKE_CURRENT_SOURCE_DIR}/examples/benchmark/tls_bench.c
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wolfssl ${CMAKE_CURRENT_SOURCE_DIR}/examples/client/client.c)
FILES_MATCHING PATTERN "*.h"
REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/wolfssl/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wolfssl
FILES_MATCHING PATTERN "*.h"
REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE)
# Install the examples
install(FILES ${INSTALLED_EXAMPLES}
DESTINATION ${CMAKE_INSTALL_DOCDIR}/example)
# Install README.txt and taoCert.txt
install(FILES
${CMAKE_CURRENT_SOURCE_DIR}/doc/README.txt
${CMAKE_CURRENT_SOURCE_DIR}/certs/taoCert.txt
DESTINATION ${CMAKE_INSTALL_DOCDIR})
# Install the export set
install(EXPORT wolfssl-targets
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl
FILE wolfssl-targets.cmake
NAMESPACE wolfssl::)
# TODO: Distro build + rules for what to include in the distro. # Install the library
# See various include.am files. install(TARGETS wolfssl
EXPORT wolfssl-targets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
)
# Install the headers
install(DIRECTORY ${WOLFSSL_OUTPUT_BASE}/wolfssl/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wolfssl
FILES_MATCHING PATTERN "*.h"
REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/wolfssl/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wolfssl
FILES_MATCHING PATTERN "*.h"
REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE)
set(prefix ${CMAKE_INSTALL_PREFIX}) # Install the examples
set(exec_prefix "\${prefix}") install(FILES ${INSTALLED_EXAMPLES}
set(libdir "\${exec_prefix}/lib") DESTINATION ${CMAKE_INSTALL_DOCDIR}/example)
set(includedir "\${prefix}/include") # Install README.txt and taoCert.txt
set(VERSION ${PROJECT_VERSION}) install(FILES
${CMAKE_CURRENT_SOURCE_DIR}/doc/README.txt
${CMAKE_CURRENT_SOURCE_DIR}/certs/taoCert.txt
DESTINATION ${CMAKE_INSTALL_DOCDIR})
# Install the export set
install(EXPORT wolfssl-targets
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl
FILE wolfssl-targets.cmake
NAMESPACE wolfssl::)
configure_file(support/wolfssl.pc.in ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc @ONLY) # TODO: Distro build + rules for what to include in the distro.
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc # See various include.am files.
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
include(CMakePackageConfigHelpers) set(prefix ${CMAKE_INSTALL_PREFIX})
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in set(exec_prefix "\${prefix}")
"${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config.cmake" set(libdir "\${exec_prefix}/lib")
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl" set(includedir "\${prefix}/include")
NO_SET_AND_CHECK_MACRO set(VERSION ${PROJECT_VERSION})
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
export(EXPORT wolfssl-targets configure_file(support/wolfssl.pc.in ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc @ONLY)
FILE "${CMAKE_CURRENT_BINARY_DIR}/wolfssl-targets.cmake" install(FILES ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc
NAMESPACE wolfssl:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
)
write_basic_package_version_file( include(CMakePackageConfigHelpers)
"${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config-version.cmake" configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in
VERSION "${wolfssl_VERSION_MAJOR}.${wolfssl_VERSION_MINOR}" "${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config.cmake"
COMPATIBILITY AnyNewerVersion INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl"
) NO_SET_AND_CHECK_MACRO
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
install(FILES export(EXPORT wolfssl-targets
${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config.cmake FILE "${CMAKE_CURRENT_BINARY_DIR}/wolfssl-targets.cmake"
${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config-version.cmake NAMESPACE wolfssl::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl )
)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config-version.cmake"
VERSION "${wolfssl_VERSION_MAJOR}.${wolfssl_VERSION_MINOR}"
COMPATIBILITY AnyNewerVersion
)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl
)
endif()