Merge pull request #1263 from abidrahmank:pyCLAHE_24
[profile/ivi/opencv.git] / modules / gpu / CMakeLists.txt
1 if(ANDROID OR IOS)
2   ocv_module_disable(gpu)
3 endif()
4
5 set(the_description "GPU-accelerated Computer Vision")
6 ocv_add_module(gpu opencv_imgproc opencv_calib3d opencv_objdetect opencv_video opencv_photo opencv_legacy)
7
8 ocv_module_include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src/cuda")
9
10 file(GLOB lib_hdrs               "include/opencv2/${name}/*.hpp"               "include/opencv2/${name}/*.h")
11 file(GLOB lib_device_hdrs        "include/opencv2/${name}/device/*.hpp"        "include/opencv2/${name}/device/*.h")
12 file(GLOB lib_device_hdrs_detail "include/opencv2/${name}/device/detail/*.hpp" "include/opencv2/${name}/device/detail/*.h")
13 file(GLOB lib_int_hdrs           "src/*.hpp"      "src/*.h")
14 file(GLOB lib_cuda_hdrs          "src/cuda/*.hpp" "src/cuda/*.h")
15 file(GLOB lib_srcs               "src/*.cpp")
16 file(GLOB lib_cuda               "src/cuda/*.cu*")
17
18 source_group("Include"        FILES ${lib_hdrs})
19 source_group("Src\\Host"      FILES ${lib_srcs} ${lib_int_hdrs})
20 source_group("Src\\Cuda"      FILES ${lib_cuda} ${lib_cuda_hdrs})
21 source_group("Device"         FILES ${lib_device_hdrs})
22 source_group("Device\\Detail" FILES ${lib_device_hdrs_detail})
23
24 if(HAVE_CUDA)
25   file(GLOB_RECURSE ncv_srcs "src/nvidia/*.cpp" "src/nvidia/*.h*")
26   file(GLOB_RECURSE ncv_cuda "src/nvidia/*.cu")
27   set(ncv_files ${ncv_srcs} ${ncv_cuda})
28
29   source_group("Src\\NVidia" FILES ${ncv_files})
30   ocv_include_directories("src/nvidia" "src/nvidia/core" "src/nvidia/NPP_staging" ${CUDA_INCLUDE_DIRS})
31   ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wmissing-declarations -Wshadow -Wunused-parameter /wd4211 /wd4201 /wd4100 /wd4505 /wd4408)
32
33   if(MSVC)
34     if(NOT ENABLE_NOISY_WARNINGS)
35       foreach(var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG)
36         string(REPLACE "/W4" "/W3" ${var} "${${var}}")
37       endforeach()
38
39       set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler /wd4251)
40     endif()
41   endif()
42
43   ocv_cuda_compile(cuda_objs ${lib_cuda} ${ncv_cuda})
44
45   set(cuda_link_libs ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY})
46   
47   if(HAVE_CUFFT)
48       set(cuda_link_libs ${cuda_link_libs} ${CUDA_cufft_LIBRARY})
49   endif()
50
51   if(HAVE_CUBLAS)
52       set(cuda_link_libs ${cuda_link_libs} ${CUDA_cublas_LIBRARY})
53   endif()
54
55   if(WITH_NVCUVID)
56     set(cuda_link_libs ${cuda_link_libs} ${CUDA_CUDA_LIBRARY} ${CUDA_nvcuvid_LIBRARY})
57
58     if(WIN32)
59       find_cuda_helper_libs(nvcuvenc)
60       set(cuda_link_libs ${cuda_link_libs} ${CUDA_nvcuvenc_LIBRARY})
61     endif()
62
63     if(WITH_FFMPEG)
64       set(cuda_link_libs ${cuda_link_libs} ${HIGHGUI_LIBRARIES})
65     endif()
66   endif()
67 else()
68   set(lib_cuda "")
69   set(cuda_objs "")
70   set(cuda_link_libs "")
71   set(ncv_files "")
72 endif()
73
74 ocv_set_module_sources(
75   HEADERS ${lib_hdrs} ${lib_device_hdrs} ${lib_device_hdrs_detail}
76   SOURCES ${lib_int_hdrs} ${lib_cuda_hdrs} ${lib_srcs} ${lib_cuda} ${ncv_files} ${cuda_objs}
77   )
78
79 ocv_create_module(${cuda_link_libs})
80
81 if(HAVE_CUDA)
82   install(FILES src/nvidia/NPP_staging/NPP_staging.hpp  src/nvidia/core/NCV.hpp
83     DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2/${name}
84     COMPONENT main)
85 endif()
86
87 ocv_add_precompiled_headers(${the_module})
88
89 ################################################################################################################
90 ################################      GPU Module Tests     #####################################################
91 ################################################################################################################
92 file(GLOB test_srcs "test/*.cpp")
93 file(GLOB test_hdrs "test/*.hpp" "test/*.h")
94
95 set(nvidia "")
96 if(HAVE_CUDA)
97   file(GLOB nvidia "test/nvidia/*.cpp" "test/nvidia/*.hpp" "test/nvidia/*.h")
98   set(nvidia FILES "Src\\\\\\\\NVidia" ${nvidia}) # 8 ugly backslashes :'(
99 endif()
100
101 ocv_add_accuracy_tests(FILES "Include" ${test_hdrs}
102                        FILES "Src" ${test_srcs}
103                        ${nvidia})
104 ocv_add_perf_tests()
105
106 if(HAVE_CUDA)
107   add_subdirectory(perf4au)
108 endif()