Skip to content

Commit 38f06ef

Browse files
committedJan 23, 2020
Add c++ standard flag before loading BLT
1 parent 8d05ed3 commit 38f06ef

File tree

2 files changed

+28
-29
lines changed

2 files changed

+28
-29
lines changed
 

‎CMakeLists.txt

+28-1
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,34 @@ if (ENABLE_CUDA)
9292
endif ()
9393
endif()
9494

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+
95123
if (NOT BLT_LOADED)
96124
if (DEFINED BLT_SOURCE_DIR)
97125
if (NOT EXISTS ${BLT_SOURCE_DIR}/SetupBLT.cmake)
@@ -110,7 +138,6 @@ if (NOT BLT_LOADED)
110138
endif ()
111139

112140
include(${BLT_SOURCE_DIR}/SetupBLT.cmake)
113-
114141
endif()
115142

116143
# Setup basic CMake options

‎cmake/SetupCompilers.cmake

-28
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,6 @@
55
# SPDX-License-Identifier: (BSD-3-Clause)
66
###############################################################################
77

8-
set(COMPILERS_KNOWN_TO_CMAKE33 AppleClang Clang GNU MSVC)
9-
10-
include(CheckCXXCompilerFlag)
11-
if(RAJA_CXX_STANDARD_FLAG MATCHES default)
12-
if("cxx_std_17" IN_LIST CMAKE_CXX_KNOWN_FEATURES)
13-
#TODO set BLT_CXX_STANDARD
14-
set(CMAKE_CXX_STANDARD 17)
15-
elseif("cxx_std_14" IN_LIST CMAKE_CXX_KNOWN_FEATURES)
16-
set(CMAKE_CXX_STANDARD 14)
17-
elseif("${CMAKE_CXX_COMPILER_ID}" IN_LIST COMPILERS_KNOWN_TO_CMAKE33)
18-
set(CMAKE_CXX_STANDARD 14)
19-
else() #cmake has no idea what to do, do it ourselves...
20-
foreach(flag_var "-std=c++17" "-std=c++1z" "-std=c++14" "-std=c++1y" "-std=c++11")
21-
CHECK_CXX_COMPILER_FLAG(${flag_var} COMPILER_SUPPORTS_${flag_var})
22-
if(COMPILER_SUPPORTS_${flag_var})
23-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag_var}")
24-
break()
25-
endif()
26-
endforeach(flag_var)
27-
endif()
28-
else(RAJA_CXX_STANDARD_FLAG MATCHES default)
29-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${RAJA_CXX_STANDARD_FLAG}")
30-
message("Using C++ standard flag: ${RAJA_CXX_STANDARD_FLAG}")
31-
endif(RAJA_CXX_STANDARD_FLAG MATCHES default)
32-
33-
34-
set(CMAKE_CXX_EXTENSIONS OFF)
35-
368
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3" CACHE STRING "")
379
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3" CACHE STRING "")
3810
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0" CACHE STRING "")

0 commit comments

Comments
 (0)
Please sign in to comment.