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