Skip to content

Commit 2b33079

Browse files
authored
Merge pull request #7188 from innolectric/innolectric
Innolectric CMake changes
2 parents 9060da4 + 944c7e1 commit 2b33079

2 files changed

Lines changed: 89 additions & 85 deletions

File tree

CMakeLists.txt

Lines changed: 84 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,8 @@ if(WOLFSSL_REPRODUCIBLE_BUILD)
215215
set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -D <TARGET>")
216216
endif()
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
220222
add_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()
16701667
endif()
16711668

16721669
# TODO: - Fast huge math
16731670

16741671
# Set processor-specific build macros
16751672
if("${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")
16771676
elseif("${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)
25232522
string(PREPEND EXCLUDED_HEADERS_REGEX "(")
25242523
string(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()

cmake/functions.cmake

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ function(generate_build_flags)
280280
if(WOLFSSL_SP_ARM_CORTEX_ASM OR WOLFSSL_USER_SETTINGS)
281281
set(BUILD_SP_ARM_CORTEX "yes" PARENT_SCOPE)
282282
endif()
283-
if(WOLFSSL_SP_X86_64_ASM OR WOLFSSL_USER_SETTINGS)
283+
if(WOLFSSL_X86_64_BUILD AND (WOLFSSL_SP_X86_64_ASM OR WOLFSSL_USER_SETTINGS))
284284
set(BUILD_SP_X86_64 "yes" PARENT_SCOPE)
285285
endif()
286286
if(WOLFSSL_SP_MATH OR WOLFSSL_SP_MATH_ALL OR WOLFSSL_USER_SETTINGS)
@@ -505,9 +505,10 @@ function(generate_lib_src_list LIB_SOURCES)
505505
endif()
506506

507507
if(BUILD_SP_X86_64)
508-
list(APPEND LIB_SOURCES
509-
wolfcrypt/src/sp_x86_64.c
510-
wolfcrypt/src/sp_x86_64_asm.S)
508+
list(APPEND LIB_SOURCES wolfcrypt/src/sp_x86_64.c)
509+
if(WOLFSSL_X86_64_BUILD_ASM)
510+
list(APPEND LIB_SOURCES wolfcrypt/src/sp_x86_64_asm.S)
511+
endif()
511512
endif()
512513

513514
if(NOT BUILD_FIPS_V2 AND BUILD_SP_ARM32)

0 commit comments

Comments
 (0)