From 256f237f5dcc139cbe97328d61e07b6f57e3c4db Mon Sep 17 00:00:00 2001 From: Rashad Kanavath <rashad.kanavath@c-s.fr> Date: Tue, 29 Aug 2017 11:34:38 +0200 Subject: [PATCH] COMP: fix openmp & sse flag checks --- CMake/OTBCheckSSEFeatures.cmake | 32 ++++++++----------------- CMake/OTBSetStandardCompilerFlags.cmake | 15 ++++++------ CMakeLists.txt | 2 ++ 3 files changed, 20 insertions(+), 29 deletions(-) diff --git a/CMake/OTBCheckSSEFeatures.cmake b/CMake/OTBCheckSSEFeatures.cmake index af97f40e3a..d13161f7c3 100644 --- a/CMake/OTBCheckSSEFeatures.cmake +++ b/CMake/OTBCheckSSEFeatures.cmake @@ -1,10 +1,7 @@ function(check_sse_features sse_flags ) - include(CheckIncludeFile) - include(CheckLibraryExists) include(CheckCXXSourceRuns) include(CheckCXXCompilerFlag) - set(has_sse FALSE) set(${sse_flags} "0" PARENT_SCOPE) # For apple assume sse2 is on for all intel builds, check for 64 and 32 bit versions if(APPLE) @@ -24,14 +21,11 @@ function(check_sse_features sse_flags ) b = _mm_add_pd(a,a); _mm_storeu_pd(vals,b); return 0; - }" - has_sse) + }" HAVE_SSE2_FLAGS) - if(has_sse) - message(STATUS "Performing Test CXX_HAS_SSE2 - Success") + if(HAVE_SSE2_FLAGS) set(${sse_flags} "-msse2 -mfpmath=sse" PARENT_SCOPE) - else() - message(STATUS "Performing Test CXX_HAS_SSE2 - Failed") + return() endif() set(CMAKE_REQUIRED_FLAGS "-msse") @@ -46,18 +40,13 @@ function(check_sse_features sse_flags ) b = _mm_add_ps(a,b); _mm_storeu_ps(vals,b); return 0; - }" - has_sse) + }" HAVE_SSE_FLAGS) - if(has_sse) - message(STATUS "Performing Test CXX_HAS_SSE - Success") + if(HAVE_SSE_FLAGS) set(${sse_flags} "-msse -mfpmath=sse" PARENT_SCOPE) return() - else() - message(STATUS "Performing Test CXX_HAS_SSE - Failed") - return() endif() - + elseif(MSVC) if(CMAKE_SIZEOF_VOID_P EQUAL 8) return() @@ -73,15 +62,14 @@ function(check_sse_features sse_flags ) b = _mm_add_pd(a,a); _mm_storeu_pd(vals,b); return 0; - }" - has_sse) + }" HAVE_SSE_FLAGS) - if(has_sse) - message(STATUS "Performing Test CXX_HAS_SSE - Success") + if(HAVE_SSE_FLAGS) + message(STATUS "Performing Test HAVE_SSE_FLAGS - Success") set(${sse_flags} "/arch:SSE2 /fp:fast -D__SSE__ -D__SSE2__" PARENT_SCOPE) return() else() - message(STATUS "Performing Test CXX_HAS_SSE - Failed") + message(STATUS "Performing Test HAVE_SSE_FLAGS - Failed") return() endif() endif() diff --git a/CMake/OTBSetStandardCompilerFlags.cmake b/CMake/OTBSetStandardCompilerFlags.cmake index 9761301af3..d2495d4a07 100644 --- a/CMake/OTBSetStandardCompilerFlags.cmake +++ b/CMake/OTBSetStandardCompilerFlags.cmake @@ -281,23 +281,24 @@ macro(check_compiler_platform_flags) # check for OpenMP if(OTB_USE_OPENMP) + message(STATUS "OpenMP support requested with OTB_USE_OPENMP=${OTB_USE_OPENMP}") find_package(OpenMP QUIET) endif() if(OPENMP_FOUND) - message(STATUS "Enabling OpenMP support") - set(OTB_REQUIRED_C_FLAGS "${OTB_REQUIRED_C_FLAGS} ${OpenMP_C_FLAGS}") + message(STATUS "Adding '${OpenMP_CXX_FLAGS}' to OTB_REQUIRED_CXX_FLAGS ") set(OTB_REQUIRED_CXX_FLAGS "${OTB_REQUIRED_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") - set(OTB_REQUIRED_LINK_FLAGS "${OTB_REQUIRED_LINK_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") - else() - message(STATUS "Disabling OpenMP support") + if(OpenMP_EXE_LINKER_FLAGS) + set(OTB_REQUIRED_LINK_FLAGS "${OTB_REQUIRED_LINK_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") + endif() endif() set(OTB_SSE_FLAGS) - if(OTB_USE_SSE_FLAGS) + if(OTB_USE_SSE_FLAGS) + message(STATUS "SIMD extensions requested with OTB_USE_SSE_FLAGS=${OTB_USE_SSE_FLAGS}") include(OTBCheckSSEFeatures) check_sse_features(OTB_SSE_FLAGS) if(OTB_SSE_FLAGS) - message(STATUS "Adding OTB_SSE_FLAGS(${OTB_SSE_FLAGS}) to OTB_REQUIRED_CXX_FLAGS") + message(STATUS "Adding '${OTB_SSE_FLAGS}' to OTB_REQUIRED_CXX_FLAGS") set(OTB_REQUIRED_CXX_FLAGS "${OTB_REQUIRED_CXX_FLAGS} ${OTB_SSE_FLAGS}") endif() endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index 1753c49c50..31be37b164 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -506,6 +506,8 @@ foreach(otb_option OTB_WRAP_PYTHON OTB_WRAP_JAVA OTB_DATA_ROOT + OTB_USE_OPENMP + OTB_USE_SSE_FLAGS ) get_white_spaces("${otb_option}" spaces) message("${otb_option} ${spaces} = ${${otb_option}}") -- GitLab