diff --git a/.gitignore b/.gitignore index c215b60d14..a4f21fb2e0 100644 --- a/.gitignore +++ b/.gitignore @@ -53,7 +53,7 @@ cluster/** cluster-init*/** p/ -core +/core !3rdParty/iresearch/core !core.h TAGS diff --git a/3rdParty/V8/v7.1.302.28/src/base/functional.h b/3rdParty/V8/v7.1.302.28/src/base/functional.h index 1b632c6cc2..7bf6b4bac0 100644 --- a/3rdParty/V8/v7.1.302.28/src/base/functional.h +++ b/3rdParty/V8/v7.1.302.28/src/base/functional.h @@ -137,18 +137,17 @@ V8_INLINE size_t hash_value(std::pair const& v) { return hash_combine(v.first, v.second); } - template -struct hash : public std::unary_function { +struct hash { V8_INLINE size_t operator()(T const& v) const { return hash_value(v); } }; -#define V8_BASE_HASH_SPECIALIZE(type) \ - template <> \ - struct hash : public std::unary_function { \ - V8_INLINE size_t operator()(type const v) const { \ - return ::v8::base::hash_value(v); \ - } \ +#define V8_BASE_HASH_SPECIALIZE(type) \ + template <> \ + struct hash { \ + V8_INLINE size_t operator()(type const v) const { \ + return ::v8::base::hash_value(v); \ + } \ }; V8_BASE_HASH_SPECIALIZE(bool) V8_BASE_HASH_SPECIALIZE(signed char) @@ -166,7 +165,7 @@ V8_BASE_HASH_SPECIALIZE(double) #undef V8_BASE_HASH_SPECIALIZE template -struct hash : public std::unary_function { +struct hash { V8_INLINE size_t operator()(T* const v) const { return ::v8::base::hash_value(v); } @@ -181,10 +180,10 @@ struct hash : public std::unary_function { // hash data structure based on the bitwise representation of types. template -struct bit_equal_to : public std::binary_function {}; +struct bit_equal_to {}; template -struct bit_hash : public std::unary_function {}; +struct bit_hash {}; #define V8_BASE_BIT_SPECIALIZE_TRIVIAL(type) \ template <> \ @@ -203,19 +202,19 @@ V8_BASE_BIT_SPECIALIZE_TRIVIAL(long long) // NOLINT(runtime/int) V8_BASE_BIT_SPECIALIZE_TRIVIAL(unsigned long long) // NOLINT(runtime/int) #undef V8_BASE_BIT_SPECIALIZE_TRIVIAL -#define V8_BASE_BIT_SPECIALIZE_BIT_CAST(type, btype) \ - template <> \ - struct bit_equal_to : public std::binary_function { \ - V8_INLINE bool operator()(type lhs, type rhs) const { \ - return bit_cast(lhs) == bit_cast(rhs); \ - } \ - }; \ - template <> \ - struct bit_hash : public std::unary_function { \ - V8_INLINE size_t operator()(type v) const { \ - hash h; \ - return h(bit_cast(v)); \ - } \ +#define V8_BASE_BIT_SPECIALIZE_BIT_CAST(type, btype) \ + template <> \ + struct bit_equal_to { \ + V8_INLINE bool operator()(type lhs, type rhs) const { \ + return bit_cast(lhs) == bit_cast(rhs); \ + } \ + }; \ + template <> \ + struct bit_hash { \ + V8_INLINE size_t operator()(type v) const { \ + hash h; \ + return h(bit_cast(v)); \ + } \ }; V8_BASE_BIT_SPECIALIZE_BIT_CAST(float, uint32_t) V8_BASE_BIT_SPECIALIZE_BIT_CAST(double, uint64_t) diff --git a/3rdParty/V8/v7.1.302.28/src/handles.h b/3rdParty/V8/v7.1.302.28/src/handles.h index f37162f70e..25ef53b2a2 100644 --- a/3rdParty/V8/v7.1.302.28/src/handles.h +++ b/3rdParty/V8/v7.1.302.28/src/handles.h @@ -133,14 +133,14 @@ class Handle final : public HandleBase { bool equals(Handle other) const { return address() == other.address(); } // Provide function object for location equality comparison. - struct equal_to : public std::binary_function, Handle, bool> { + struct equal_to { V8_INLINE bool operator()(Handle lhs, Handle rhs) const { return lhs.equals(rhs); } }; // Provide function object for location hashing. - struct hash : public std::unary_function, size_t> { + struct hash { V8_INLINE size_t operator()(Handle const& handle) const { return base::hash
()(handle.address()); } diff --git a/3rdParty/boost/1.69.0/boost/thread/detail/move.hpp b/3rdParty/boost/1.69.0/boost/thread/detail/move.hpp index 447247d590..64d334678b 100644 --- a/3rdParty/boost/1.69.0/boost/thread/detail/move.hpp +++ b/3rdParty/boost/1.69.0/boost/thread/detail/move.hpp @@ -351,7 +351,7 @@ namespace boost #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template - typename decay::type + ::std::decay_t decay_copy(T&& t) { return boost::forward(t); diff --git a/3rdParty/boost/CMakeLists.txt b/3rdParty/boost/CMakeLists.txt index a45b78b710..2f3ec0e667 100644 --- a/3rdParty/boost/CMakeLists.txt +++ b/3rdParty/boost/CMakeLists.txt @@ -146,5 +146,6 @@ add_library(boost_thread STATIC ${BOOST_THREAD_PLATFORM_SRC} ) target_link_libraries(boost_thread PUBLIC boost_boost) #this will add required includes +target_link_libraries(boost_locale PUBLIC boost_thread) target_compile_definitions(boost_thread PRIVATE "BOOST_SYSTEM_STATIC_LINK=1") target_compile_definitions(boost_thread PUBLIC "BOOST_ALL_NO_LIB=1") diff --git a/3rdParty/date/CMakeLists.txt b/3rdParty/date/CMakeLists.txt index f902b0ff8f..dc745ce3cd 100644 --- a/3rdParty/date/CMakeLists.txt +++ b/3rdParty/date/CMakeLists.txt @@ -138,7 +138,7 @@ function( add_fail_tests TEST_GLOB TEST_PREFIX ) #target_compile_definitions( ${BIN_NAME} PRIVATE ${TST_NAME} ) set( TEST_BIN_NAME ${CMAKE_BINARY_DIR}/${BIN_NAME} ) add_custom_target( ${BIN_NAME} - COMMAND ${PROJECT_SOURCE_DIR}/compile_fail.sh ${TEST_BIN_NAME} ${CMAKE_CXX_COMPILER} -std=c++14 -L${CMAKE_BINARY_DIR}/ -ltz -I${PROJECT_SOURCE_DIR}/${HEADER_FOLDER}/date -o ${BIN_NAME} ${TEST_FILE} + COMMAND ${PROJECT_SOURCE_DIR}/compile_fail.sh ${TEST_BIN_NAME} ${CMAKE_CXX_COMPILER} -std=c++17 -L${CMAKE_BINARY_DIR}/ -ltz -I${PROJECT_SOURCE_DIR}/${HEADER_FOLDER}/date -o ${BIN_NAME} ${TEST_FILE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT ${TST_NAME} ) diff --git a/3rdParty/linenoise-ng/CMakeLists.txt b/3rdParty/linenoise-ng/CMakeLists.txt index 8bc9697062..1f0034c960 100755 --- a/3rdParty/linenoise-ng/CMakeLists.txt +++ b/3rdParty/linenoise-ng/CMakeLists.txt @@ -22,7 +22,7 @@ set(LINENOISE_FRIENDLY_STRING "Linenoise NG - Linenoise Next Generation") # compiler options if(CMAKE_COMPILER_IS_GNUCXX) message(STATUS "Compiler type GNU: ${CMAKE_CXX_COMPILER}") - set(BASE_COMPILER_OPTIONS "-std=c++14 -Wall -Wextra") + set(BASE_COMPILER_OPTIONS "-std=c++17 -Wall -Wextra") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${BASE_COMPILER_OPTIONS}") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${BASE_COMPILER_OPTIONS} -O0 -g") set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${BASE_COMPILER_OPTIONS} -Os") @@ -32,7 +32,7 @@ if(CMAKE_COMPILER_IS_GNUCXX) elseif(CMAKE_COMPILER_IS_CLANGCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") # using regular Clang or AppleClang message(STATUS "Compiler type CLANG: ${CMAKE_CXX_COMPILER}") - set(BASE_COMPILER_OPTIONS "-std=c++14 -Wall -Wextra") + set(BASE_COMPILER_OPTIONS "-std=c++17 -Wall -Wextra") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${BASE_COMPILER_OPTIONS}") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${BASE_COMPILER_OPTIONS} -O0 -g") set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${BASE_COMPILER_OPTIONS} -Os") @@ -63,7 +63,7 @@ elseif(MSVC) else() # unknown compiler message(STATUS "Compiler type UNKNOWN: ${CMAKE_CXX_COMPILER}") - set(BASE_COMPILER_OPTIONS "-std=c++14 -Wall -Wextra") + set(BASE_COMPILER_OPTIONS "-std=c++17 -Wall -Wextra") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${BASE_COMPILER_OPTIONS}") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${BASE_COMPILER_OPTIONS} -O0 -g") set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${BASE_COMPILER_OPTIONS} -Os") diff --git a/3rdParty/rocksdb/6.2/CMakeLists.txt b/3rdParty/rocksdb/6.2/CMakeLists.txt index 6b920cb0ee..9052b03fce 100644 --- a/3rdParty/rocksdb/6.2/CMakeLists.txt +++ b/3rdParty/rocksdb/6.2/CMakeLists.txt @@ -179,7 +179,7 @@ else() if(MINGW) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-format") endif() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer") include(CheckCXXCompilerFlag) diff --git a/3rdParty/rocksdb/6.2/build_tools/build_detect_platform b/3rdParty/rocksdb/6.2/build_tools/build_detect_platform index 7f454bcca0..9a1c2eea67 100755 --- a/3rdParty/rocksdb/6.2/build_tools/build_detect_platform +++ b/3rdParty/rocksdb/6.2/build_tools/build_detect_platform @@ -44,7 +44,7 @@ if test -z "$OUTPUT"; then fi # we depend on C++11 -PLATFORM_CXXFLAGS="-std=c++11" +PLATFORM_CXXFLAGS="-std=c++17" # we currently depend on POSIX platform COMMON_FLAGS="-DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX" diff --git a/3rdParty/rocksdb/6.2/utilities/transactions/transaction_base.h b/3rdParty/rocksdb/6.2/utilities/transactions/transaction_base.h index 04274866aa..8e24ea3f5f 100644 --- a/3rdParty/rocksdb/6.2/utilities/transactions/transaction_base.h +++ b/3rdParty/rocksdb/6.2/utilities/transactions/transaction_base.h @@ -292,6 +292,9 @@ class TransactionBaseImpl : public Transaction { uint64_t num_deletes_ = 0; uint64_t num_merges_ = 0; +#if defined(__APPLE__) && _LIBCPP_STD_VER > 14 +public: +#endif struct SavePoint { std::shared_ptr snapshot_; bool snapshot_needed_; @@ -313,7 +316,9 @@ class TransactionBaseImpl : public Transaction { num_deletes_(num_deletes), num_merges_(num_merges) {} }; - +#if defined(__APPLE__) && _LIBCPP_STD_VER > 14 +protected: +#endif // Records writes pending in this transaction WriteBatchWithIndex write_batch_; diff --git a/CMakeLists.txt b/CMakeLists.txt index 24d8bfccf8..4c44e1bdd7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,8 +25,16 @@ endif () string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPER) -if (NOT CMAKE_OSX_DEPLOYMENT_TARGET) - set(CMAKE_OSX_DEPLOYMENT_TARGET "10.11" CACHE STRING "deployment target for MacOSX; adjust to your system") +if (APPLE) + if (NOT CMAKE_OSX_DEPLOYMENT_TARGET OR "${CMAKE_OSX_DEPLOYMENT_TARGET}" STREQUAL "") + if (NOT DEFINED ENV{MACOSX_DEPLOYMENT_TARGET} OR "ENV{MACOSX_DEPLOYMENT_TARGET}" STREQUAL "") + message(FATAL_ERROR "environment variable MACOSX_DEPLOYMENT_TARGET is missing") + else () + set(CMAKE_OSX_DEPLOYMENT_TARGET "$ENV{MACOSX_DEPLOYMENT_TARGET}" CACHE STRING "deployment target for MacOSX; adjust to your system") + endif () + else () + set($ENV{MACOSX_DEPLOYMENT_TARGET} ${CMAKE_OSX_DEPLOYMENT_TARGET}) + endif () endif () # where to find CMAKE modules @@ -404,7 +412,13 @@ option(HOMEBREW if (WIN32) set(WINDOWS TRUE) set(MSBUILD TRUE) - add_definitions(-D_USE_MATH_DEFINES -DNOMINMAX -D_WIN32_WINNT=0x600 -DINCL_EXTRA_HTON_FUNCTIONS -DPSAPI_VERSION=1) + + add_definitions(-D_USE_MATH_DEFINES) + add_definitions(-DNOMINMAX) + add_definitions(-D_WIN32_WINNT=0x600) + add_definitions(-DINCL_EXTRA_HTON_FUNCTIONS) + add_definitions(-DPSAPI_VERSION=1) + elseif (UNIX AND NOT APPLE) if(CMAKE_SYSTEM_NAME MATCHES ".*Linux") set(LINUX TRUE) @@ -552,11 +566,7 @@ if (CMAKE_COMPILER_IS_GNUCC) endif () if (CMAKE_COMPILER_IS_GNUCC OR APPLE) - if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6) - set(BASE_CXX_FLAGS "${BASE_CXX_FLAGS} -std=c++11") - else() - set(BASE_CXX_FLAGS "${BASE_CXX_FLAGS} -std=c++14") - endif() + set(BASE_CXX_FLAGS "${BASE_CXX_FLAGS} -std=c++17") endif () if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") @@ -587,9 +597,9 @@ if (CMAKE_COMPILER_IS_CLANG) endif () endif () -# need c++14 +# need c++17 # XXX this should really be set on a per target level using cmake compile_features capabilties -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) # need threads find_package(Threads REQUIRED) @@ -599,6 +609,8 @@ if (MSVC) add_definitions("-D_CRT_SECURE_NO_WARNINGS=1") add_definitions("-DFD_SETSIZE=8192") add_definitions("-DU_STATIC_IMPLEMENTATION=1") + add_definitions("-D_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS=1") # try to remove this when + # boost is upgraded to 1.70 or later # https://blogs.msdn.microsoft.com/vcblog/2016/04/14/stl-fixes-in-vs-2015-update-2/ # https://connect.microsoft.com/VisualStudio/feedback/details/1892487 diff --git a/VERSIONS b/VERSIONS index 32c0597d1d..840cc33518 100644 --- a/VERSIONS +++ b/VERSIONS @@ -1,7 +1,9 @@ +CXX_STANDARD "17" STARTER_REV "0.14.12" SYNCER_REV "0.6.5" GCC_LINUX "8.3.0" MSVC_WINDOWS "2017" +MACOS_MIN "10.14" OPENSSL_LINUX "1.1.1" OPENSSL_MACOS "1.1.1" OPENSSL_WINDOWS "1.1.1" diff --git a/arangod/Aql/PlanCache.h b/arangod/Aql/PlanCache.h index 89a19ca1c1..bf22479c16 100644 --- a/arangod/Aql/PlanCache.h +++ b/arangod/Aql/PlanCache.h @@ -25,6 +25,7 @@ #define ARANGOD_AQL_PLAN_CACHE_H 1 #include +#include #include "Basics/Common.h" #include "Basics/ReadWriteLock.h" diff --git a/arangod/CMakeLists.txt b/arangod/CMakeLists.txt index 02cc882280..1f8aabe7dc 100644 --- a/arangod/CMakeLists.txt +++ b/arangod/CMakeLists.txt @@ -905,6 +905,10 @@ target_link_libraries(arangoserver ${MSVC_LIBS} ) +if (MSVC) + target_link_libraries(arangoserver Bcrypt.lib) +endif() + if (USE_ENTERPRISE) add_library(arango_rclone STATIC ${LIB_RCLONE_SOURCES} diff --git a/arangod/Cluster/ClusterMethods.cpp b/arangod/Cluster/ClusterMethods.cpp index 507e1c3336..783fd0e95b 100644 --- a/arangod/Cluster/ClusterMethods.cpp +++ b/arangod/Cluster/ClusterMethods.cpp @@ -79,6 +79,7 @@ #include #include #include +#include using namespace arangodb; using namespace arangodb::basics; @@ -636,7 +637,7 @@ int distributeBabyOnShards(CreateOperationCtx& opCtx, /// @brief compute a shard distribution for a new collection, the list /// dbServers must be a list of DBserver ids to distribute across. /// If this list is empty, the complete current list of DBservers is -/// fetched from ClusterInfo and with random_shuffle to mix it up. +/// fetched from ClusterInfo and with shuffle to mix it up. //////////////////////////////////////////////////////////////////////////////// static std::shared_ptr>> DistributeShardsEvenly( @@ -651,7 +652,10 @@ static std::shared_ptr> if (dbServers.empty()) { return shards; } - random_shuffle(dbServers.begin(), dbServers.end()); + + std::random_device rd; + std::mt19937 g(rd()); + std::shuffle(dbServers.begin(), dbServers.end(), g); } // mop: distribute satellite collections on all servers @@ -2440,9 +2444,11 @@ std::vector> ClusterMethods::persistCollectio }), dbServers.end()); } - std::random_shuffle(dbServers.begin(), dbServers.end()); + std::random_device rd; + std::mt19937 g(rd()); + std::shuffle(dbServers.begin(), dbServers.end(), g); shards = DistributeShardsEvenly(ci, numberOfShards, replicationFactor, - dbServers, !col->system()); + dbServers, !col->system()); } diff --git a/arangod/Pregel/IncomingCache.cpp b/arangod/Pregel/IncomingCache.cpp index 7350f98309..198d70db82 100644 --- a/arangod/Pregel/IncomingCache.cpp +++ b/arangod/Pregel/IncomingCache.cpp @@ -32,6 +32,9 @@ #include #include +#include +#include + using namespace arangodb; using namespace arangodb::pregel; @@ -125,7 +128,10 @@ void ArrayInCache::mergeCache(WorkerConfig const& config, InCache const* o // ranomize access to buckets, don't wait for the lock std::set const& shardIDs = config.localPregelShardIDs(); std::vector randomized(shardIDs.begin(), shardIDs.end()); - std::random_shuffle(randomized.begin(), randomized.end()); + + std::random_device rd; + std::mt19937 g(rd()); + std::shuffle(randomized.begin(), randomized.end(), g); size_t i = 0; do { @@ -240,7 +246,9 @@ void CombiningInCache::mergeCache(WorkerConfig const& config, InCache cons // ranomize access to buckets, don't wait for the lock std::set const& shardIDs = config.localPregelShardIDs(); std::vector randomized(shardIDs.begin(), shardIDs.end()); - std::random_shuffle(randomized.begin(), randomized.end()); + std::random_device rd; + std::mt19937 g(rd()); + std::shuffle(randomized.begin(), randomized.end(), g); size_t i = 0; do { diff --git a/arangod/Transaction/Manager.cpp b/arangod/Transaction/Manager.cpp index b0d34a0ef4..51cfe93e90 100644 --- a/arangod/Transaction/Manager.cpp +++ b/arangod/Transaction/Manager.cpp @@ -72,8 +72,6 @@ std::string currentUser() { namespace arangodb { namespace transaction { -const size_t Manager::maxTransactionSize; // 128 MiB - namespace { struct MGMethods final : arangodb::transaction::Methods { MGMethods(std::shared_ptr const& ctx, @@ -484,7 +482,7 @@ std::shared_ptr Manager::leaseManagedTrx(TRI_voc_tid_t tid if (_disallowInserts.load(std::memory_order_acquire)) { return nullptr; } - + size_t const bucket = getBucket(tid); int i = 0; TransactionState* state = nullptr; @@ -602,7 +600,7 @@ transaction::Status Manager::getManagedTrxStatus(TRI_voc_tid_t tid) const { return transaction::Status::ABORTED; } } - + Result Manager::statusChangeWithTimeout(TRI_voc_tid_t tid, transaction::Status status) { double startTime = 0.0; @@ -775,7 +773,7 @@ bool Manager::garbageCollect(bool abortAll) { auto it = _transactions[bucket]._managed.begin(); while (it != _transactions[bucket]._managed.end()) { ManagedTrx& mtrx = it->second; - + if (mtrx.type == MetaType::Managed) { TRI_ASSERT(mtrx.state != nullptr); if (abortAll || mtrx.expired()) { @@ -813,7 +811,7 @@ bool Manager::garbageCollect(bool abortAll) { // we can also get the TRI_ERROR_LOCKED error in case we cannot // immediately acquire the lock on the transaction. this _can_ happen // infrequently, but is not an error - if (res.fail() && + if (res.fail() && !res.is(TRI_ERROR_TRANSACTION_ABORTED) && !res.is(TRI_ERROR_LOCKED)) { LOG_TOPIC("0a07f", INFO, Logger::TRANSACTIONS) << "error while aborting " diff --git a/lib/Basics/Mutex.h b/lib/Basics/Mutex.h index f5896547d5..1e17bc63e2 100644 --- a/lib/Basics/Mutex.h +++ b/lib/Basics/Mutex.h @@ -25,6 +25,10 @@ #ifndef ARANGODB_BASICS_MUTEX_H #define ARANGODB_BASICS_MUTEX_H 1 +#if __has_include() +#include +#endif + #include "Basics/operating-system.h" #ifdef ARANGODB_ENABLE_MAINTAINER_MODE diff --git a/lib/Futures/backports.h b/lib/Futures/backports.h index b27fb3f399..c99b567640 100644 --- a/lib/Futures/backports.h +++ b/lib/Futures/backports.h @@ -23,6 +23,11 @@ #ifndef ARANGOD_FUTURES_BACKPORTS_H #define ARANGOD_FUTURES_BACKPORTS_H 1 +#if __cplusplus >= 201703L +#include +#include +#endif + #include namespace arangodb { @@ -65,13 +70,15 @@ constexpr auto invoke(M(C::*d), Args&&... args) } #else -#include -#include +using std::invoke; using in_place_t = std::in_place_t; -using in_place = std::in_place; -using is_invocable = std::is_invocable; -using is_invocable_r = std::is_invocable_r; -using invoke = std::invoke; +inline constexpr in_place_t in_place{}; + +template +using is_invocable_r = std::is_invocable_r; + +template +using is_invocable = std::is_invocable; #endif } // namespace futures diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index caa60b1fc5..b5a49949ce 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -283,6 +283,11 @@ target_include_directories(arangodbtests SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/3rdParty/rocksdb/${ARANGO_ROCKSDB_VERSION}/third-party/gtest-1.8.1/fused-src ) +# older macos has no uncaught exceptions +if (DARWIN) + target_compile_definitions(arangodbtests PUBLIC CATCH_CONFIG_NO_CPP17_UNCAUGHT_EXCEPTIONS) +endif() + find_package(OpenSSL REQUIRED) list(APPEND IRESEARCH_LIB_RESOURCES "${LIB_EAY_DEBUG_DLL}"