# Taken from CMake Version 3.2.1, modified to work on older versions #.rst: # FindOpenCL # ---------- # # Try to find OpenCL # # Once done this will define:: # # OpenCL_FOUND - True if OpenCL was found # OpenCL_INCLUDE_DIRS - include directories for OpenCL # OpenCL_LIBRARIES - link against this library to use OpenCL # OpenCL_VERSION_STRING - Highest supported OpenCL version (eg. 1.2) # OpenCL_VERSION_MAJOR - The major version of the OpenCL implementation # OpenCL_VERSION_MINOR - The minor version of the OpenCL implementation # # The module will also define two cache variables:: # # OpenCL_INCLUDE_DIR - the OpenCL include directory # OpenCL_LIBRARY - the path to the OpenCL library # #============================================================================= # Copyright 2014 Matthaeus G. Chajdas # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. # # This software is distributed WITHOUT ANY WARRANTY; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the License for more information. #============================================================================= # (To distribute this file outside of CMake, substitute the full # License text for the above reference.) function(_FIND_OPENCL_VERSION) include(CheckSymbolExists) include(CMakePushCheckState) set(CMAKE_REQUIRED_QUIET ${OpenCL_FIND_QUIETLY}) CMAKE_PUSH_CHECK_STATE() foreach(VERSION "2_0" "1_2" "1_1" "1_0") set(CMAKE_REQUIRED_INCLUDES "${OpenCL_INCLUDE_DIR}") if(APPLE) CHECK_SYMBOL_EXISTS( CL_VERSION_${VERSION} "${OpenCL_INCLUDE_DIR}/OpenCL/cl.h" OPENCL_VERSION_${VERSION}) else() CHECK_SYMBOL_EXISTS( CL_VERSION_${VERSION} "${OpenCL_INCLUDE_DIR}/CL/cl.h" OPENCL_VERSION_${VERSION}) endif() if(OPENCL_VERSION_${VERSION}) string(REPLACE "_" "." VERSION "${VERSION}") set(OpenCL_VERSION_STRING ${VERSION} PARENT_SCOPE) string(REGEX MATCHALL "[0-9]+" version_components "${VERSION}") list(GET version_components 0 major_version) list(GET version_components 1 minor_version) set(OpenCL_VERSION_MAJOR ${major_version} PARENT_SCOPE) set(OpenCL_VERSION_MINOR ${minor_version} PARENT_SCOPE) break() endif() endforeach() CMAKE_POP_CHECK_STATE() endfunction() find_path(OpenCL_INCLUDE_DIR NAMES CL/cl.h OpenCL/cl.h PATHS ENV "PROGRAMFILES(X86)" ENV AMDAPPSDKROOT ENV INTELOCLSDKROOT ENV NVSDKCOMPUTE_ROOT ENV CUDA_PATH ENV ATISTREAMSDKROOT PATH_SUFFIXES include OpenCL/common/inc "AMD APP/include") _FIND_OPENCL_VERSION() if(WIN32) if(CMAKE_SIZEOF_VOID_P EQUAL 4) find_library(OpenCL_LIBRARY NAMES OpenCL PATHS ENV "PROGRAMFILES(X86)" ENV AMDAPPSDKROOT ENV INTELOCLSDKROOT ENV CUDA_PATH ENV NVSDKCOMPUTE_ROOT ENV ATISTREAMSDKROOT PATH_SUFFIXES "AMD APP/lib/x86" lib/x86 lib/Win32 OpenCL/common/lib/Win32) elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) find_library(OpenCL_LIBRARY NAMES OpenCL PATHS ENV "PROGRAMFILES(X86)" ENV AMDAPPSDKROOT ENV INTELOCLSDKROOT ENV CUDA_PATH ENV NVSDKCOMPUTE_ROOT ENV ATISTREAMSDKROOT PATH_SUFFIXES "AMD APP/lib/x86_64" lib/x86_64 lib/x64 OpenCL/common/lib/x64) endif() else() find_library(OpenCL_LIBRARY NAMES OpenCL) endif() set(OpenCL_LIBRARIES ${OpenCL_LIBRARY}) set(OpenCL_INCLUDE_DIRS ${OpenCL_INCLUDE_DIR}) #find_package_handle_standard_args not available in older CMake versions... #include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) #find_package_handle_standard_args( # OpenCL # FOUND_VAR OpenCL_FOUND # REQUIRED_VARS OpenCL_LIBRARY OpenCL_INCLUDE_DIR # VERSION_VAR OpenCL_VERSION_STRING) #mark_as_advanced( # OpenCL_INCLUDE_DIR # OpenCL_LIBRARY) # This replaces FindPackageHandleStandardArgs.cmake, which is not available in older # CMake versions if( OpenCL_LIBRARIES AND OpenCL_INCLUDE_DIRS ) set(OpenCL_FOUND 1) else() set(OpenCL_FOUND 0) endif()