diff --git a/CMake/OTBCheckSSEFeatures.cmake b/CMake/OTBCheckSSEFeatures.cmake index af97f40e3a33701ce29a44a881e2b0ad52c08ee2..d13161f7c32a55a5a0cd1d9a3b4f3ae35790ae08 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 9761301af348d7257f388767f56b3712db70f7f6..d2495d4a0756a73bf0f4edd1fffe251cbdb4a636 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 1753c49c502e20d0cb4b9598a319c01b2ba78bef..31be37b16463e5a71ce822010eca68312ef565cc 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}}")