Skip to content

Commit a2be958

Browse files
authored
Merge pull request #778 from lamyj/master
Bump required C++ version when using xtl
2 parents c272863 + f8ddeee commit a2be958

File tree

2 files changed

+32
-22
lines changed

2 files changed

+32
-22
lines changed

CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,11 @@ target_include_directories(xsimd INTERFACE
8585
$<BUILD_INTERFACE:${XSIMD_INCLUDE_DIR}>
8686
$<INSTALL_INTERFACE:include>)
8787

88-
target_compile_features(xsimd INTERFACE cxx_std_11)
88+
if (ENABLE_XTL_COMPLEX)
89+
target_compile_features(xsimd INTERFACE cxx_std_14)
90+
else()
91+
target_compile_features(xsimd INTERFACE cxx_std_11)
92+
endif()
8993

9094
OPTION(ENABLE_XTL_COMPLEX "enables support for xcomplex defined in xtl" OFF)
9195
OPTION(BUILD_TESTS "xsimd test suite" OFF)

test/CMakeLists.txt

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,31 @@ OPTION(CROSS_COMPILE_ARM "cross compile for ARM targets" OFF)
4444
set(TARGET_ARCH "native" CACHE STRING "Target architecture arguments")
4545

4646
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
47+
if (NOT WIN32 AND NOT ANDROID)
48+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-parameter -Wextra -Wreorder")
49+
# Users may override the c++ standard:
50+
if(NOT DEFINED CMAKE_CXX_STANDARD OR "${CMAKE_CXX_STANDARD}" STREQUAL "")
51+
if (ENABLE_XTL_COMPLEX)
52+
CHECK_CXX_COMPILER_FLAG("-std=c++14" HAS_CPP14_FLAG)
53+
if (NOT HAS_CPP14_FLAG)
54+
message(FATAL_ERROR "Unsupported compiler -- xsimd requires C++14 support when xtl complex support is enabled")
55+
endif()
56+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
57+
else()
58+
CHECK_CXX_COMPILER_FLAG("-std=c++11" HAS_CPP11_FLAG)
59+
if (NOT HAS_CPP11_FLAG)
60+
message(FATAL_ERROR "Unsupported compiler -- xsimd requires C++11 support!")
61+
else()
62+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
63+
endif()
64+
endif()
65+
endif()
66+
67+
if (NOT CROSS_COMPILE_ARM)
68+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fPIC")
69+
endif()
70+
endif()
71+
4772
if (ANDROID)
4873
# Nothing to do here, we assume the cmake Android NDK toolchain sets the
4974
# correct options for arm and neon.
@@ -73,33 +98,14 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU"
7398
endif()
7499
message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
75100
message(STATUS "CMAKE_CXX_LINK_EXECUTABLE: ${CMAKE_CXX_LINK_EXECUTABLE}")
76-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-parameter -Wextra -Wreorder -std=c++11")
77101
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^ppc64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")
78-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fPIC -mcpu=${TARGET_ARCH} -mtune=${TARGET_ARCH} -Wunused-parameter -Wextra -Wreorder -std=c++11")
102+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=${TARGET_ARCH} -mtune=${TARGET_ARCH}")
79103
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "riscv64")
80-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fPIC -Wunused-parameter -Wextra -Wreorder -std=c++11")
104+
# Nothing specific
81105
elseif(NOT WIN32)
82106
if(NOT CMAKE_CXX_FLAGS MATCHES "-march" AND NOT CMAKE_CXX_FLAGS MATCHES "-arch" AND NOT CMAKE_OSX_ARCHITECTURES)
83107
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${TARGET_ARCH}")
84108
endif()
85-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fPIC -Wunused-parameter -Wextra -Wreorder")
86-
# Users may override the c++ standard:
87-
if(NOT DEFINED CMAKE_CXX_STANDARD OR "${CMAKE_CXX_STANDARD}" STREQUAL "")
88-
if (ENABLE_XTL_COMPLEX)
89-
CHECK_CXX_COMPILER_FLAG("-std=c++14" HAS_CPP14_FLAG)
90-
if (NOT HAS_CPP14_FLAG)
91-
message(FATAL_ERROR "Unsupported compiler -- xsimd requires C++14 support when xtl complex support is enabled")
92-
endif()
93-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
94-
else()
95-
CHECK_CXX_COMPILER_FLAG("-std=c++11" HAS_CPP11_FLAG)
96-
if (NOT HAS_CPP11_FLAG)
97-
message(FATAL_ERROR "Unsupported compiler -- xsimd requires C++11 support!")
98-
else()
99-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
100-
endif()
101-
endif()
102-
endif()
103109
endif()
104110
endif()
105111

0 commit comments

Comments
 (0)