From 856dd1208ee47fec4330a30aec2f002b3765f633 Mon Sep 17 00:00:00 2001 From: Sunil G Date: Wed, 31 Oct 2018 12:32:49 +0530 Subject: [PATCH] HDFS-14033. [libhdfs++] Disable libhdfs++ build on systems that do not support thread_local. Contributed by Anatoli Shein. (cherry picked from commit 9c438abe52d4ee0b25345a4b7ec1697dd66f85e9) --- .../src/CMakeLists.txt | 22 ++++++++++++++++++- .../src/main/native/libhdfspp/CMakeLists.txt | 4 ++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt index 1813ec134f5..026be9f7b0b 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt +++ b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt @@ -138,7 +138,27 @@ endif() add_subdirectory(main/native/libhdfs) 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 + 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) add_subdirectory(contrib/libwebhdfs) diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMakeLists.txt index 63fa80d8653..411320ad771 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMakeLists.txt +++ b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/CMakeLists.txt @@ -63,8 +63,8 @@ check_cxx_source_compiles( if (NOT THREAD_LOCAL_SUPPORTED) message(FATAL_ERROR "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), \ - Clang (version for iOS 9 and later).") + 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 (NOT THREAD_LOCAL_SUPPORTED) # Check if PROTOC library was compiled with the compatible compiler by trying