diff options
author | Luke Chen <luke.chen@mongodb.com> | 2021-12-21 17:27:59 +1100 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-12-21 07:28:22 +0000 |
commit | a8949a2fc44cf35e6a4a964c721e64a22a934fc1 (patch) | |
tree | c27ba95766431875ed802b0c8aa9d739b1e28dcd | |
parent | 1ba2d8f83403a5c2a5262d3e7e2f4c114cb9f793 (diff) | |
download | mongo-a8949a2fc44cf35e6a4a964c721e64a22a934fc1.tar.gz |
Import wiredtiger: 815660372b3f4dbe95a8f2a5e87ef90b6d63711e from branch mongodb-5.2
ref: 42cd7da2d6..815660372b
for: 5.2.0-rc2
WT-8516 Patch CMake to support Evergreen testing
-rw-r--r-- | src/third_party/wiredtiger/cmake/configs/modes.cmake | 44 | ||||
-rw-r--r-- | src/third_party/wiredtiger/cmake/helpers.cmake | 5 | ||||
-rw-r--r-- | src/third_party/wiredtiger/cmake/toolchains/clang.cmake | 16 | ||||
-rw-r--r-- | src/third_party/wiredtiger/cmake/toolchains/gcc.cmake | 16 | ||||
-rw-r--r-- | src/third_party/wiredtiger/import.data | 2 |
5 files changed, 59 insertions, 24 deletions
diff --git a/src/third_party/wiredtiger/cmake/configs/modes.cmake b/src/third_party/wiredtiger/cmake/configs/modes.cmake index 9590efcca1c..c4a1ba7c0f7 100644 --- a/src/third_party/wiredtiger/cmake/configs/modes.cmake +++ b/src/third_party/wiredtiger/cmake/configs/modes.cmake @@ -38,7 +38,7 @@ function(define_build_mode mode) "DEFINE_BUILD" "" "DEPENDS" - "C_COMPILER_FLAGS;CXX_COMPILER_FLAGS;LINK_FLAGS" + "C_COMPILER_FLAGS;CXX_COMPILER_FLAGS;LINK_FLAGS;LIBS" ) if (NOT "${DEFINE_BUILD_UNPARSED_ARGUMENTS}" STREQUAL "") message(FATAL_ERROR "Unknown arguments to define_build_mode: ${DEFINE_BUILD_UNPARSED_ARGUMENTS}") @@ -51,15 +51,22 @@ function(define_build_mode mode) return() endif() + set(linker_flags "") # Needs to validate linker flags to assert its a valid build mode. if(DEFINE_BUILD_LINK_FLAGS) set(CMAKE_REQUIRED_FLAGS "${DEFINE_BUILD_LINK_FLAGS}") + list(APPEND linker_flags "${DEFINE_BUILD_LINK_FLAGS}") + endif() + if(DEFINE_BUILD_LIBS) + set(CMAKE_REQUIRED_LIBRARIES "${DEFINE_BUILD_LIBS}") + list(APPEND linker_flags "${DEFINE_BUILD_LIBS}") endif() # Check if the compiler flags are available to ensure its a valid build mode. if(DEFINE_BUILD_C_COMPILER_FLAGS) check_c_compiler_flag("${DEFINE_BUILD_C_COMPILER_FLAGS}" HAVE_BUILD_MODE_C_FLAGS) if(NOT HAVE_BUILD_MODE_C_FLAGS) message(VERBOSE "Skipping build mode definition due to unavailable C flags: ${mode}") + unset(HAVE_BUILD_MODE_C_FLAGS CACHE) return() endif() endif() @@ -67,31 +74,33 @@ function(define_build_mode mode) check_cxx_compiler_flag("${DEFINE_BUILD_CXX_COMPILER_FLAGS}" HAVE_BUILD_MODE_CXX_FLAGS) if(NOT HAVE_BUILD_MODE_CXX_FLAGS) message(VERBOSE "Skipping build mode definition due to unavailable CXX flags: ${mode}") + unset(HAVE_BUILD_MODE_CXX_FLAGS CACHE) return() endif() endif() unset(CMAKE_REQUIRED_FLAGS) - unset(HAVE_BUILD_MODE_C_FLAGS) - unset(HAVE_BUILD_MODE_CXX_FLAGS) + unset(CMAKE_REQUIRED_LIBRARIES) + unset(HAVE_BUILD_MODE_C_FLAGS CACHE) + unset(HAVE_BUILD_MODE_CXX_FLAGS CACHE) - string(REPLACE ";" " " DEFINE_BUILD_C_COMPILER_FLAGS "${DEFINE_BUILD_C_COMPILER_FLAGS}") - string(REPLACE ";" " " DEFINE_BUILD_CXX_COMPILER_FLAGS "${DEFINE_BUILD_CXX_COMPILER_FLAGS}") - string(REPLACE ";" " " DEFINE_BUILD_LINK_FLAGS "${DEFINE_BUILD_LINK_FLAGS}") + string(REPLACE ";" " " c_flags "${DEFINE_BUILD_C_COMPILER_FLAGS}") + string(REPLACE ";" " " cxx_flags "${DEFINE_BUILD_CXX_COMPILER_FLAGS}") + string(REPLACE ";" " " linker_flags "${linker_flags}") string(TOUPPER ${mode} build_mode) set(CMAKE_C_FLAGS_${build_mode} - "${DEFINE_BUILD_C_COMPILER_FLAGS}" CACHE STRING + "${c_flags}" CACHE STRING "Flags used by the C compiler for ${mode} build type or configuration." FORCE) set(CMAKE_CXX_FLAGS_${build_mode} - "${DEFINE_BUILD_CXX_COMPILER_FLAGS}" CACHE STRING + "${cxx_flags}" CACHE STRING "Flags used by the C++ compiler for ${mode} build type or configuration." FORCE) set(CMAKE_EXE_LINKER_FLAGS_${build_mode} - "${DEFINE_BUILD_LINK_FLAGS}" CACHE STRING + "${linker_flags}" CACHE STRING "Linker flags to be used to create executables for ${mode} build type." FORCE) set(CMAKE_SHARED_LINKER_FLAGS_${build_mode} - "${DEFINE_BUILD_LINK_FLAGS}" CACHE STRING + "${linker_flags}" CACHE STRING "Linker lags to be used to create shared libraries for ${mode} build type." FORCE) mark_as_advanced( @@ -114,10 +123,14 @@ if(MSVC) set(asan_link_flags "/fsanitize=address") set(asan_compiler_c_flag "/fsanitize=address") set(asan_compiler_cxx_flag "/fsanitize=address") + set(asan_lib_flags "") else() - set(asan_link_flags "-fsanitize=address") set(asan_compiler_c_flag "-fsanitize=address") set(asan_compiler_cxx_flag "-fsanitize=address") + set(asan_link_flags "-fsanitize=address") + if(GNU_C_COMPILER AND GNU_CXX_COMPILER) + set(asan_lib_flags "-static-libasan") + endif() endif() # UBSAN build variant flags. @@ -140,6 +153,7 @@ define_build_mode(ASan C_COMPILER_FLAGS ${asan_compiler_c_flag} CXX_COMPILER_FLAGS ${asan_compiler_cxx_flag} LINK_FLAGS ${asan_link_flags} + LIBS ${asan_lib_flags} ) define_build_mode(UBSan @@ -166,6 +180,14 @@ define_build_mode(TSan DEPENDS "NOT MSVC" ) +define_build_mode(Coverage + C_COMPILER_FLAGS "--coverage" + CXX_COMPILER_FLAGS "--coverage" + LINK_FLAGS "--coverage" + # Disable Coverage on MSVC compilers (unsupported). + DEPENDS "NOT MSVC" +) + if(NOT CMAKE_BUILD_TYPE) string(REPLACE ";" " " build_modes_doc "${BUILD_MODES}") set(CMAKE_BUILD_TYPE "None" CACHE STRING "Choose the type of build, options are: ${build_modes_doc}." FORCE) diff --git a/src/third_party/wiredtiger/cmake/helpers.cmake b/src/third_party/wiredtiger/cmake/helpers.cmake index 8d656a1c920..bf450593338 100644 --- a/src/third_party/wiredtiger/cmake/helpers.cmake +++ b/src/third_party/wiredtiger/cmake/helpers.cmake @@ -642,6 +642,11 @@ function(parse_filelist_source filelist output_var) # manually tell CMake to ASM compile these files otherwise it will ignore them during # compilation process. if("${file_ext}" STREQUAL ".sx") + if("${CMAKE_C_COMPILER_ID}" MATCHES "[Cc]lang") + # If compiling PPC and ZSERIES assembly with Clang, we need to explicitly pass the language + # type onto the compiler, since the 'sx' extension is unknown. + set_source_files_properties(${file_name} PROPERTIES COMPILE_FLAGS "-x assembler-with-cpp") + endif() set_source_files_properties(${file_name} PROPERTIES LANGUAGE ASM) endif() endif() diff --git a/src/third_party/wiredtiger/cmake/toolchains/clang.cmake b/src/third_party/wiredtiger/cmake/toolchains/clang.cmake index 4fb2a1204a5..8b6e1158d4d 100644 --- a/src/third_party/wiredtiger/cmake/toolchains/clang.cmake +++ b/src/third_party/wiredtiger/cmake/toolchains/clang.cmake @@ -8,18 +8,22 @@ cmake_minimum_required(VERSION 3.10.0) -set(COMPILER_VERSION_SUFFIX) -if(CLANG_VERSION) - set(COMPILER_VERSION_SUFFIX "-${CLANG_VERSION}") +set(C_COMPILER_VERSION_SUFFIX) +set(CXX_COMPILER_VERSION_SUFFIX) +if(CLANG_C_VERSION) + set(C_COMPILER_VERSION_SUFFIX "-${CLANG_C_VERSION}") +endif() +if(CLANG_CXX_VERSION) + set(CXX_COMPILER_VERSION_SUFFIX "-${CLANG_CXX_VERSION}") endif() -set(CMAKE_C_COMPILER "clang${COMPILER_VERSION_SUFFIX}") +set(CMAKE_C_COMPILER "clang${C_COMPILER_VERSION_SUFFIX}") set(CMAKE_C_COMPILER_ID "Clang") -set(CMAKE_CXX_COMPILER "clang++${COMPILER_VERSION_SUFFIX}") +set(CMAKE_CXX_COMPILER "clang++${CXX_COMPILER_VERSION_SUFFIX}") set(CMAKE_CXX_COMPILER_ID "Clang++") -set(CMAKE_ASM_COMPILER "clang${COMPILER_VERSION_SUFFIX}") +set(CMAKE_ASM_COMPILER "clang${C_COMPILER_VERSION_SUFFIX}") set(CMAKE_ASM_COMPILER_ID "Clang") if(NOT "${COMPILE_DEFINITIONS}" STREQUAL "") diff --git a/src/third_party/wiredtiger/cmake/toolchains/gcc.cmake b/src/third_party/wiredtiger/cmake/toolchains/gcc.cmake index df497df7ee5..29939945ca3 100644 --- a/src/third_party/wiredtiger/cmake/toolchains/gcc.cmake +++ b/src/third_party/wiredtiger/cmake/toolchains/gcc.cmake @@ -26,11 +26,15 @@ if((NOT "${wt_config_arch}" STREQUAL "") AND (NOT "${wt_config_os}" STREQUAL "") include("${CMAKE_CURRENT_LIST_DIR}/${wt_config_arch}/${wt_config_os}/plat_gcc.cmake") endif() -set(COMPILER_VERSION_SUFFIX) -if(GCC_VERSION) - set(COMPILER_VERSION_SUFFIX "-${GCC_VERSION}") +set(C_COMPILER_VERSION_SUFFIX) +set(CXX_COMPILER_VERSION_SUFFIX) +if(GNU_C_VERSION) + set(C_COMPILER_VERSION_SUFFIX "-${GNU_C_VERSION}") +endif() +if(GNU_CXX_VERSION) + set(CXX_COMPILER_VERSION_SUFFIX "-${GNU_CXX_VERSION}") endif() -set(CMAKE_C_COMPILER "${CROSS_COMPILER_PREFIX}gcc${COMPILER_VERSION_SUFFIX}") -set(CMAKE_CXX_COMPILER "${CROSS_COMPILER_PREFIX}g++${COMPILER_VERSION_SUFFIX}") -set(CMAKE_ASM_COMPILER "${CROSS_COMPILER_PREFIX}gcc${COMPILER_VERSION_SUFFIX}") +set(CMAKE_C_COMPILER "${CROSS_COMPILER_PREFIX}gcc${C_COMPILER_VERSION_SUFFIX}") +set(CMAKE_CXX_COMPILER "${CROSS_COMPILER_PREFIX}g++${CXX_COMPILER_VERSION_SUFFIX}") +set(CMAKE_ASM_COMPILER "${CROSS_COMPILER_PREFIX}gcc${C_COMPILER_VERSION_SUFFIX}") diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data index c808653cd90..07632a533b2 100644 --- a/src/third_party/wiredtiger/import.data +++ b/src/third_party/wiredtiger/import.data @@ -2,5 +2,5 @@ "vendor": "wiredtiger", "github": "wiredtiger/wiredtiger.git", "branch": "mongodb-5.2", - "commit": "42cd7da2d67730e31cdfe31532ca55c02cac3dc3" + "commit": "815660372b3f4dbe95a8f2a5e87ef90b6d63711e" } |