From: Alexander Smorkalov Date: Wed, 5 Mar 2014 08:31:04 +0000 (+0400) Subject: Superres module enabled for Android. GPU samples build fixed for Android. X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~1314^2~554^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b4e4f13f9efdfe2d1f0909d78556d8c865d5f371;p=platform%2Fupstream%2Fopencv.git Superres module enabled for Android. GPU samples build fixed for Android. --- diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake index c9c3511..e11f5e6 100644 --- a/cmake/OpenCVModule.cmake +++ b/cmake/OpenCVModule.cmake @@ -27,7 +27,8 @@ # The verbose template for OpenCV module: # # ocv_add_module(modname ) -# ocv_glob_module_sources() or glob them manually and ocv_set_module_sources(...) +# ocv_glob_module_sources(([EXCLUDE_CUDA] ) +# or glob them manually and ocv_set_module_sources(...) # ocv_module_include_directories() # ocv_create_module() # @@ -478,14 +479,20 @@ endmacro() # finds and sets headers and sources for the standard OpenCV module # Usage: -# ocv_glob_module_sources() -macro(ocv_glob_module_sources EXCLUDE_CUDA EXCLUDE_OPENCL) +# ocv_glob_module_sources([EXCLUDE_CUDA] ) +macro(ocv_glob_module_sources) + set(_argn ${ARGN}) + list(FIND _argn "EXCLUDE_CUDA" exclude_cuda) + if(NOT exclude_cuda EQUAL -1) + list(REMOVE_AT _argn ${exclude_cuda}) + endif() + file(GLOB_RECURSE lib_srcs "src/*.cpp") file(GLOB_RECURSE lib_int_hdrs "src/*.hpp" "src/*.h") file(GLOB lib_hdrs "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h") file(GLOB lib_hdrs_detail "include/opencv2/${name}/detail/*.hpp" "include/opencv2/${name}/detail/*.h") - if (NOT ${EXCLUDE_CUDA}) + if (exclude_cuda EQUAL -1) file(GLOB lib_cuda_srcs "src/cuda/*.cu") set(cuda_objs "") set(lib_cuda_hdrs "") @@ -504,26 +511,22 @@ macro(ocv_glob_module_sources EXCLUDE_CUDA EXCLUDE_OPENCL) source_group("Src" FILES ${lib_srcs} ${lib_int_hdrs}) - if (NOT ${EXCLUDE_OPENCL}) - file(GLOB cl_kernels "src/opencl/*.cl") - if(HAVE_opencv_ocl AND cl_kernels) - ocv_include_directories(${OPENCL_INCLUDE_DIRS}) - add_custom_command( - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp" - COMMAND ${CMAKE_COMMAND} -DCL_DIR="${CMAKE_CURRENT_SOURCE_DIR}/src/opencl" -DOUTPUT="${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" -P "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake" - DEPENDS ${cl_kernels} "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake") - source_group("OpenCL" FILES ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") - list(APPEND lib_srcs ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") - endif() + file(GLOB cl_kernels "src/opencl/*.cl") + if(HAVE_opencv_ocl AND cl_kernels) + ocv_include_directories(${OPENCL_INCLUDE_DIRS}) + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp" + COMMAND ${CMAKE_COMMAND} -DCL_DIR="${CMAKE_CURRENT_SOURCE_DIR}/src/opencl" -DOUTPUT="${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" -P "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake" + DEPENDS ${cl_kernels} "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake") + source_group("OpenCL" FILES ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") + list(APPEND lib_srcs ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") endif() source_group("Include" FILES ${lib_hdrs}) source_group("Include\\detail" FILES ${lib_hdrs_detail}) - message(":${EXCLUDE_CUDA}: ${lib_cuda_srcs}") - - ocv_set_module_sources(${ARGN} HEADERS ${lib_hdrs} ${lib_hdrs_detail} - SOURCES ${lib_srcs} ${lib_int_hdrs} ${cuda_objs} ${lib_cuda_srcs} ${lib_cuda_hdrs}) + ocv_set_module_sources(${_argn} HEADERS ${lib_hdrs} ${lib_hdrs_detail} + SOURCES ${lib_srcs} ${lib_int_hdrs} ${cuda_objs} ${lib_cuda_srcs} ${lib_cuda_hdrs}) endmacro() # creates OpenCV module in current folder @@ -622,27 +625,20 @@ endmacro() # short command for adding simple OpenCV module # see ocv_add_module for argument details # Usage: -# ocv_define_module(module_name [INTERNAL] [REQUIRED] [] [OPTIONAL ]) +# ocv_define_module(module_name [INTERNAL] [EXCLUDE_CUDA] [REQUIRED] [] [OPTIONAL ]) macro(ocv_define_module module_name) - set(_tmp_argn ${ARGN}) - set(exclude_cuda 0) - set(exclude_opencl 0) - set(argv0 ${ARGV1}) - set(argv1 ${ARGV2}) - set(argv2 ${ARGV3}) - foreach(i RANGE 0 2) - if("${argv${i}}" STREQUAL "EXCLUDE_CUDA") - set(exclude_cuda 1) - list(REMOVE_AT _tmp_argn ${i}) - elseif ("${argv${i}}" STREQUAL "EXCLUDE_OPENCL") - set(exclude_opencl 1) - list(REMOVE_AT _tmp_argn ${i}) + set(_argn ${ARGN}) + set(exclude_cuda "") + foreach(arg ${_argn}) + if("${arg}" STREQUAL "EXCLUDE_CUDA") + set(exclude_cuda "${arg}") + list(REMOVE_ITEM _argn ${arg}) endif() endforeach() - ocv_add_module(${module_name} ${_tmp_argn}) + ocv_add_module(${module_name} ${_argn}) ocv_module_include_directories() - ocv_glob_module_sources(${exclude_cuda} ${exclude_opencl}) + ocv_glob_module_sources(${exclude_cuda}) ocv_create_module() ocv_add_precompiled_headers(${the_module}) diff --git a/modules/superres/CMakeLists.txt b/modules/superres/CMakeLists.txt index 82c61cc..8e3d7b2 100644 --- a/modules/superres/CMakeLists.txt +++ b/modules/superres/CMakeLists.txt @@ -1,7 +1,12 @@ -if(ANDROID OR IOS) +if(IOS) ocv_module_disable(superres) endif() set(the_description "Super Resolution") ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4127 -Wundef -Wshadow) -ocv_define_module(superres opencv_imgproc opencv_video OPTIONAL opencv_gpu opencv_highgui opencv_ocl ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY}) +if(ENABLE_DYNAMIC_CUDA) + add_definitions(-DDYNAMIC_CUDA_SUPPORT) + ocv_define_module(superres EXCLUDE_CUDA opencv_imgproc opencv_video OPTIONAL opencv_highgui opencv_ocl) +else() + ocv_define_module(superres opencv_imgproc opencv_video OPTIONAL opencv_gpu opencv_highgui opencv_ocl ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY}) +endif() diff --git a/modules/superres/src/btv_l1_gpu.cpp b/modules/superres/src/btv_l1_gpu.cpp index b93bcfd..2f40fa3 100644 --- a/modules/superres/src/btv_l1_gpu.cpp +++ b/modules/superres/src/btv_l1_gpu.cpp @@ -51,7 +51,7 @@ using namespace cv::gpu; using namespace cv::superres; using namespace cv::superres::detail; -#if !defined(HAVE_CUDA) || !defined(HAVE_OPENCV_GPU) +#if !defined(HAVE_CUDA) || !defined(HAVE_OPENCV_GPU) || defined(DYNAMIC_CUDA_SUPPORT) Ptr cv::superres::createSuperResolution_BTVL1_GPU() { diff --git a/modules/superres/src/frame_source.cpp b/modules/superres/src/frame_source.cpp index 20e45d9..5f59a98 100644 --- a/modules/superres/src/frame_source.cpp +++ b/modules/superres/src/frame_source.cpp @@ -200,7 +200,7 @@ Ptr cv::superres::createFrameSource_Camera(int deviceId) ////////////////////////////////////////////////////// // VideoFrameSource_GPU -#ifndef HAVE_OPENCV_GPU +#if !defined(HAVE_OPENCV_GPU) || defined(DYNAMIC_CUDA_SUPPORT) Ptr cv::superres::createFrameSource_Video_GPU(const string& fileName) { diff --git a/modules/superres/src/input_array_utility.cpp b/modules/superres/src/input_array_utility.cpp index 075cf95..10fc1c9 100644 --- a/modules/superres/src/input_array_utility.cpp +++ b/modules/superres/src/input_array_utility.cpp @@ -207,7 +207,7 @@ namespace switch (src.kind()) { case _InputArray::GPU_MAT: - #ifdef HAVE_OPENCV_GPU + #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT) gpu::cvtColor(src.getGpuMat(), dst.getGpuMatRef(), code, cn); #else CV_Error(CV_StsNotImplemented, "The called functionality is disabled for current build or platform"); diff --git a/modules/superres/src/optical_flow.cpp b/modules/superres/src/optical_flow.cpp index e1e8a10..617f83a 100644 --- a/modules/superres/src/optical_flow.cpp +++ b/modules/superres/src/optical_flow.cpp @@ -344,7 +344,7 @@ Ptr cv::superres::createOptFlow_DualTVL1() /////////////////////////////////////////////////////////////////// // GpuOpticalFlow -#ifndef HAVE_OPENCV_GPU +#if !defined(HAVE_OPENCV_GPU) || defined(DYNAMIC_CUDA_SUPPORT) Ptr cv::superres::createOptFlow_Farneback_GPU() { diff --git a/modules/superres/src/precomp.hpp b/modules/superres/src/precomp.hpp index 4cf4941..65fc7c8 100644 --- a/modules/superres/src/precomp.hpp +++ b/modules/superres/src/precomp.hpp @@ -56,7 +56,7 @@ #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/video/tracking.hpp" -#ifdef HAVE_OPENCV_GPU +#if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT) #include "opencv2/gpu/gpu.hpp" #ifdef HAVE_CUDA #include "opencv2/gpu/stream_accessor.hpp" diff --git a/modules/ts/CMakeLists.txt b/modules/ts/CMakeLists.txt index dcd3e15..bb56da2 100644 --- a/modules/ts/CMakeLists.txt +++ b/modules/ts/CMakeLists.txt @@ -11,7 +11,7 @@ ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef) ocv_add_module(ts opencv_core opencv_features2d) -ocv_glob_module_sources(0 0) +ocv_glob_module_sources() ocv_module_include_directories() ocv_create_module() diff --git a/samples/gpu/CMakeLists.txt b/samples/gpu/CMakeLists.txt index 8fa5394..d25c3a6 100644 --- a/samples/gpu/CMakeLists.txt +++ b/samples/gpu/CMakeLists.txt @@ -41,7 +41,7 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND) target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_GPU_SAMPLES_REQUIRED_DEPS}) - if(HAVE_CUDA) + if(HAVE_CUDA AND NOT ANDROID) target_link_libraries(${the_target} ${CUDA_CUDA_LIBRARY}) endif() diff --git a/samples/gpu/brox_optical_flow.cpp b/samples/gpu/brox_optical_flow.cpp index 722e19f..7cd5089 100644 --- a/samples/gpu/brox_optical_flow.cpp +++ b/samples/gpu/brox_optical_flow.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "cvconfig.h" #include "opencv2/core/core.hpp" diff --git a/samples/gpu/opticalflow_nvidia_api.cpp b/samples/gpu/opticalflow_nvidia_api.cpp index 05a37ef..31ee569 100644 --- a/samples/gpu/opticalflow_nvidia_api.cpp +++ b/samples/gpu/opticalflow_nvidia_api.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include "cvconfig.h" #include diff --git a/samples/gpu/super_resolution.cpp b/samples/gpu/super_resolution.cpp index 6efd241..85cb6cf 100644 --- a/samples/gpu/super_resolution.cpp +++ b/samples/gpu/super_resolution.cpp @@ -1,6 +1,8 @@ #include #include #include +#include + #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp"