Enable Intel AVX/AVX2 compilation on Windows.
authorRichard Yoo <ryoo@google.com>
Mon, 21 Jul 2014 20:26:50 +0000 (13:26 -0700)
committerRichard Yoo <ryoo@google.com>
Mon, 21 Jul 2014 20:26:50 +0000 (13:26 -0700)
cmake/OpenCVCompilerOptions.cmake
cmake/OpenCVModule.cmake

index 7de23a6..9aade70 100644 (file)
@@ -220,14 +220,6 @@ if(MSVC)
     set(OPENCV_EXTRA_FLAGS_RELEASE "${OPENCV_EXTRA_FLAGS_RELEASE} /Zi")
   endif()
 
-  if(ENABLE_AVX AND NOT MSVC_VERSION LESS 1600)
-    set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /arch:AVX")
-  endif()
-
-  if(ENABLE_AVX2 AND NOT MSVC_VERSION LESS 1800)
-    set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /arch:AVX2")
-  endif()
-
   if(ENABLE_SSE4_1 AND CV_ICC AND NOT OPENCV_EXTRA_FLAGS MATCHES "/arch:")
     set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /arch:SSE4.1")
   endif()
index f9d333f..c3367d4 100644 (file)
@@ -529,14 +529,22 @@ macro(ocv_glob_module_sources)
   if(ENABLE_AVX)
     file(GLOB avx_srcs "src/avx/*.cpp")
     foreach(src ${avx_srcs})
-      set_source_files_properties(${src} PROPERTIES COMPILE_FLAGS -mavx)
+      if(CMAKE_COMPILER_IS_GNUCXX)
+        set_source_files_properties(${src} PROPERTIES COMPILE_FLAGS -mavx)
+      elseif(MSVC AND NOT MSVC_VERSION LESS 1600)
+        set_source_files_properties(${src} PROPERTIES COMPILE_FLAGS /arch:AVX)
+      endif()
     endforeach()
   endif()
 
   if(ENABLE_AVX2)
     file(GLOB avx2_srcs "src/avx2/*.cpp")
     foreach(src ${avx2_srcs})
-      set_source_files_properties(${src} PROPERTIES COMPILE_FLAGS -mavx2)
+      if(CMAKE_COMPILER_IS_GNUCXX)
+        set_source_files_properties(${src} PROPERTIES COMPILE_FLAGS -mavx2)
+      elseif(MSVC AND NOT MSVC_VERSION LESS 1800)
+        set_source_files_properties(${src} PROPERTIES COMPILE_FLAGS /arch:AVX2)
+      endif()
     endforeach()
   endif()