CMakeLists.txt 4.1 KB
Newer Older
1
if(ANDROID OR IOS)
A
Andrey Kamaev 已提交
2
  ocv_module_disable(gpu)
3 4
endif()

A
Andrey Kamaev 已提交
5
set(the_description "GPU-accelerated Computer Vision")
6
ocv_add_module(gpu opencv_imgproc opencv_calib3d opencv_objdetect opencv_video opencv_nonfree opencv_legacy)
7

A
Andrey Kamaev 已提交
8
ocv_module_include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src/cuda" "${CMAKE_CURRENT_SOURCE_DIR}/../highgui/src")
V
Vladislav Vinogradov 已提交
9

A
Andrey Kamaev 已提交
10 11 12 13 14 15 16
file(GLOB lib_hdrs               "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h")
file(GLOB lib_int_hdrs           "src/*.hpp" "src/*.h")
file(GLOB lib_cuda_hdrs          "src/cuda/*.hpp" "src/cuda/*.h")
file(GLOB lib_device_hdrs        "src/opencv2/gpu/device/*.hpp" "src/opencv2/gpu/device/*.h")
file(GLOB lib_device_hdrs_detail "src/opencv2/gpu/device/detail/*.hpp" "src/opencv2/gpu/device/detail/*.h")
file(GLOB lib_srcs               "src/*.cpp")
file(GLOB lib_cuda               "src/cuda/*.cu*")
17

A
Andrey Kamaev 已提交
18
source_group("Include" FILES ${lib_hdrs})
19 20 21
source_group("Src\\Host" FILES ${lib_srcs} ${lib_int_hdrs})
source_group("Src\\Cuda" FILES ${lib_cuda} ${lib_cuda_hdrs})
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")
A
Andrey Kamaev 已提交
26 27 28
  file(GLOB_RECURSE ncv_cuda "src/nvidia/*.cu")
  file(GLOB_RECURSE ncv_hdrs "src/nvidia/*.hpp" "src/nvidia/*.h")
  set(ncv_files ${ncv_srcs} ${ncv_hdrs} ${ncv_cuda})
29

A
Andrey Kamaev 已提交
30
  source_group("Src\\NVidia" FILES ${ncv_files})
A
Andrey Kamaev 已提交
31
  ocv_include_directories("src/nvidia" "src/nvidia/core" "src/nvidia/NPP_staging" ${CUDA_INCLUDE_DIRS})
32
  ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wmissing-declarations /wd4211 /wd4201 /wd4100 /wd4505 /wd4408)
33
  string(REPLACE "-Wsign-promo" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
34

A
Andrey Kamaev 已提交
35 36
  #set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-keep")
  #set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-Xcompiler;/EHsc-;")
37

A
Andrey Kamaev 已提交
38
  if(MSVC)
39 40 41 42
    if(NOT ENABLE_NOISY_WARNINGS)
      foreach(var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG)
        string(REPLACE "/W4" "/W3" ${var} "${${var}}")
      endforeach()
43

44 45
      set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler /wd4251)
    endif()
A
Andrey Kamaev 已提交
46
  endif()
47
  
48
  ocv_cuda_compile(cuda_objs ${lib_cuda} ${ncv_cuda})
49

A
Andrey Kamaev 已提交
50
  #CUDA_BUILD_CLEAN_TARGET()
51

52
  set(cuda_link_libs ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY})
53

54 55 56
  if(NOT APPLE)
    unset(CUDA_nvcuvid_LIBRARY CACHE)
    find_cuda_helper_libs(nvcuvid)
57
    set(cuda_link_libs ${cuda_link_libs} ${CUDA_nvcuvid_LIBRARY})
58
  endif()
V
Vladislav Vinogradov 已提交
59

60
  if(WIN32)
V
Vladislav Vinogradov 已提交
61 62
    unset(CUDA_nvcuvenc_LIBRARY CACHE)
    find_cuda_helper_libs(nvcuvenc)
63
    set(cuda_link_libs ${cuda_link_libs} ${CUDA_nvcuvenc_LIBRARY})
V
Vladislav Vinogradov 已提交
64
  endif()
65

66
  if(NOT APPLE AND WITH_FFMPEG)
67 68
    set(cuda_link_libs ${cuda_link_libs} ${HIGHGUI_LIBRARIES})
  endif()
A
Andrey Kamaev 已提交
69 70 71 72 73
else()
  set(lib_cuda "")
  set(cuda_objs "")
  set(cuda_link_libs "")
  set(ncv_files "")
74 75
endif()

A
Andrey Kamaev 已提交
76 77 78 79
ocv_set_module_sources(
  HEADERS ${lib_hdrs}
  SOURCES ${lib_int_hdrs} ${lib_cuda_hdrs} ${lib_device_hdrs} ${lib_device_hdrs_detail} ${lib_srcs} ${lib_cuda} ${ncv_files} ${cuda_objs}
  )
80

81
ocv_create_module(${cuda_link_libs})
82

A
Andrey Kamaev 已提交
83 84 85 86 87 88 89 90
if(HAVE_CUDA)
  if(HAVE_CUFFT)
    CUDA_ADD_CUFFT_TO_TARGET(${the_module})
  endif()

  if(HAVE_CUBLAS)
    CUDA_ADD_CUBLAS_TO_TARGET(${the_module})
  endif()
91

A
Andrey Kamaev 已提交
92
  install(FILES src/nvidia/NPP_staging/NPP_staging.hpp  src/nvidia/core/NCV.hpp
A
Andrey Kamaev 已提交
93
    DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2/${name}
94
    COMPONENT main)
A
Andrey Kamaev 已提交
95
endif()
96

A
Andrey Kamaev 已提交
97
ocv_add_precompiled_headers(${the_module})
98 99 100 101

################################################################################################################
################################      GPU Module Tests     #####################################################
################################################################################################################
A
Andrey Kamaev 已提交
102 103
file(GLOB test_srcs "test/*.cpp")
file(GLOB test_hdrs "test/*.hpp" "test/*.h")
A
Andrey Kamaev 已提交
104 105

set(nvidia "")
A
Andrey Kamaev 已提交
106
if(HAVE_CUDA)
107
  file(GLOB nvidia "test/nvidia/*.cpp" "test/nvidia/*.hpp" "test/nvidia/*.h")
A
Andrey Kamaev 已提交
108
  set(nvidia FILES "Src\\\\\\\\NVidia" ${nvidia}) # 8 ugly backslashes :'(
109
endif()
110

A
Andrey Kamaev 已提交
111 112 113 114
ocv_add_accuracy_tests(FILES "Include" ${test_hdrs}
                       FILES "Src" ${test_srcs}
                       ${nvidia})
ocv_add_perf_tests()