From c48777a1c39e66dc38a809047ba8764e3be354b6 Mon Sep 17 00:00:00 2001
From: Alexander Smorkalov <alexander.smorkalov@itseez.com>
Date: Fri, 27 Dec 2013 11:18:10 +0400
Subject: [PATCH] CUDA dependency in nonfree nodule removed. OpenCV.mk
 generation fixed.

---
 cmake/OpenCVGenAndroidMK.cmake                             | 4 +++-
 modules/nonfree/CMakeLists.txt                             | 7 ++++++-
 modules/nonfree/include/opencv2/nonfree/gpu.hpp            | 2 +-
 modules/nonfree/src/cuda/surf.cu                           | 2 +-
 modules/nonfree/src/precomp.hpp                            | 2 +-
 modules/nonfree/src/surf_gpu.cpp                           | 4 ++--
 .../include/opencv2/stitching/detail/matchers.hpp          | 4 ++--
 7 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/cmake/OpenCVGenAndroidMK.cmake b/cmake/OpenCVGenAndroidMK.cmake
index 8792d1b48..eed47652b 100644
--- a/cmake/OpenCVGenAndroidMK.cmake
+++ b/cmake/OpenCVGenAndroidMK.cmake
@@ -70,7 +70,9 @@ if(ANDROID)
   endif()
 
   # GPU module enabled separately
-  list(REMOVE_ITEM OPENCV_MODULES_CONFIGMAKE "gpu")
+  list(REMOVE_ITEM OPENCV_MODULES_CONFIGMAKE "opencv_gpu")
+  list(REMOVE_ITEM OPENCV_MODULES_CONFIGMAKE "opencv_dynamicuda")
+
   if(HAVE_opencv_gpu)
     set(OPENCV_HAVE_GPU_MODULE_CONFIGMAKE "on")
   endif()
diff --git a/modules/nonfree/CMakeLists.txt b/modules/nonfree/CMakeLists.txt
index 5689a12e3..d5c5562ec 100644
--- a/modules/nonfree/CMakeLists.txt
+++ b/modules/nonfree/CMakeLists.txt
@@ -4,4 +4,9 @@ endif()
 
 set(the_description "Functionality with possible limitations on the use")
 ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef)
-ocv_define_module(nonfree opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_gpu opencv_ocl)
+if (ENABLE_DYNAMIC_CUDA)
+  set(HAVE_CUDA FALSE)
+  ocv_define_module(nonfree opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_ocl)
+else()
+  ocv_define_module(nonfree opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_gpu opencv_ocl)
+endif()
\ No newline at end of file
diff --git a/modules/nonfree/include/opencv2/nonfree/gpu.hpp b/modules/nonfree/include/opencv2/nonfree/gpu.hpp
index 3cb0b4762..c8730fb3b 100644
--- a/modules/nonfree/include/opencv2/nonfree/gpu.hpp
+++ b/modules/nonfree/include/opencv2/nonfree/gpu.hpp
@@ -45,7 +45,7 @@
 
 #include "opencv2/opencv_modules.hpp"
 
-#if defined(HAVE_OPENCV_GPU)
+#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
 
 #include "opencv2/gpu/gpu.hpp"
 
diff --git a/modules/nonfree/src/cuda/surf.cu b/modules/nonfree/src/cuda/surf.cu
index 2002f534d..df5905d31 100644
--- a/modules/nonfree/src/cuda/surf.cu
+++ b/modules/nonfree/src/cuda/surf.cu
@@ -42,7 +42,7 @@
 
 #include "opencv2/opencv_modules.hpp"
 
-#ifdef HAVE_OPENCV_GPU
+#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
 
 #include "opencv2/gpu/device/common.hpp"
 #include "opencv2/gpu/device/limits.hpp"
diff --git a/modules/nonfree/src/precomp.hpp b/modules/nonfree/src/precomp.hpp
index 5fbe446af..0d2e180fc 100644
--- a/modules/nonfree/src/precomp.hpp
+++ b/modules/nonfree/src/precomp.hpp
@@ -51,7 +51,7 @@
 #include "opencv2/imgproc/imgproc.hpp"
 #include "opencv2/core/internal.hpp"
 
-#if defined(HAVE_OPENCV_GPU)
+#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
     #include "opencv2/nonfree/gpu.hpp"
 
     #if defined(HAVE_CUDA)
diff --git a/modules/nonfree/src/surf_gpu.cpp b/modules/nonfree/src/surf_gpu.cpp
index bfc7e700f..e0cf6ff51 100644
--- a/modules/nonfree/src/surf_gpu.cpp
+++ b/modules/nonfree/src/surf_gpu.cpp
@@ -42,7 +42,7 @@
 
 #include "precomp.hpp"
 
-#if defined(HAVE_OPENCV_GPU)
+#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
 
 using namespace cv;
 using namespace cv::gpu;
@@ -422,4 +422,4 @@ void cv::gpu::SURF_GPU::releaseMemory()
 
 #endif // !defined (HAVE_CUDA)
 
-#endif // defined(HAVE_OPENCV_GPU)
+#endif // defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
diff --git a/modules/stitching/include/opencv2/stitching/detail/matchers.hpp b/modules/stitching/include/opencv2/stitching/detail/matchers.hpp
index 108cd0fac..36f80f481 100644
--- a/modules/stitching/include/opencv2/stitching/detail/matchers.hpp
+++ b/modules/stitching/include/opencv2/stitching/detail/matchers.hpp
@@ -48,7 +48,7 @@
 
 #include "opencv2/opencv_modules.hpp"
 
-#if defined(HAVE_OPENCV_NONFREE) && defined(HAVE_OPENCV_GPU)
+#if defined(HAVE_OPENCV_NONFREE) && defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
     #include "opencv2/nonfree/gpu.hpp"
 #endif
 
@@ -104,7 +104,7 @@ private:
 };
 
 
-#if defined(HAVE_OPENCV_NONFREE) && defined(HAVE_OPENCV_GPU)
+#if defined(HAVE_OPENCV_NONFREE) && defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
 class CV_EXPORTS SurfFeaturesFinderGpu : public FeaturesFinder
 {
 public: