HDFS-14033. [libhdfs++] Disable libhdfs++ build on systems that do not support thread_local. Contributed by Anatoli Shein.

This commit is contained in:
Sunil G 2018-10-31 12:32:49 +05:30
parent fac9f91b29
commit 9c438abe52
2 changed files with 23 additions and 3 deletions

View File

@ -138,7 +138,27 @@ endif()
add_subdirectory(main/native/libhdfs) add_subdirectory(main/native/libhdfs)
add_subdirectory(main/native/libhdfs-tests) add_subdirectory(main/native/libhdfs-tests)
add_subdirectory(main/native/libhdfspp)
# Temporary fix to disable Libhdfs++ build on older systems that do not support thread_local
include(CheckCXXSourceCompiles)
unset (THREAD_LOCAL_SUPPORTED CACHE)
set (CMAKE_REQUIRED_DEFINITIONS "-std=c++11")
set (CMAKE_REQUIRED_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
check_cxx_source_compiles(
"#include <thread>
int main(void) {
thread_local int s;
return 0;
}"
THREAD_LOCAL_SUPPORTED)
if (THREAD_LOCAL_SUPPORTED)
add_subdirectory(main/native/libhdfspp)
else()
message(WARNING
"WARNING: Libhdfs++ library was not built because the required feature thread_local storage \
is not supported by your compiler. Known compilers that support this feature: GCC 4.8+, Visual Studio 2015+, \
Clang (community version 3.3+), Clang (version for Xcode 8+ and iOS 9+).")
endif (THREAD_LOCAL_SUPPORTED)
if(REQUIRE_LIBWEBHDFS) if(REQUIRE_LIBWEBHDFS)
add_subdirectory(contrib/libwebhdfs) add_subdirectory(contrib/libwebhdfs)

View File

@ -63,8 +63,8 @@ check_cxx_source_compiles(
if (NOT THREAD_LOCAL_SUPPORTED) if (NOT THREAD_LOCAL_SUPPORTED)
message(FATAL_ERROR message(FATAL_ERROR
"FATAL ERROR: The required feature thread_local storage is not supported by your compiler. \ "FATAL ERROR: The required feature thread_local storage is not supported by your compiler. \
Known compilers that support this feature: GCC, Visual Studio, Clang (community version), \ Known compilers that support this feature: GCC 4.8+, Visual Studio 2015+, Clang (community \
Clang (version for iOS 9 and later).") version 3.3+), Clang (version for Xcode 8+ and iOS 9+).")
endif (NOT THREAD_LOCAL_SUPPORTED) endif (NOT THREAD_LOCAL_SUPPORTED)
# Check if PROTOC library was compiled with the compatible compiler by trying # Check if PROTOC library was compiled with the compatible compiler by trying