From a7c54166b9ed5eeebfcf30e8497edd2f605c8ffc Mon Sep 17 00:00:00 2001 From: oltolm Date: Sat, 22 Apr 2023 13:02:50 +0200 Subject: [PATCH 1/9] make wolfssl compile with Mingw-w64 --- wolfssl/wolfcrypt/sp_int.h | 2 +- wolfssl/wolfcrypt/types.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/wolfssl/wolfcrypt/sp_int.h b/wolfssl/wolfcrypt/sp_int.h index 033e85f85a..5ee33d5db1 100644 --- a/wolfssl/wolfcrypt/sp_int.h +++ b/wolfssl/wolfcrypt/sp_int.h @@ -234,7 +234,7 @@ extern "C" { #ifndef SP_WORD_SIZE #ifdef NO_64BIT #define SP_WORD_SIZE 16 - #elif !defined(HAVE___UINT128_T) + #elif !defined(HAVE___UINT128_T) || defined(_WIN32) #define SP_WORD_SIZE 32 #else #define SP_WORD_SIZE 64 diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h index 28ab2cbc5f..295f25214a 100644 --- a/wolfssl/wolfcrypt/types.h +++ b/wolfssl/wolfcrypt/types.h @@ -141,7 +141,7 @@ decouple library dependencies with standard string, memory and so on. #define WC_STRINGIFY(str) _WC_STRINGIFY_L2(str) /* try to set SIZEOF_LONG or SIZEOF_LONG_LONG if user didn't */ - #if defined(_MSC_VER) || defined(HAVE_LIMITS_H) + #if defined(_WIN32) || defined(HAVE_LIMITS_H) /* make sure both SIZEOF_LONG_LONG and SIZEOF_LONG are set, * otherwise causes issues with CTC_SETTINGS */ #if !defined(SIZEOF_LONG_LONG) || !defined(SIZEOF_LONG) From 7fc6083f414ed177c2426290b14bf0edb14e24c1 Mon Sep 17 00:00:00 2001 From: oltolm Date: Sat, 22 Apr 2023 13:03:54 +0200 Subject: [PATCH 2/9] cmake: CMAKE_SYSTEM_PROCESSOR is AMD64 on Windows --- CMakeLists.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index de0fbd58cd..6c6c747a00 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -548,7 +548,7 @@ endif() # SHA224 set(SHA224_DEFAULT "no") -if(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") OR +if(("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86_64|AMD64") OR ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64")) if(NOT WOLFSSL_AFALG AND NOT WOLFSSL_DEVCRYPTO AND (NOT WOLFSSL_FIPS OR ("${FIPS_VERSION}" STREQUAL "v2"))) @@ -562,7 +562,7 @@ add_option("WOLFSSL_SHA224" # SHA3 set(SHA3_DEFAULT "no") -if(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") OR +if(("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86_64|AMD64") OR ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64")) if(NOT WOLFSSL_FIPS OR ("${FIPS_VERSION}" STREQUAL "v2")) set(SHA3_DEFAULT "yes") @@ -1048,7 +1048,7 @@ endif() # Base64 set(BASE64_ENCODE_DEFAULT "no") -if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") +if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86_64|AMD64") set(BASE64_ENCODE_DEFAULT "yes") endif() @@ -1526,7 +1526,7 @@ if(WOLFSSL_FAST_MATH) set(WOLFSSL_SLOWMATH "no") endif() - if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") + 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() @@ -1534,7 +1534,7 @@ endif() # TODO: - Fast huge math -if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") +if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86_64|AMD64") list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_X86_64_BUILD") endif() From 20bf2b3bc79c4e46cdf54ff7b2a4151863b5fb8b Mon Sep 17 00:00:00 2001 From: oltolm Date: Sat, 22 Apr 2023 13:04:39 +0200 Subject: [PATCH 3/9] cmake: use target_compile_definitions instead of add_definitions --- CMakeLists.txt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6c6c747a00..a26633681a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1833,10 +1833,6 @@ if(WOLFSSL_USER_SETTINGS) endif() endif() -# TODO: Applying definitions to everything like this, rather than -# individual targets, is discouraged in CMake. -add_definitions(${WOLFSSL_DEFINITIONS}) - add_option("WOLFSSL_CONFIG_H" "Enable generation of config.h and define HAVE_CONFIG_H (default: enabled)" "yes" "yes;no") @@ -1932,6 +1928,7 @@ target_compile_definitions(wolfssl PRIVATE "BUILDING_WOLFSSL") if(${BUILD_SHARED_LIBS}) target_compile_definitions(wolfssl PUBLIC "WOLFSSL_DLL") endif() +target_compile_definitions(wolfssl PUBLIC ${WOLFSSL_DEFINITIONS}) #################################################### # Include Directories From d18f3a9e24bcda94a23165d34a249d9c238d588c Mon Sep 17 00:00:00 2001 From: oltolm Date: Sat, 22 Apr 2023 13:06:29 +0200 Subject: [PATCH 4/9] cmake: change default value of WOLFSSL_BUILD_OUT_OF_TREE_DEFAULT to ON --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a26633681a..1759bc996d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1854,7 +1854,7 @@ message("Generating user options header...") if (${CMAKE_DISABLE_SOURCE_CHANGES}) set(WOLFSSL_BUILD_OUT_OF_TREE_DEFAULT "${CMAKE_DISABLE_SOURCE_CHANGES}") else() - set(WOLFSSL_BUILD_OUT_OF_TREE_DEFAULT "no") + set(WOLFSSL_BUILD_OUT_OF_TREE_DEFAULT "yes") endif() add_option("WOLFSSL_BUILD_OUT_OF_TREE" "Don't generate files in the source tree (default: ${WOLFSSL_BUILD_OUT_OF_TREE_DEFAULT})" From 29102a5e7e40d2047b579dfd12e208f687b39142 Mon Sep 17 00:00:00 2001 From: oltolm Date: Sat, 22 Apr 2023 13:07:04 +0200 Subject: [PATCH 5/9] cmake: link crypt32.lib on Windows --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1759bc996d..b4b3c2557e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1951,7 +1951,7 @@ target_link_libraries(wolfssl PUBLIC ${WOLFSSL_LINK_LIBS}) if(WIN32) # For Windows link ws2_32 target_link_libraries(wolfssl PUBLIC - $<$:ws2_32>) + $<$:ws2_32 crypt32>) elseif(APPLE) if(WOLFSSL_SYS_CA_CERTS) target_link_libraries(wolfssl PUBLIC From b2d19873b2e491fa541766311ed07be56df47303 Mon Sep 17 00:00:00 2001 From: oltolm Date: Sat, 22 Apr 2023 13:08:12 +0200 Subject: [PATCH 6/9] cmake: export wolfssl --- .gitignore | 6 ++++-- CMakeLists.txt | 36 ++++++++++++++++++++++++++++++++++-- Config.cmake.in | 3 +++ 3 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 Config.cmake.in diff --git a/.gitignore b/.gitignore index ca5861e8a6..1c040f21f3 100644 --- a/.gitignore +++ b/.gitignore @@ -10,8 +10,9 @@ ctaocrypt/src/src/ *.cache .dirstamp *.user -configure -config.* +configure +config.log +config.status !cmake/config.in *Debug/ *Release/ @@ -416,3 +417,4 @@ user_settings_asm.h # auto-created CMake backups **/CMakeLists.txt.old + diff --git a/CMakeLists.txt b/CMakeLists.txt index b4b3c2557e..40c8ad96f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1916,7 +1916,13 @@ set(LIB_SOURCES "") # Corresponds to the instances of "src_libwolfssl_la_SOURCES += ..." # in the *.am files. generate_lib_src_list("${LIB_SOURCES}") -add_library(wolfssl ${LIB_SOURCES}) +if(BUILD_SHARED_LIBS) + add_library(wolfssl SHARED ${LIB_SOURCES}) +else() + add_library(wolfssl STATIC ${LIB_SOURCES}) +endif() + +add_library(wolfssl::wolfssl ALIAS wolfssl) set_target_properties(wolfssl PROPERTIES @@ -2272,7 +2278,8 @@ install(FILES # Install the export set install(EXPORT wolfssl-targets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl - FILE wolfssl-config.cmake) + FILE wolfssl-targets.cmake + NAMESPACE wolfssl::) # TODO: Distro build + rules for what to include in the distro. # See various include.am files. @@ -2286,3 +2293,28 @@ set(VERSION ${PROJECT_VERSION}) configure_file(support/wolfssl.pc.in ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + +include(CMakePackageConfigHelpers) +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl" + NO_SET_AND_CHECK_MACRO + NO_CHECK_REQUIRED_COMPONENTS_MACRO +) + +export(EXPORT wolfssl-targets + FILE "${CMAKE_CURRENT_BINARY_DIR}/wolfssl-targets.cmake" + NAMESPACE 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 +) diff --git a/Config.cmake.in b/Config.cmake.in new file mode 100644 index 0000000000..19d60ed7ea --- /dev/null +++ b/Config.cmake.in @@ -0,0 +1,3 @@ +@PACKAGE_INIT@ + +include ( "${CMAKE_CURRENT_LIST_DIR}/wolfssl-targets.cmake" ) From ce37f93cde4293b0bb73ce1a2235ab4bc141fd06 Mon Sep 17 00:00:00 2001 From: oltolm Date: Thu, 11 May 2023 19:39:43 +0200 Subject: [PATCH 7/9] move Config.cmake.in to cmake directory --- CMakeLists.txt | 2 +- Config.cmake.in => cmake/Config.cmake.in | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename Config.cmake.in => cmake/Config.cmake.in (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 40c8ad96f2..7cf26483f8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2295,7 +2295,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/support/wolfssl.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) include(CMakePackageConfigHelpers) -configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/wolfssl-config.cmake" INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/wolfssl" NO_SET_AND_CHECK_MACRO diff --git a/Config.cmake.in b/cmake/Config.cmake.in similarity index 100% rename from Config.cmake.in rename to cmake/Config.cmake.in From b2d875caddc86ca52b41755c27ab0578b7a6d1cd Mon Sep 17 00:00:00 2001 From: oltolm Date: Thu, 11 May 2023 20:51:06 +0200 Subject: [PATCH 8/9] revert changes to .gitignore --- .gitignore | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 1c040f21f3..5cb3884807 100644 --- a/.gitignore +++ b/.gitignore @@ -11,8 +11,7 @@ ctaocrypt/src/src/ .dirstamp *.user configure -config.log -config.status +config.* !cmake/config.in *Debug/ *Release/ @@ -417,4 +416,3 @@ user_settings_asm.h # auto-created CMake backups **/CMakeLists.txt.old - From a808bcf752bf6b041f7ae57c5342f8dd80ad418e Mon Sep 17 00:00:00 2001 From: oltolm Date: Fri, 12 May 2023 19:19:39 +0200 Subject: [PATCH 9/9] add Config.cmake.in to include.am --- cmake/include.am | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/include.am b/cmake/include.am index 9d9bc038c8..52ecdd0e23 100644 --- a/cmake/include.am +++ b/cmake/include.am @@ -1,3 +1,4 @@ +EXTRA_DIST += cmake/Config.cmake.in EXTRA_DIST += cmake/config.in EXTRA_DIST += cmake/functions.cmake EXTRA_DIST += cmake/modules/FindOQS.cmake