@@ -215,6 +215,8 @@ if(WOLFSSL_REPRODUCIBLE_BUILD)
215215 set (CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -D <TARGET>" )
216216endif ()
217217
218+ add_option ("WOLFSSL_INSTALL" "Create install target for WolfSSL project" "no" "yes;no" )
219+
218220# Support for forcing 32-bit mode
219221# TODO: detect platform from other options
220222add_option ("WOLFSSL_32BIT"
@@ -1662,17 +1664,14 @@ if(WOLFSSL_FAST_MATH)
16621664 list (APPEND WOLFSSL_DEFINITIONS "-DUSE_FAST_MATH" )
16631665 set (WOLFSSL_SLOWMATH "no" )
16641666 endif ()
1665-
1666- if ("${CMAKE_SYSTEM_PROCESSOR} " MATCHES "x86_64|AMD64" )
1667- # Have settings.h set FP_MAX_BITS higher if user didn't set directly
1668- list (APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_X86_64_BUILD" )
1669- endif ()
16701667endif ()
16711668
16721669# TODO: - Fast huge math
16731670
16741671# Set processor-specific build macros
16751672if ("${CMAKE_SYSTEM_PROCESSOR} " MATCHES "x86_64|AMD64" )
1673+ set (WOLFSSL_X86_64_BUILD ON )
1674+ add_option ("WOLFSSL_X86_64_BUILD_ASM" "Build ASM files" "yes" "yes;no" )
16761675 list (APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_X86_64_BUILD" )
16771676elseif ("${CMAKE_SYSTEM_PROCESSOR} " MATCHES "aarch64|arm64" )
16781677 list (APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_AARCH64_BUILD" )
@@ -2523,82 +2522,86 @@ list(JOIN HEADER_EXCLUDE "|" EXCLUDED_HEADERS_REGEX)
25232522string (PREPEND EXCLUDED_HEADERS_REGEX "(" )
25242523string (APPEND EXCLUDED_HEADERS_REGEX ")" )
25252524
2526- set (INSTALLED_EXAMPLES
2527- ${CMAKE_CURRENT_SOURCE_DIR} /examples/echoserver/echoserver.c
2528- ${CMAKE_CURRENT_SOURCE_DIR} /examples/sctp/sctp-server.c
2529- ${CMAKE_CURRENT_SOURCE_DIR} /examples/sctp/sctp-client-dtls.c
2530- ${CMAKE_CURRENT_SOURCE_DIR} /examples/sctp/sctp-client.c
2531- ${CMAKE_CURRENT_SOURCE_DIR} /examples/sctp/sctp-server-dtls.c
2532- ${CMAKE_CURRENT_SOURCE_DIR} /examples/echoclient/echoclient.c
2533- ${CMAKE_CURRENT_SOURCE_DIR} /examples/server/server.c
2534- ${CMAKE_CURRENT_SOURCE_DIR} /examples/benchmark/tls_bench.c
2535- ${CMAKE_CURRENT_SOURCE_DIR} /examples/client/client.c)
2536-
2537- # Install the library
2538- install (TARGETS wolfssl
2539- EXPORT wolfssl-targets
2540- LIBRARY DESTINATION lib
2541- ARCHIVE DESTINATION lib
2542- RUNTIME DESTINATION bin
2543- )
2544- # Install the headers
2545- install (DIRECTORY ${WOLFSSL_OUTPUT_BASE} /wolfssl/
2546- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /wolfssl
2547- FILES_MATCHING PATTERN "*.h"
2548- REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE)
2549- install (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /wolfssl/
2550- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /wolfssl
2551- FILES_MATCHING PATTERN "*.h"
2552- REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE)
2553-
2554- # Install the examples
2555- install (FILES ${INSTALLED_EXAMPLES}
2556- DESTINATION ${CMAKE_INSTALL_DOCDIR} /example)
2557- # Install README.txt and taoCert.txt
2558- install (FILES
2559- ${CMAKE_CURRENT_SOURCE_DIR} /doc/README.txt
2560- ${CMAKE_CURRENT_SOURCE_DIR} /certs/taoCert.txt
2561- DESTINATION ${CMAKE_INSTALL_DOCDIR} )
2562- # Install the export set
2563- install (EXPORT wolfssl-targets
2564- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/wolfssl
2565- FILE wolfssl-targets .cmake
2566- NAMESPACE wolfssl::)
2567-
2568- # TODO: Distro build + rules for what to include in the distro.
2569- # See various include.am files.
2570-
2571- set (prefix ${CMAKE_INSTALL_PREFIX} )
2572- set (exec_prefix "\$ {prefix}" )
2573- set (libdir "\$ {exec_prefix}/lib" )
2574- set (includedir "\$ {prefix}/include" )
2575- set (VERSION ${PROJECT_VERSION} )
2576-
2577- configure_file (support/wolfssl.pc.in ${CMAKE_CURRENT_BINARY_DIR} /support/wolfssl.pc @ONLY )
2578- install (FILES ${CMAKE_CURRENT_BINARY_DIR} /support/wolfssl.pc
2579- DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig)
2580-
2581- include (CMakePackageConfigHelpers )
2582- configure_package_config_file (${CMAKE_CURRENT_SOURCE_DIR} /cmake/Config.cmake.in
2583- "${CMAKE_CURRENT_BINARY_DIR} /wolfssl-config.cmake"
2584- INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/wolfssl"
2585- NO_SET_AND_CHECK_MACRO
2586- NO_CHECK_REQUIRED_COMPONENTS_MACRO
2587- )
2525+ if (WOLFSSL_INSTALL)
2526+
2527+ set (INSTALLED_EXAMPLES
2528+ ${CMAKE_CURRENT_SOURCE_DIR} /examples/echoserver/echoserver.c
2529+ ${CMAKE_CURRENT_SOURCE_DIR} /examples/sctp/sctp-server.c
2530+ ${CMAKE_CURRENT_SOURCE_DIR} /examples/sctp/sctp-client-dtls.c
2531+ ${CMAKE_CURRENT_SOURCE_DIR} /examples/sctp/sctp-client.c
2532+ ${CMAKE_CURRENT_SOURCE_DIR} /examples/sctp/sctp-server-dtls.c
2533+ ${CMAKE_CURRENT_SOURCE_DIR} /examples/echoclient/echoclient.c
2534+ ${CMAKE_CURRENT_SOURCE_DIR} /examples/server/server.c
2535+ ${CMAKE_CURRENT_SOURCE_DIR} /examples/benchmark/tls_bench.c
2536+ ${CMAKE_CURRENT_SOURCE_DIR} /examples/client/client.c)
25882537
2589- export (EXPORT wolfssl-targets
2590- FILE "${CMAKE_CURRENT_BINARY_DIR} /wolfssl-targets.cmake"
2591- NAMESPACE wolfssl::
2592- )
25932538
2594- write_basic_package_version_file (
2595- "${CMAKE_CURRENT_BINARY_DIR} /wolfssl-config-version.cmake"
2596- VERSION "${wolfssl_VERSION_MAJOR} .${wolfssl_VERSION_MINOR} "
2597- COMPATIBILITY AnyNewerVersion
2598- )
2539+ # Install the library
2540+ install (TARGETS wolfssl
2541+ EXPORT wolfssl-targets
2542+ LIBRARY DESTINATION lib
2543+ ARCHIVE DESTINATION lib
2544+ RUNTIME DESTINATION bin
2545+ )
2546+ # Install the headers
2547+ install (DIRECTORY ${WOLFSSL_OUTPUT_BASE} /wolfssl/
2548+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /wolfssl
2549+ FILES_MATCHING PATTERN "*.h"
2550+ REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE)
2551+ install (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /wolfssl/
2552+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /wolfssl
2553+ FILES_MATCHING PATTERN "*.h"
2554+ REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE)
2555+
2556+ # Install the examples
2557+ install (FILES ${INSTALLED_EXAMPLES}
2558+ DESTINATION ${CMAKE_INSTALL_DOCDIR} /example)
2559+ # Install README.txt and taoCert.txt
2560+ install (FILES
2561+ ${CMAKE_CURRENT_SOURCE_DIR} /doc/README.txt
2562+ ${CMAKE_CURRENT_SOURCE_DIR} /certs/taoCert.txt
2563+ DESTINATION ${CMAKE_INSTALL_DOCDIR} )
2564+ # Install the export set
2565+ install (EXPORT wolfssl-targets
2566+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/wolfssl
2567+ FILE wolfssl-targets .cmake
2568+ NAMESPACE wolfssl::)
2569+
2570+ # TODO: Distro build + rules for what to include in the distro.
2571+ # See various include.am files.
2572+
2573+ set (prefix ${CMAKE_INSTALL_PREFIX} )
2574+ set (exec_prefix "\$ {prefix}" )
2575+ set (libdir "\$ {exec_prefix}/lib" )
2576+ set (includedir "\$ {prefix}/include" )
2577+ set (VERSION ${PROJECT_VERSION} )
2578+
2579+ configure_file (support/wolfssl.pc.in ${CMAKE_CURRENT_BINARY_DIR} /support/wolfssl.pc @ONLY )
2580+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /support/wolfssl.pc
2581+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig)
2582+
2583+ include (CMakePackageConfigHelpers )
2584+ configure_package_config_file (${CMAKE_CURRENT_SOURCE_DIR} /cmake/Config.cmake.in
2585+ "${CMAKE_CURRENT_BINARY_DIR} /wolfssl-config.cmake"
2586+ INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/wolfssl"
2587+ NO_SET_AND_CHECK_MACRO
2588+ NO_CHECK_REQUIRED_COMPONENTS_MACRO
2589+ )
25992590
2600- install (FILES
2601- ${CMAKE_CURRENT_BINARY_DIR} /wolfssl-config.cmake
2602- ${CMAKE_CURRENT_BINARY_DIR} /wolfssl-config-version.cmake
2603- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/wolfssl
2604- )
2591+ export (EXPORT wolfssl-targets
2592+ FILE "${CMAKE_CURRENT_BINARY_DIR} /wolfssl-targets.cmake"
2593+ NAMESPACE wolfssl::
2594+ )
2595+
2596+ write_basic_package_version_file (
2597+ "${CMAKE_CURRENT_BINARY_DIR} /wolfssl-config-version.cmake"
2598+ VERSION "${wolfssl_VERSION_MAJOR} .${wolfssl_VERSION_MINOR} "
2599+ COMPATIBILITY AnyNewerVersion
2600+ )
2601+
2602+ install (FILES
2603+ ${CMAKE_CURRENT_BINARY_DIR} /wolfssl-config.cmake
2604+ ${CMAKE_CURRENT_BINARY_DIR} /wolfssl-config-version.cmake
2605+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/wolfssl
2606+ )
2607+ endif ()
0 commit comments