From 11cf87951c6fc5954b53b4a67f658cd783bd08de Mon Sep 17 00:00:00 2001 From: James Turner Date: Thu, 28 May 2020 10:46:18 +0100 Subject: [PATCH] SIMD flags: ensure we respect other compiler flags Ensure we only ever extend the currently set compile flags when ENABLE_SIMD is requested --- CMakeLists.txt | 42 +++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6224dd75..2360c31c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -417,11 +417,8 @@ if(CMAKE_COMPILER_IS_GNUCXX) message(WARNING "GCC 4.4 will be required soon, please upgrade") endif() - if (ENABLE_SIMD) - if (X86 OR X86_64) - set(CMAKE_C_FLAGS_RELEASE "-O3 -msse2 -mfpmath=sse -ftree-vectorize -ftree-slp-vectorize") - set(CMAKE_CXX_FLAGS_RELEASE "-O3 -msse2 -mfpmath=sse -ftree-vectorize -ftree-slp-vectorize") - endif() + if (X86 OR X86_64) + set(SIMD_COMPILER_FLAGS "-msse2 -mfpmath=sse -ftree-vectorize -ftree-slp-vectorize") endif() # certain GCC versions don't provide the atomic builds, and hence @@ -444,16 +441,7 @@ if (CLANG) set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG") set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG") - if (ENABLE_SIMD) - if (X86 OR X86_64) - set(CMAKE_C_FLAGS_RELEASE "-O3 -msse2 -mfpmath=sse -ftree-vectorize -ftree-slp-vectorize") - set(CMAKE_CXX_FLAGS_RELEASE "-O3 -msse2 -mfpmath=sse -ftree-vectorize -ftree-slp-vectorize") - - # propogate to the RelWithDebInfo flags - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} -g -DNDEBUG") - set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELEASE} -g -DNDEBUG") - endif() - endif() + set(SIMD_COMPILER_FLAGS "-msse2 -mfpmath=sse -ftree-vectorize -ftree-slp-vectorize") endif() if (ENABLE_OPENMP) @@ -485,14 +473,8 @@ if(WIN32) if(MSVC) set(MSVC_FLAGS "-DWIN32 -DNOMINMAX -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D__CRT_NONSTDC_NO_WARNINGS /MP") - if(ENABLE_SIMD) - if (X86) - SET(CMAKE_C_FLAGS_RELEASE "/O2 /arch:SSE /arch:SSE2") - SET(CMAKE_CXX_FLAGS_RELEASE "/O2 /arch:SSE /arch:SSE2") - else() - SET(CMAKE_C_FLAGS_RELEASE "/O2") - SET(CMAKE_CXX_FLAGS_RELEASE "/O2") - endif() + if (X86) + set(SIMD_COMPILER_FLAGS "/arch:SSE /arch:SSE2") endif() if (NOT OSG_FSTREAM_EXPORT_FIXED) @@ -516,6 +498,20 @@ if(WIN32) set( RT_LIBRARY "winmm" ) endif(WIN32) +# append the SIMD flags if requested +if (ENABLE_SIMD) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SIMD_COMPILER_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SIMD_COMPILER_FLAGS}") + + # set for multi-configuration generators + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${SIMD_COMPILER_FLAGS}") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${SIMD_COMPILER_FLAGS}") + + set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} ${SIMD_COMPILER_FLAGS}") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${SIMD_COMPILER_FLAGS}") +endif() + + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS_C} ${MSVC_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS_CXX} ${MSVC_FLAGS} ${BOOST_CXX_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MSVC_LD_FLAGS}")