From 58e7d9f32f21db592624fb4cf8c26d8ef8ab212c Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Mon, 23 Dec 2013 12:33:49 +0400 Subject: [PATCH 1/2] OpenCV.mk fixed for accurate CUDA support. --- cmake/OpenCVGenAndroidMK.cmake | 6 +++++- cmake/templates/OpenCV.mk.in | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/cmake/OpenCVGenAndroidMK.cmake b/cmake/OpenCVGenAndroidMK.cmake index ba67f41891..bf7ce942ca 100644 --- a/cmake/OpenCVGenAndroidMK.cmake +++ b/cmake/OpenCVGenAndroidMK.cmake @@ -19,6 +19,10 @@ if(ANDROID) set(OPENCV_STATIC_LIBTYPE_CONFIGMAKE ${OPENCV_LIBTYPE_CONFIGMAKE}) endif() + if (HAVE_opencv_gpu) + set(OPENCV_PREBUILT_GPU_MODULE_CONFIGMAKE "on") + endif() + # setup lists of camera libs foreach(abi ARMEABI ARMEABI_V7A X86 MIPS) ANDROID_GET_ABI_RAWNAME(${abi} ndkabi) @@ -48,7 +52,7 @@ if(ANDROID) set(OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE "") foreach(m ${OPENCV_MODULES_PUBLIC}) list(INSERT OPENCV_MODULES_CONFIGMAKE 0 ${${m}_MODULE_DEPS_${ocv_optkind}} ${m}) - if(${m}_EXTRA_DEPS_${ocv_optkind}) + if(${m}_EXTRA_DEPS_${ocv_optkind} AND NOT ${m}_EXTRA_DEPS_${ocv_optkind} MATCHES "libcu.+$") list(INSERT OPENCV_EXTRA_COMPONENTS_CONFIGMAKE 0 ${${m}_EXTRA_DEPS_${ocv_optkind}}) endif() endforeach() diff --git a/cmake/templates/OpenCV.mk.in b/cmake/templates/OpenCV.mk.in index 078e02039f..d9cc306f23 100644 --- a/cmake/templates/OpenCV.mk.in +++ b/cmake/templates/OpenCV.mk.in @@ -13,6 +13,19 @@ OPENCV_BASEDIR:=@OPENCV_BASE_INCLUDE_DIR_CONFIGCMAKE@ OPENCV_LOCAL_C_INCLUDES:=@OPENCV_INCLUDE_DIRS_CONFIGCMAKE@ OPENCV_MODULES:=@OPENCV_MODULES_CONFIGMAKE@ +OPENCV_PREBUILT_GPU_MODULE:=@OPENCV_PREBUILT_GPU_MODULE_CONFIGMAKE@ +OPENCV_USE_GPU_MODULE:= + +ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) + ifeq ($(OPENCV_PREBUILT_GPU_MODULE),on) + ifneq ($(CUDA_TOOLKIT_DIR),) + OPENCV_USE_GPU_MODULE:=on + endif + endif +endif + +CUDA_RUNTIME_LIBS:=cufft npps nppi nppc cudart + ifeq ($(OPENCV_LIB_TYPE),) OPENCV_LIB_TYPE:=@OPENCV_LIBTYPE_CONFIGMAKE@ endif @@ -108,6 +121,13 @@ ifeq ($(OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_ALREADY_INCLUDED),) OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_ALREADY_INCLUDED:=on endif +ifeq ($(OPENCV_USE_GPU_MODULE),on) + include $(CLEAR_VARS) + LOCAL_MODULE:=opencv_gpu + LOCAL_SRC_FILES:=$(OPENCV_LIBS_DIR)/libopencv_gpu.a + include $(PREBUILT_STATIC_LIBRARY) +endif + ifeq ($(OPENCV_LOCAL_CFLAGS),) OPENCV_LOCAL_CFLAGS := -fPIC -DANDROID -fsigned-char endif @@ -116,6 +136,10 @@ include $(CLEAR_VARS) LOCAL_C_INCLUDES += $(OPENCV_LOCAL_C_INCLUDES) LOCAL_CFLAGS += $(OPENCV_LOCAL_CFLAGS) +ifeq ($(OPENCV_USE_GPU_MODULE),on) + LOCAL_C_INCLUDES += $(CUDA_TOOLKIT_DIR)/include +endif + ifeq ($(OPENCV_INSTALL_MODULES),on) LOCAL_$(OPENCV_LIB_TYPE)_LIBRARIES += $(foreach mod, $(OPENCV_LIBS), opencv_$(mod)) else @@ -128,5 +152,10 @@ endif LOCAL_LDLIBS += $(foreach lib,$(OPENCV_EXTRA_COMPONENTS), -l$(lib)) +ifeq ($(OPENCV_USE_GPU_MODULE),on) + LOCAL_STATIC_LIBRARIES+=libopencv_gpu + LOCAL_LDLIBS += -L$(CUDA_TOOLKIT_DIR)/lib $(foreach lib, $(CUDA_RUNTIME_LIBS), -l$(lib)) +endif + #restore the LOCAL_PATH LOCAL_PATH:=$(USER_LOCAL_PATH) From 51d3138dff09604f289d9f670d982b86d3a69a2b Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Mon, 23 Dec 2013 14:42:00 +0400 Subject: [PATCH 2/2] OCV option ENABLE_DYNAMIC_CUDA mistake fix. --- cmake/OpenCVGenAndroidMK.cmake | 11 ++++++----- cmake/templates/OpenCV.mk.in | 3 +-- modules/dynamicuda/CMakeLists.txt | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmake/OpenCVGenAndroidMK.cmake b/cmake/OpenCVGenAndroidMK.cmake index bf7ce942ca..fbac8d2c63 100644 --- a/cmake/OpenCVGenAndroidMK.cmake +++ b/cmake/OpenCVGenAndroidMK.cmake @@ -19,10 +19,6 @@ if(ANDROID) set(OPENCV_STATIC_LIBTYPE_CONFIGMAKE ${OPENCV_LIBTYPE_CONFIGMAKE}) endif() - if (HAVE_opencv_gpu) - set(OPENCV_PREBUILT_GPU_MODULE_CONFIGMAKE "on") - endif() - # setup lists of camera libs foreach(abi ARMEABI ARMEABI_V7A X86 MIPS) ANDROID_GET_ABI_RAWNAME(${abi} ndkabi) @@ -52,11 +48,16 @@ if(ANDROID) set(OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE "") foreach(m ${OPENCV_MODULES_PUBLIC}) list(INSERT OPENCV_MODULES_CONFIGMAKE 0 ${${m}_MODULE_DEPS_${ocv_optkind}} ${m}) - if(${m}_EXTRA_DEPS_${ocv_optkind} AND NOT ${m}_EXTRA_DEPS_${ocv_optkind} MATCHES "libcu.+$") + if(${m}_EXTRA_DEPS_${ocv_optkind}) list(INSERT OPENCV_EXTRA_COMPONENTS_CONFIGMAKE 0 ${${m}_EXTRA_DEPS_${ocv_optkind}}) endif() endforeach() + # remove CUDA runtime and NPP from regular deps + # it can be added seporately if needed. + ocv_list_filterout(OPENCV_EXTRA_COMPONENTS_CONFIGMAKE "libcu") + ocv_list_filterout(OPENCV_EXTRA_COMPONENTS_CONFIGMAKE "libnpp") + # split 3rdparty libs and modules foreach(mod ${OPENCV_MODULES_CONFIGMAKE}) if(NOT mod MATCHES "^opencv_.+$") diff --git a/cmake/templates/OpenCV.mk.in b/cmake/templates/OpenCV.mk.in index d9cc306f23..fdf700591a 100644 --- a/cmake/templates/OpenCV.mk.in +++ b/cmake/templates/OpenCV.mk.in @@ -13,11 +13,10 @@ OPENCV_BASEDIR:=@OPENCV_BASE_INCLUDE_DIR_CONFIGCMAKE@ OPENCV_LOCAL_C_INCLUDES:=@OPENCV_INCLUDE_DIRS_CONFIGCMAKE@ OPENCV_MODULES:=@OPENCV_MODULES_CONFIGMAKE@ -OPENCV_PREBUILT_GPU_MODULE:=@OPENCV_PREBUILT_GPU_MODULE_CONFIGMAKE@ OPENCV_USE_GPU_MODULE:= ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) - ifeq ($(OPENCV_PREBUILT_GPU_MODULE),on) + ifneq ($(findstring gpu,$(OPENCV_MODULES)),) ifneq ($(CUDA_TOOLKIT_DIR),) OPENCV_USE_GPU_MODULE:=on endif diff --git a/modules/dynamicuda/CMakeLists.txt b/modules/dynamicuda/CMakeLists.txt index f67879ef91..2e0154406a 100644 --- a/modules/dynamicuda/CMakeLists.txt +++ b/modules/dynamicuda/CMakeLists.txt @@ -1,4 +1,4 @@ -if(NOT DYNAMIC_CUDA_SUPPORT) +if(NOT ENABLE_DYNAMIC_CUDA) ocv_module_disable(dynamicuda) endif()