mirror of https://github.com/facebook/rocksdb.git
Add check to cmake to see if we need to link against -latomic (#8183)
Summary: For some compilers/environments (e.g. Clang, riscv64), we need to link against -latomic. Check if this is a requirement and add the library to the third-party libs if it is. Pull Request resolved: https://github.com/facebook/rocksdb/pull/8183 Reviewed By: pdillinger Differential Revision: D27773564 Pulled By: mrambacher fbshipit-source-id: 68e15d823144f83fb02221c7bf5b1e43323419bf
This commit is contained in:
parent
314352761f
commit
47b424f4bd
|
@ -296,6 +296,7 @@ else()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(CheckCXXSourceCompiles)
|
include(CheckCXXSourceCompiles)
|
||||||
|
set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
|
||||||
if(NOT MSVC)
|
if(NOT MSVC)
|
||||||
set(CMAKE_REQUIRED_FLAGS "-msse4.2 -mpclmul")
|
set(CMAKE_REQUIRED_FLAGS "-msse4.2 -mpclmul")
|
||||||
endif()
|
endif()
|
||||||
|
@ -312,7 +313,6 @@ int main() {
|
||||||
auto d = _mm_cvtsi128_si64(c);
|
auto d = _mm_cvtsi128_si64(c);
|
||||||
}
|
}
|
||||||
" HAVE_SSE42)
|
" HAVE_SSE42)
|
||||||
unset(CMAKE_REQUIRED_FLAGS)
|
|
||||||
if(HAVE_SSE42)
|
if(HAVE_SSE42)
|
||||||
add_definitions(-DHAVE_SSE42)
|
add_definitions(-DHAVE_SSE42)
|
||||||
add_definitions(-DHAVE_PCLMUL)
|
add_definitions(-DHAVE_PCLMUL)
|
||||||
|
@ -320,6 +320,27 @@ elseif(FORCE_SSE42)
|
||||||
message(FATAL_ERROR "FORCE_SSE42=ON but unable to compile with SSE4.2 enabled")
|
message(FATAL_ERROR "FORCE_SSE42=ON but unable to compile with SSE4.2 enabled")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Check if -latomic is required or not
|
||||||
|
if (NOT MSVC)
|
||||||
|
set(CMAKE_REQUIRED_FLAGS "--std=c++11")
|
||||||
|
CHECK_CXX_SOURCE_COMPILES("
|
||||||
|
#include <atomic>
|
||||||
|
std::atomic<uint64_t> x(0);
|
||||||
|
int main() {
|
||||||
|
uint64_t i = x.load(std::memory_order_relaxed);
|
||||||
|
bool b = x.is_lock_free();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
" BUILTIN_ATOMIC)
|
||||||
|
if (NOT BUILTIN_ATOMIC)
|
||||||
|
#TODO: Check if -latomic exists
|
||||||
|
list(APPEND THIRDPARTY_LIBS atomic)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Reset the required flags
|
||||||
|
set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
|
||||||
|
|
||||||
CHECK_CXX_SOURCE_COMPILES("
|
CHECK_CXX_SOURCE_COMPILES("
|
||||||
#if defined(_MSC_VER) && !defined(__thread)
|
#if defined(_MSC_VER) && !defined(__thread)
|
||||||
#define __thread __declspec(thread)
|
#define __thread __declspec(thread)
|
||||||
|
|
Loading…
Reference in New Issue