@@ -92,6 +92,34 @@ if (ENABLE_CUDA)
92
92
endif ()
93
93
endif ()
94
94
95
+ # Detect C++ standard and add appropriate flag _before_ loading BLT
96
+ set (COMPILERS_KNOWN_TO_CMAKE33 AppleClang Clang GNU MSVC )
97
+
98
+ include (CheckCXXCompilerFlag)
99
+ if (RAJA_CXX_STANDARD_FLAG MATCHES default)
100
+ if ("cxx_std_17" IN_LIST CMAKE_CXX_KNOWN_FEATURES)
101
+ #TODO set BLT_CXX_STANDARD
102
+ set (CMAKE_CXX_STANDARD 17)
103
+ elseif ("cxx_std_14" IN_LIST CMAKE_CXX_KNOWN_FEATURES)
104
+ set (CMAKE_CXX_STANDARD 14)
105
+ elseif ("${CMAKE_CXX_COMPILER_ID} " IN_LIST COMPILERS_KNOWN_TO_CMAKE33)
106
+ set (CMAKE_CXX_STANDARD 14)
107
+ else () #cmake has no idea what to do, do it ourselves...
108
+ foreach (flag_var "-std=c++17" "-std=c++1z" "-std=c++14" "-std=c++1y" "-std=c++11" )
109
+ CHECK_CXX_COMPILER_FLAG(${flag_var} COMPILER_SUPPORTS_${flag_var} )
110
+ if (COMPILER_SUPPORTS_${flag_var} )
111
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag_var} " )
112
+ break ()
113
+ endif ()
114
+ endforeach (flag_var)
115
+ endif ()
116
+ else (RAJA_CXX_STANDARD_FLAG MATCHES default)
117
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${RAJA_CXX_STANDARD_FLAG} " )
118
+ message ("Using C++ standard flag: ${RAJA_CXX_STANDARD_FLAG} " )
119
+ endif (RAJA_CXX_STANDARD_FLAG MATCHES default)
120
+
121
+ set (CMAKE_CXX_EXTENSIONS OFF )
122
+
95
123
if (NOT BLT_LOADED)
96
124
if (DEFINED BLT_SOURCE_DIR)
97
125
if (NOT EXISTS ${BLT_SOURCE_DIR} /SetupBLT.cmake)
@@ -110,7 +138,6 @@ if (NOT BLT_LOADED)
110
138
endif ()
111
139
112
140
include (${BLT_SOURCE_DIR} /SetupBLT.cmake)
113
-
114
141
endif ()
115
142
116
143
# Setup basic CMake options
0 commit comments