Merge pull request #7188 from innolectric/innolectric

Innolectric CMake changes
This commit is contained in:
Daniel Pouzzner
2024-02-05 16:08:58 -05:00
committed by GitHub
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,82 +2522,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()

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)