Merge pull request #7188 from innolectric/innolectric

Innolectric CMake changes
pull/7217/head
Daniel Pouzzner 2024-02-05 16:08:58 -05:00 committed by GitHub
commit 2b33079d50
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 83 additions and 79 deletions

View File

@ -215,6 +215,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"
@ -1662,17 +1664,14 @@ if(WOLFSSL_FAST_MATH)
list(APPEND WOLFSSL_DEFINITIONS "-DUSE_FAST_MATH") list(APPEND WOLFSSL_DEFINITIONS "-DUSE_FAST_MATH")
set(WOLFSSL_SLOWMATH "no") set(WOLFSSL_SLOWMATH "no")
endif() endif()
if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86_64|AMD64")
# Have settings.h set FP_MAX_BITS higher if user didn't set directly
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_X86_64_BUILD")
endif()
endif() endif()
# TODO: - Fast huge math # TODO: - Fast huge math
# Set processor-specific build macros # Set processor-specific build macros
if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86_64|AMD64") if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86_64|AMD64")
set(WOLFSSL_X86_64_BUILD ON)
add_option("WOLFSSL_X86_64_BUILD_ASM" "Build ASM files" "yes" "yes;no")
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_X86_64_BUILD") list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_X86_64_BUILD")
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64|arm64") elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64|arm64")
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_AARCH64_BUILD") list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_AARCH64_BUILD")
@ -2523,7 +2522,9 @@ 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)
set(INSTALLED_EXAMPLES
${CMAKE_CURRENT_SOURCE_DIR}/examples/echoserver/echoserver.c ${CMAKE_CURRENT_SOURCE_DIR}/examples/echoserver/echoserver.c
${CMAKE_CURRENT_SOURCE_DIR}/examples/sctp/sctp-server.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-dtls.c
@ -2534,71 +2535,73 @@ set(INSTALLED_EXAMPLES
${CMAKE_CURRENT_SOURCE_DIR}/examples/benchmark/tls_bench.c ${CMAKE_CURRENT_SOURCE_DIR}/examples/benchmark/tls_bench.c
${CMAKE_CURRENT_SOURCE_DIR}/examples/client/client.c) ${CMAKE_CURRENT_SOURCE_DIR}/examples/client/client.c)
# Install the library
install(TARGETS wolfssl # Install the library
install(TARGETS wolfssl
EXPORT wolfssl-targets EXPORT wolfssl-targets
LIBRARY DESTINATION lib LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin RUNTIME DESTINATION bin
) )
# Install the headers # Install the headers
install(DIRECTORY ${WOLFSSL_OUTPUT_BASE}/wolfssl/ install(DIRECTORY ${WOLFSSL_OUTPUT_BASE}/wolfssl/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wolfssl DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wolfssl
FILES_MATCHING PATTERN "*.h" FILES_MATCHING PATTERN "*.h"
REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE) REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/wolfssl/ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/wolfssl/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wolfssl DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wolfssl
FILES_MATCHING PATTERN "*.h" FILES_MATCHING PATTERN "*.h"
REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE) REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE)
# Install the examples # Install the examples
install(FILES ${INSTALLED_EXAMPLES} install(FILES ${INSTALLED_EXAMPLES}
DESTINATION ${CMAKE_INSTALL_DOCDIR}/example) DESTINATION ${CMAKE_INSTALL_DOCDIR}/example)
# Install README.txt and taoCert.txt # Install README.txt and taoCert.txt
install(FILES install(FILES
${CMAKE_CURRENT_SOURCE_DIR}/doc/README.txt ${CMAKE_CURRENT_SOURCE_DIR}/doc/README.txt
${CMAKE_CURRENT_SOURCE_DIR}/certs/taoCert.txt ${CMAKE_CURRENT_SOURCE_DIR}/certs/taoCert.txt
DESTINATION ${CMAKE_INSTALL_DOCDIR}) DESTINATION ${CMAKE_INSTALL_DOCDIR})
# Install the export set # Install the export set
install(EXPORT wolfssl-targets install(EXPORT wolfssl-targets
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl
FILE wolfssl-targets.cmake FILE wolfssl-targets.cmake
NAMESPACE wolfssl::) NAMESPACE wolfssl::)
# TODO: Distro build + rules for what to include in the distro. # TODO: Distro build + rules for what to include in the distro.
# See various include.am files. # See various include.am files.
set(prefix ${CMAKE_INSTALL_PREFIX}) set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix "\${prefix}") set(exec_prefix "\${prefix}")
set(libdir "\${exec_prefix}/lib") set(libdir "\${exec_prefix}/lib")
set(includedir "\${prefix}/include") set(includedir "\${prefix}/include")
set(VERSION ${PROJECT_VERSION}) set(VERSION ${PROJECT_VERSION})
configure_file(support/wolfssl.pc.in ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc @ONLY) configure_file(support/wolfssl.pc.in ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc install(FILES ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
include(CMakePackageConfigHelpers) include(CMakePackageConfigHelpers)
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config.cmake"
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl" INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl"
NO_SET_AND_CHECK_MACRO NO_SET_AND_CHECK_MACRO
NO_CHECK_REQUIRED_COMPONENTS_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO
) )
export(EXPORT wolfssl-targets export(EXPORT wolfssl-targets
FILE "${CMAKE_CURRENT_BINARY_DIR}/wolfssl-targets.cmake" FILE "${CMAKE_CURRENT_BINARY_DIR}/wolfssl-targets.cmake"
NAMESPACE wolfssl:: NAMESPACE wolfssl::
) )
write_basic_package_version_file( write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config-version.cmake" "${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config-version.cmake"
VERSION "${wolfssl_VERSION_MAJOR}.${wolfssl_VERSION_MINOR}" VERSION "${wolfssl_VERSION_MAJOR}.${wolfssl_VERSION_MINOR}"
COMPATIBILITY AnyNewerVersion COMPATIBILITY AnyNewerVersion
) )
install(FILES install(FILES
${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config-version.cmake ${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl
) )
endif()

View File

@ -280,7 +280,7 @@ function(generate_build_flags)
if(WOLFSSL_SP_ARM_CORTEX_ASM OR WOLFSSL_USER_SETTINGS) if(WOLFSSL_SP_ARM_CORTEX_ASM OR WOLFSSL_USER_SETTINGS)
set(BUILD_SP_ARM_CORTEX "yes" PARENT_SCOPE) set(BUILD_SP_ARM_CORTEX "yes" PARENT_SCOPE)
endif() endif()
if(WOLFSSL_SP_X86_64_ASM OR WOLFSSL_USER_SETTINGS) if(WOLFSSL_X86_64_BUILD AND (WOLFSSL_SP_X86_64_ASM OR WOLFSSL_USER_SETTINGS))
set(BUILD_SP_X86_64 "yes" PARENT_SCOPE) set(BUILD_SP_X86_64 "yes" PARENT_SCOPE)
endif() endif()
if(WOLFSSL_SP_MATH OR WOLFSSL_SP_MATH_ALL OR WOLFSSL_USER_SETTINGS) if(WOLFSSL_SP_MATH OR WOLFSSL_SP_MATH_ALL OR WOLFSSL_USER_SETTINGS)
@ -505,9 +505,10 @@ function(generate_lib_src_list LIB_SOURCES)
endif() endif()
if(BUILD_SP_X86_64) if(BUILD_SP_X86_64)
list(APPEND LIB_SOURCES list(APPEND LIB_SOURCES wolfcrypt/src/sp_x86_64.c)
wolfcrypt/src/sp_x86_64.c if(WOLFSSL_X86_64_BUILD_ASM)
wolfcrypt/src/sp_x86_64_asm.S) list(APPEND LIB_SOURCES wolfcrypt/src/sp_x86_64_asm.S)
endif()
endif() endif()
if(NOT BUILD_FIPS_V2 AND BUILD_SP_ARM32) if(NOT BUILD_FIPS_V2 AND BUILD_SP_ARM32)