diff options
author | Brad King <brad.king@kitware.com> | 2017-11-28 16:24:26 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-11-28 16:24:26 (GMT) |
commit | 4ff89fb6084d84aabe2e64aeccad03794af65a8a (patch) | |
tree | 0982bae88c784b984465112c287ddc48a72dbe42 | |
parent | 6e613ff399166c59e881331027e65c601feab807 (diff) | |
download | CMake-4ff89fb6084d84aabe2e64aeccad03794af65a8a.zip CMake-4ff89fb6084d84aabe2e64aeccad03794af65a8a.tar.gz CMake-4ff89fb6084d84aabe2e64aeccad03794af65a8a.tar.bz2 |
AIX: Add -pthread flag to enable std::thread with GCC
-rw-r--r-- | CMakeLists.txt | 4 | ||||
-rw-r--r-- | Source/Modules/OverrideC.cmake | 3 | ||||
-rw-r--r-- | Source/Modules/OverrideCXX.cmake | 3 | ||||
-rwxr-xr-x | bootstrap | 13 |
4 files changed, 22 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index fafe536..ebeca22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,11 @@ # file Copyright.txt or https://cmake.org/licensing for details. cmake_minimum_required(VERSION 3.1 FATAL_ERROR) +set(CMAKE_USER_MAKE_RULES_OVERRIDE_C ${CMAKE_CURRENT_SOURCE_DIR}/Source/Modules/OverrideC.cmake) +set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX ${CMAKE_CURRENT_SOURCE_DIR}/Source/Modules/OverrideCXX.cmake) project(CMake) +unset(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX) +unset(CMAKE_USER_MAKE_RULES_OVERRIDE_C) # Make sure we can find internal find_package modules only used for # building CMake and not for shipping externally diff --git a/Source/Modules/OverrideC.cmake b/Source/Modules/OverrideC.cmake new file mode 100644 index 0000000..f8299ad --- /dev/null +++ b/Source/Modules/OverrideC.cmake @@ -0,0 +1,3 @@ +if("${CMAKE_SYSTEM_NAME};${CMAKE_C_COMPILER_ID}" STREQUAL "AIX;GNU") + string(APPEND CMAKE_C_FLAGS_INIT " -pthread") +endif() diff --git a/Source/Modules/OverrideCXX.cmake b/Source/Modules/OverrideCXX.cmake new file mode 100644 index 0000000..13689e2 --- /dev/null +++ b/Source/Modules/OverrideCXX.cmake @@ -0,0 +1,3 @@ +if("${CMAKE_SYSTEM_NAME};${CMAKE_CXX_COMPILER_ID}" STREQUAL "AIX;GNU") + string(APPEND CMAKE_CXX_FLAGS_INIT " -pthread") +endif() @@ -982,6 +982,9 @@ if [ -z "${CC}" -a -z "${CXX}" ]; then fi thread_flags='' +case "${cmake_system}" in + *AIX*) thread_flags='-pthread' ;; +esac #----------------------------------------------------------------------------- # Test C compiler @@ -1003,6 +1006,10 @@ echo ' # error "The CMAKE_C_COMPILER is set to a C++ compiler" #endif +#if defined(_AIX) && defined(__GNUC__) && !defined(_THREAD_SAFE) +#error "On AIX with GNU we need the -pthread flag." +#endif + #if defined(__sun) && __STDC_VERSION__ < 199901L #error "On Solaris we need C99." #endif @@ -1066,6 +1073,10 @@ echo ' #error "Compiler is not in a mode aware of C++11." #endif +#if defined(_AIX) && defined(__GNUC__) && !defined(_THREAD_SAFE) +#error "On AIX with GNU we need the -pthread flag." +#endif + #if defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5140 #error "SunPro <= 5.13 mode not supported due to bug in move semantics." #endif @@ -1326,7 +1337,7 @@ else uv_c_flags="${uv_c_flags} -DCMAKE_BOOTSTRAP" case "${cmake_system}" in *AIX*) - uv_c_flags="${uv_c_flags} -D_ALL_SOURCE -D_XOPEN_SOURCE=500 -D_LINUX_SOURCE_COMPAT -D_THREAD_SAFE" + uv_c_flags="${uv_c_flags} -D_ALL_SOURCE -D_XOPEN_SOURCE=500 -D_LINUX_SOURCE_COMPAT" libs="${libs} -lperfstat" ;; *Darwin*) |