summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2021-12-21 17:27:59 +1100
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-12-21 07:28:22 +0000
commita8949a2fc44cf35e6a4a964c721e64a22a934fc1 (patch)
treec27ba95766431875ed802b0c8aa9d739b1e28dcd
parent1ba2d8f83403a5c2a5262d3e7e2f4c114cb9f793 (diff)
downloadmongo-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.cmake44
-rw-r--r--src/third_party/wiredtiger/cmake/helpers.cmake5
-rw-r--r--src/third_party/wiredtiger/cmake/toolchains/clang.cmake16
-rw-r--r--src/third_party/wiredtiger/cmake/toolchains/gcc.cmake16
-rw-r--r--src/third_party/wiredtiger/import.data2
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"
}