Skip to content

Commit 23ba277

Browse files
authored
Merge pull request #227 from james-d-mitchell/detect-march-native
Check for compiler support for '-march=native' flag
2 parents 33ffcf2 + 12dd96d commit 23ba277

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

benchmark/CMakeLists.txt

+5-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ include(CheckCXXCompilerFlag)
2323
string(TOUPPER "${CMAKE_BUILD_TYPE}" U_CMAKE_BUILD_TYPE)
2424

2525
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
26-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wunused-parameter -Wextra -Wreorder")
26+
CHECK_CXX_COMPILER_FLAG(-march=native arch_native_supported)
27+
if(arch_native_supported AND NOT CMAKE_CXX_FLAGS MATCHES "-march")
28+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
29+
endif()
30+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-parameter -Wextra -Wreorder")
2731
CHECK_CXX_COMPILER_FLAG("-std=c++14" HAS_CPP14_FLAG)
2832

2933
if (HAS_CPP14_FLAG)

test/CMakeLists.txt

+10-2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,11 @@ if(NOT _cxx_std_flag)
5757
endif()
5858

5959
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR (CMAKE_CXX_COMPILER_ID MATCHES "Intel" AND NOT WIN32))
60-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_cxx_std_flag} -march=native -Wunused-parameter -Wextra -Wreorder -Wconversion -Wsign-conversion")
60+
CHECK_CXX_COMPILER_FLAG(-march=native arch_native_supported)
61+
if(arch_native_supported AND NOT CMAKE_CXX_FLAGS MATCHES "-march")
62+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
63+
endif()
64+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_cxx_std_flag} -Wunused-parameter -Wextra -Wreorder -Wconversion -Wsign-conversion")
6165
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wold-style-cast -Wunused-variable")
6266
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
6367
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_cxx_std_flag} /EHsc /MP /bigobj /wd4800")
@@ -66,7 +70,11 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
6670
add_definitions(-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING)
6771
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
6872
if(NOT WIN32)
69-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_cxx_std_flag} -march=native -Wunused-parameter -Wextra -Wreorder -Wconversion -Wsign-conversion")
73+
CHECK_CXX_COMPILER_FLAG(-march=native arch_native_supported)
74+
if(arch_native_supported AND NOT CMAKE_CXX_FLAGS MATCHES "-march")
75+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
76+
endif()
77+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_cxx_std_flag} -Wunused-parameter -Wextra -Wreorder -Wconversion -Wsign-conversion")
7078
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wold-style-cast -Wunused-variable")
7179
else() # We are using clang-cl
7280
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_cxx_std_flag} /EHsc /MP /bigobj -Wno-unused-command-line-argument")

0 commit comments

Comments
 (0)