OpenCVDetectOpenCL.cmake 2.19 KB
Newer Older
1
if(APPLE)
2
  set(OPENCL_FOUND YES)
Andrey Kamaev's avatar
Andrey Kamaev committed
3 4 5
  set(OPENCL_LIBRARY "-framework OpenCL" CACHE STRING "OpenCL library")
  set(OPENCL_INCLUDE_DIR "" CACHE STRING "OpenCL include directory")
  mark_as_advanced(OPENCL_INCLUDE_DIR OPENCL_LIBRARY)
6
  set(HAVE_OPENCL_STATIC ON)
Andrey Kamaev's avatar
Andrey Kamaev committed
7
else(APPLE)
8 9 10
  set(OPENCL_FOUND YES)
  set(HAVE_OPENCL_STATIC OFF)
  set(OPENCL_INCLUDE_DIR "${OpenCV_SOURCE_DIR}/3rdparty/include/opencl/1.2")
Andrey Kamaev's avatar
Andrey Kamaev committed
11 12 13
endif(APPLE)

if(OPENCL_FOUND)
14 15 16 17 18 19 20 21 22 23 24
  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()
Andrey Kamaev's avatar
Andrey Kamaev committed
25 26
  endif()

27
  set(HAVE_OPENCL 1)
28 29

  if(HAVE_OPENCL_STATIC)
30
    set(OPENCL_LIBRARIES "${OPENCL_LIBRARY}")
31 32
  else()
    unset(OPENCL_LIBRARIES)
33 34
  endif()

35 36
  set(OPENCL_INCLUDE_DIRS ${OPENCL_INCLUDE_DIR})

Andrey Kamaev's avatar
Andrey Kamaev committed
37 38 39 40 41 42 43 44
  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)

45
    find_path(CLAMDFFT_INCLUDE_DIR
Andrey Kamaev's avatar
Andrey Kamaev committed
46 47 48 49 50
              NAMES clAmdFft.h
              HINTS ${CLAMDFFT_ROOT_DIR}
              PATH_SUFFIXES include
              DOC "clAmdFft include directory")

51
    if(CLAMDFFT_INCLUDE_DIR)
Andrey Kamaev's avatar
Andrey Kamaev committed
52 53
      set(HAVE_CLAMDFFT 1)
      list(APPEND OPENCL_INCLUDE_DIRS "${CLAMDFFT_INCLUDE_DIR}")
54 55
    endif()
  endif()
56

Andrey Kamaev's avatar
Andrey Kamaev committed
57 58 59
  if(WITH_OPENCLAMDBLAS)
    find_path(CLAMDBLAS_ROOT_DIR
              NAMES include/clAmdBlas.h
60
              PATHS ENV CLAMDBLAS_PATH ENV ProgramFiles
Andrey Kamaev's avatar
Andrey Kamaev committed
61 62 63
              PATH_SUFFIXES clAmdBlas AMD/clAmdBlas
              DOC "AMD FFT root directory"
              NO_DEFAULT_PATH)
64

Andrey Kamaev's avatar
Andrey Kamaev committed
65 66 67 68 69
    find_path(CLAMDBLAS_INCLUDE_DIR
              NAMES clAmdBlas.h
              HINTS ${CLAMDBLAS_ROOT_DIR}
              PATH_SUFFIXES include
              DOC "clAmdFft include directory")
70

71
    if(CLAMDBLAS_INCLUDE_DIR)
Andrey Kamaev's avatar
Andrey Kamaev committed
72 73
      set(HAVE_CLAMDBLAS 1)
      list(APPEND OPENCL_INCLUDE_DIRS "${CLAMDBLAS_INCLUDE_DIR}")
74
    endif()
75
  endif()
76
endif()