-if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pedantic -fno-strict-aliasing")
- if(CMAKE_TARGET_ARCHITECTURE STREQUAL "x86_64")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcx16")
- set(LIB_SUFFIX "64")
- endif()
- if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7.0.0")
-# gcc 4.8 - 6: disable noise -Wunused-local-typedefs
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-local-typedefs")
- endif()
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ string(REGEX MATCHALL "-std=[^ ]+" cxx_std_found ${CMAKE_CXX_FLAGS} "dummy@rg")
+ if(cxx_std_found)
+ message("C++ std: ${cxx_std_found}")
+ else()
+ list(APPEND LIBCDS_PUBLIC_CXX_FLAGS "-std=c++11")
+ message("C++ std: -std=c++11 (default)")
+ endif()
+
+ list(APPEND LIBCDS_PUBLIC_CXX_FLAGS "-fno-strict-aliasing")
+ list(APPEND LIBCDS_PRIVATE_CXX_FLAGS "-Wall" "-Wextra" "-pedantic")
+
+ if(CMAKE_TARGET_ARCHITECTURE STREQUAL "x86_64")
+ list(APPEND LIBCDS_PUBLIC_CXX_FLAGS "-mcx16")
+ set(LIB_SUFFIX "64")
+
+ # GCC-7: 128-bit atomics support is implemented via libatomic on amd64
+ # see https://gcc.gnu.org/ml/gcc/2017-01/msg00167.html
+ # Maybe, it will be changed in future
+ if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "7.0.0" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.0.0")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -latomic")
+ endif()
+ endif()
+
+ if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.0.0")
+ # gcc 4.8 - 6: disable noise -Wunused-local-typedefs
+ list(APPEND LIBCDS_PRIVATE_CXX_FLAGS "-Wno-unused-local-typedefs")
+ endif()