From 2a174196edd3fd3ecf13635c776bc01879f9ee0a Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Mon, 6 Nov 2023 10:59:21 +0000 Subject: [PATCH 1/4] fixup! cmake: Build `leveldb` static library --- cmake/leveldb.cmake | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/cmake/leveldb.cmake b/cmake/leveldb.cmake index d1c34024151fb..ae13ccbf09753 100644 --- a/cmake/leveldb.cmake +++ b/cmake/leveldb.cmake @@ -1,6 +1,6 @@ -# Copyright (c) 2023 The Bitcoin Core developers +# Copyright (c) 2023-present The Bitcoin Core developers # Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# file COPYING or https://opensource.org/license/mit/. # This file is part of the transition from Autotools to CMake. Once CMake # support has been merged we should switch to using the upstream CMake @@ -41,6 +41,8 @@ add_library(leveldb STATIC EXCLUDE_FROM_ALL ${PROJECT_SOURCE_DIR}/src/leveldb/util/comparator.cc ${PROJECT_SOURCE_DIR}/src/leveldb/util/crc32c.cc ${PROJECT_SOURCE_DIR}/src/leveldb/util/env.cc + $<$>:${PROJECT_SOURCE_DIR}/src/leveldb/util/env_posix.cc> + $<$:${PROJECT_SOURCE_DIR}/src/leveldb/util/env_windows.cc> ${PROJECT_SOURCE_DIR}/src/leveldb/util/filter_policy.cc ${PROJECT_SOURCE_DIR}/src/leveldb/util/hash.cc ${PROJECT_SOURCE_DIR}/src/leveldb/util/histogram.cc @@ -49,14 +51,6 @@ add_library(leveldb STATIC EXCLUDE_FROM_ALL ${PROJECT_SOURCE_DIR}/src/leveldb/util/status.cc ${PROJECT_SOURCE_DIR}/src/leveldb/helpers/memenv/memenv.cc ) -if(WIN32) - target_sources(leveldb PRIVATE ${PROJECT_SOURCE_DIR}/src/leveldb/util/env_windows.cc) - set_property(SOURCE ${PROJECT_SOURCE_DIR}/src/leveldb/util/env_windows.cc - APPEND PROPERTY COMPILE_OPTIONS $<$,$>:/wd4722> - ) -else() - target_sources(leveldb PRIVATE ${PROJECT_SOURCE_DIR}/src/leveldb/util/env_posix.cc) -endif() target_compile_definitions(leveldb PRIVATE @@ -67,20 +61,12 @@ target_compile_definitions(leveldb HAVE_O_CLOEXEC=$ FALLTHROUGH_INTENDED=[[fallthrough]] LEVELDB_IS_BIG_ENDIAN=${WORDS_BIGENDIAN} + $<$>:LEVELDB_PLATFORM_POSIX> + $<$:LEVELDB_PLATFORM_WINDOWS> + $<$:_UNICODE;UNICODE> + $<$:__USE_MINGW_ANSI_STDIO=1> ) -if(WIN32) - target_compile_definitions(leveldb - PRIVATE - LEVELDB_PLATFORM_WINDOWS - _UNICODE - UNICODE - __USE_MINGW_ANSI_STDIO=1 - ) -else() - target_compile_definitions(leveldb PRIVATE LEVELDB_PLATFORM_POSIX) -endif() - target_include_directories(leveldb PRIVATE $ @@ -88,6 +74,20 @@ target_include_directories(leveldb $ ) +if(MSVC) + target_compile_options(leveldb + PRIVATE + /wd4244 + /wd4267 + $<$:/wd4722> + ) + target_compile_definitions(leveldb + PRIVATE + _CRT_NONSTDC_NO_DEPRECATE + _CRT_SECURE_NO_WARNINGS + ) +endif() + #TODO: figure out how to filter out: # -Wconditional-uninitialized -Werror=conditional-uninitialized -Wsuggest-override -Werror=suggest-override From 077a53445cb61e1cea64be977ee7fea343044070 Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Mon, 6 Nov 2023 11:00:14 +0000 Subject: [PATCH 2/4] fixup! cmake: Build `minisketch` static library --- cmake/minisketch.cmake | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/cmake/minisketch.cmake b/cmake/minisketch.cmake index 9a61a7c9d9d6e..43f9f9217740e 100644 --- a/cmake/minisketch.cmake +++ b/cmake/minisketch.cmake @@ -1,6 +1,6 @@ -# Copyright (c) 2023 The Bitcoin Core developers +# Copyright (c) 2023-present The Bitcoin Core developers # Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# file COPYING or https://opensource.org/license/mit/. # Check for clmul instructions support. if(MSVC) @@ -24,12 +24,21 @@ check_cxx_source_compiles_with_flags("${CLMUL_CXXFLAGS}" " " HAVE_CLMUL ) -add_library(minisketch_defs INTERFACE) -target_compile_definitions(minisketch_defs INTERFACE +add_library(minisketch_common INTERFACE) +target_compile_definitions(minisketch_common INTERFACE DISABLE_DEFAULT_FIELDS ENABLE_FIELD_32 $<$,$>:HAVE_CLZ> ) +if(MSVC) + target_compile_options(minisketch_common INTERFACE + /wd4060 + /wd4065 + /wd4146 + /wd4244 + /wd4267 + ) +endif() if(HAVE_CLMUL) add_library(minisketch_clmul OBJECT EXCLUDE_FROM_ALL @@ -47,7 +56,7 @@ if(HAVE_CLMUL) target_link_libraries(minisketch_clmul PRIVATE core - minisketch_defs + minisketch_common ) endif() @@ -71,6 +80,6 @@ target_include_directories(minisketch target_link_libraries(minisketch PRIVATE core - minisketch_defs + minisketch_common $ ) From e26415b2a965d9ff379afb69290d17dab79c7b60 Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Mon, 6 Nov 2023 11:00:52 +0000 Subject: [PATCH 3/4] fixup! cmake: Build `secp256k1` static library --- cmake/secp256k1.cmake | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/cmake/secp256k1.cmake b/cmake/secp256k1.cmake index d6c85a5400f24..e8ee7c4a5b60e 100644 --- a/cmake/secp256k1.cmake +++ b/cmake/secp256k1.cmake @@ -1,6 +1,6 @@ -# Copyright (c) 2023 The Bitcoin Core developers +# Copyright (c) 2023-present The Bitcoin Core developers # Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# file COPYING or https://opensource.org/license/mit/. # This file is part of the transition from Autotools to CMake. Once CMake # support has been merged we should switch to using the upstream CMake @@ -48,9 +48,13 @@ target_include_directories(secp256k1 $ ) -target_compile_options(secp256k1 - PRIVATE - $<$:/wd4146 /wd4334> -) +if(MSVC) + target_compile_options(secp256k1 + PRIVATE + /wd4146 + /wd4244 + /wd4267 + ) +endif() target_link_libraries(secp256k1 PRIVATE core) From 816fd3bc1785b561c939ed1fd98a8e43afb14ad2 Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Mon, 6 Nov 2023 11:01:30 +0000 Subject: [PATCH 4/4] fixup! cmake: Add platform-specific definitions and properties --- CMakeLists.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 375a5eea0b23d..81a031d1acbf6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -131,6 +131,17 @@ if(WIN32) # Improve parallelism in MSBuild. # See: https://devblogs.microsoft.com/cppblog/improved-parallelism-in-msbuild/. list(APPEND CMAKE_VS_GLOBALS "UseMultiToolTask=true") + + try_append_cxx_flags("/W3" TARGET core) + try_append_cxx_flags("/wd4018" TARGET core) + try_append_cxx_flags("/wd4244" TARGET core) + try_append_cxx_flags("/wd4267" TARGET core) + try_append_cxx_flags("/wd4715" TARGET core) + try_append_cxx_flags("/wd4805" TARGET core) + target_compile_definitions(core INTERFACE + _CRT_SECURE_NO_WARNINGS + _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING + ) endif() if(MINGW)