Blame view

3rdparty/opencv-4.5.4/cmake/OpenCVDetectOpenCL.cmake 2.79 KB
f4334277   Hu Chunming   提交3rdparty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
  set(OPENCL_FOUND ON CACHE BOOL "OpenCL library is found")
  if(APPLE)
    set(OPENCL_LIBRARY "-framework OpenCL" CACHE STRING "OpenCL library")
    set(OPENCL_INCLUDE_DIR "" CACHE PATH "OpenCL include directory")
  else()
    set(OPENCL_LIBRARY "" CACHE STRING "OpenCL library")
    set(OPENCL_INCLUDE_DIR "${OpenCV_SOURCE_DIR}/3rdparty/include/opencl/1.2" CACHE PATH "OpenCL include directory")
    ocv_install_3rdparty_licenses(opencl-headers "${OpenCV_SOURCE_DIR}/3rdparty/include/opencl/LICENSE.txt")
  endif()
  mark_as_advanced(OPENCL_INCLUDE_DIR OPENCL_LIBRARY)
  
  if(OPENCL_FOUND)
  
    if(OPENCL_LIBRARY)
      set(HAVE_OPENCL_STATIC ON)
      set(OPENCL_LIBRARIES "${OPENCL_LIBRARY}")
    else()
      set(HAVE_OPENCL_STATIC OFF)
    endif()
  
    if(NOT HAVE_OPENCL_STATIC)
      try_compile(__VALID_OPENCL
        "${OpenCV_BINARY_DIR}"
        "${OpenCV_SOURCE_DIR}/cmake/checks/opencl.cpp"
        CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${OPENCL_INCLUDE_DIR}"
        OUTPUT_VARIABLE TRY_OUT
        )
      if(NOT TRY_OUT MATCHES "OpenCL is valid")
        message(WARNING "Can't use OpenCL")
        return()
      endif()
    endif()
  
    set(HAVE_OPENCL 1)
  
    if(WITH_OPENCL_SVM)
      set(HAVE_OPENCL_SVM 1)
    endif()
  
    set(OPENCL_INCLUDE_DIRS ${OPENCL_INCLUDE_DIR})
  
    if(WITH_OPENCLAMDFFT)
      find_path(CLAMDFFT_ROOT_DIR
                NAMES include/clAmdFft.h
                PATHS ENV CLAMDFFT_PATH ENV ProgramFiles
                PATH_SUFFIXES clAmdFft AMD/clAmdFft
                DOC "AMD FFT root directory"
                NO_DEFAULT_PATH)
  
      find_path(CLAMDFFT_INCLUDE_DIR
                NAMES clAmdFft.h
                HINTS ${CLAMDFFT_ROOT_DIR}
                PATH_SUFFIXES include
                DOC "clAmdFft include directory")
  
      if(CLAMDFFT_INCLUDE_DIR)
        set(HAVE_CLAMDFFT 1)
        list(APPEND OPENCL_INCLUDE_DIRS "${CLAMDFFT_INCLUDE_DIR}")
      endif()
    endif()
  
    if(WITH_OPENCLAMDBLAS)
      find_path(CLAMDBLAS_ROOT_DIR
                NAMES include/clAmdBlas.h
                PATHS ENV CLAMDBLAS_PATH ENV ProgramFiles
                PATH_SUFFIXES clAmdBlas AMD/clAmdBlas
                DOC "AMD FFT root directory"
                NO_DEFAULT_PATH)
  
      find_path(CLAMDBLAS_INCLUDE_DIR
                NAMES clAmdBlas.h
                HINTS ${CLAMDBLAS_ROOT_DIR}
                PATH_SUFFIXES include
                DOC "clAmdFft include directory")
  
      if(CLAMDBLAS_INCLUDE_DIR)
        set(HAVE_CLAMDBLAS 1)
        list(APPEND OPENCL_INCLUDE_DIRS "${CLAMDBLAS_INCLUDE_DIR}")
      endif()
    endif()
  
    # check WITH_OPENCL_D3D11_NV is located in OpenCVDetectDirectX.cmake file
  
    if(WITH_VA_INTEL AND HAVE_VA)
      if(HAVE_OPENCL AND EXISTS "${OPENCL_INCLUDE_DIR}/CL/cl_va_api_media_sharing_intel.h")
        set(HAVE_VA_INTEL ON)
      elseif(HAVE_OPENCL AND EXISTS "${OPENCL_INCLUDE_DIR}/CL/va_ext.h")
        set(HAVE_VA_INTEL ON)
        set(HAVE_VA_INTEL_OLD_HEADER ON)
      endif()
    endif()
  
  endif()