From 02c9e0a3e0b08366299f0a13f1b90c028f3d113f Mon Sep 17 00:00:00 2001 From: yao Date: Tue, 15 Jan 2013 17:14:14 +0800 Subject: [PATCH] add default clAmdFft and clAmdBlas path --- cmake/OpenCVDetectOpenCL.cmake | 204 +++++++++++++++++++++------------ 1 file changed, 132 insertions(+), 72 deletions(-) diff --git a/cmake/OpenCVDetectOpenCL.cmake b/cmake/OpenCVDetectOpenCL.cmake index d5e1da297..f8c15920a 100644 --- a/cmake/OpenCVDetectOpenCL.cmake +++ b/cmake/OpenCVDetectOpenCL.cmake @@ -1,78 +1,138 @@ if(APPLE) - set(OPENCL_FOUND YES) - set(OPENCL_LIBRARIES "-framework OpenCL") + set(OPENCL_FOUND YES) + set(OPENCL_LIBRARIES "-framework OpenCL") else() - #find_package(OpenCL QUIET) - if(WITH_OPENCLAMDFFT) - find_path(CLAMDFFT_INCLUDE_DIR - NAMES clAmdFft.h) - find_library(CLAMDFFT_LIBRARIES - NAMES clAmdFft.Runtime) + find_package(OpenCL QUIET) + if(WITH_OPENCLAMDFFT) + set(CLAMDFFT_SEARCH_PATH $ENV{CLAMDFFT_PATH}) + if(NOT CLAMDFFT_SEARCH_PATH) + if(WIN32) + set( CLAMDFFT_SEARCH_PATH "C:\\Program Files (x86)\\AMD\\clAmdFft" ) + endif() endif() - if(WITH_OPENCLAMDBLAS) - find_path(CLAMDBLAS_INCLUDE_DIR - NAMES clAmdBlas.h) - find_library(CLAMDBLAS_LIBRARIES - NAMES clAmdBlas) - endif() - # Try AMD/ATI Stream SDK - if (NOT OPENCL_FOUND) - set(ENV_AMDSTREAMSDKROOT $ENV{AMDAPPSDKROOT}) - set(ENV_OPENCLROOT $ENV{OPENCLROOT}) - set(ENV_CUDA_PATH $ENV{CUDA_PATH}) - if(ENV_AMDSTREAMSDKROOT) - set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_AMDSTREAMSDKROOT}/include) - if(CMAKE_SIZEOF_VOID_P EQUAL 4) - set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_AMDSTREAMSDKROOT}/lib/x86) - else() - set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_AMDSTREAMSDKROOT}/lib/x86_64) - endif() - elseif(ENV_CUDA_PATH AND WIN32) - set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_CUDA_PATH}/include) - if(CMAKE_SIZEOF_VOID_P EQUAL 4) - set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_CUDA_PATH}/lib/Win32) - else() - set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_CUDA_PATH}/lib/x64) - endif() - elseif(ENV_OPENCLROOT AND UNIX) - set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_OPENCLROOT}/inc) - if(CMAKE_SIZEOF_VOID_P EQUAL 4) - set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} /usr/lib) - else() - set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} /usr/lib64) - endif() - endif() - - if(OPENCL_INCLUDE_SEARCH_PATH) - find_path(OPENCL_INCLUDE_DIR - NAMES CL/cl.h OpenCL/cl.h - PATHS ${OPENCL_INCLUDE_SEARCH_PATH} - NO_DEFAULT_PATH) - else() - find_path(OPENCL_INCLUDE_DIR - NAMES CL/cl.h OpenCL/cl.h) - endif() - - if(OPENCL_LIB_SEARCH_PATH) - find_library(OPENCL_LIBRARY NAMES OpenCL PATHS ${OPENCL_LIB_SEARCH_PATH} NO_DEFAULT_PATH) - else() - find_library(OPENCL_LIBRARY NAMES OpenCL) - endif() - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args( - OPENCL - DEFAULT_MSG - OPENCL_LIBRARY OPENCL_INCLUDE_DIR - ) - - if(OPENCL_FOUND) - set(OPENCL_LIBRARIES ${OPENCL_LIBRARY}) - set(HAVE_OPENCL 1) - else() - set(OPENCL_LIBRARIES) - endif() + set( CLAMDFFT_INCLUDE_SEARCH_PATH ${CLAMDFFT_SEARCH_PATH}/include ) + if(UNIX) + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(CLAMDFFT_LIB_SEARCH_PATH /usr/lib) + else() + set(CLAMDFFT_LIB_SEARCH_PATH /usr/lib64) + endif() else() - set(HAVE_OPENCL 1) + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(CLAMDFFT_LIB_SEARCH_PATH ${CLAMDFFT_SEARCH_PATH}\\lib32\\import) + else() + set(CLAMDFFT_LIB_SEARCH_PATH ${CLAMDFFT_SEARCH_PATH}\\lib64\\import) + endif() endif() + find_path(CLAMDFFT_INCLUDE_DIR + NAMES clAmdFft.h + PATHS ${CLAMDFFT_INCLUDE_SEARCH_PATH} + PATH_SUFFIXES clAmdFft + NO_DEFAULT_PATH) + find_library(CLAMDFFT_LIBRARY + NAMES clAmdFft.Runtime + PATHS ${CLAMDFFT_LIB_SEARCH_PATH} + NO_DEFAULT_PATH) + if(CLAMDFFT_LIBRARY) + set(CLAMDFFT_LIBRARIES ${CLAMDFFT_LIBRARY}) + else() + set(CLAMDFFT_LIBRARIES "") + endif() + endif() + if(WITH_OPENCLAMDBLAS) + set(CLAMDBLAS_SEARCH_PATH $ENV{CLAMDBLAS_PATH}) + if(NOT CLAMDBLAS_SEARCH_PATH) + if(WIN32) + set( CLAMDBLAS_SEARCH_PATH "C:\\Program Files (x86)\\AMD\\clAmdBlas" ) + endif() + endif() + set( CLAMDBLAS_INCLUDE_SEARCH_PATH ${CLAMDBLAS_SEARCH_PATH}/include ) + if(UNIX) + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(CLAMDBLAS_LIB_SEARCH_PATH /usr/lib) + else() + set(CLAMDBLAS_LIB_SEARCH_PATH /usr/lib64) + endif() + else() + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(CLAMDBLAS_LIB_SEARCH_PATH ${CLAMDBLAS_SEARCH_PATH}\\lib32\\import) + else() + set(CLAMDBLAS_LIB_SEARCH_PATH ${CLAMDBLAS_SEARCH_PATH}\\lib64\\import) + endif() + endif() + find_path(CLAMDBLAS_INCLUDE_DIR + NAMES clAmdBlas.h + PATHS ${CLAMDBLAS_INCLUDE_SEARCH_PATH} + PATH_SUFFIXES clAmdBlas + NO_DEFAULT_PATH) + find_library(CLAMDBLAS_LIBRARY + NAMES clAmdBlas + PATHS ${CLAMDBLAS_LIB_SEARCH_PATH} + NO_DEFAULT_PATH) + if(CLAMDBLAS_LIBRARY) + set(CLAMDBLAS_LIBRARIES ${CLAMDBLAS_LIBRARY}) + else() + set(CLAMDBLAS_LIBRARIES "") + endif() + endif() + # Try AMD/ATI Stream SDK + if (NOT OPENCL_FOUND) + set(ENV_AMDSTREAMSDKROOT $ENV{AMDAPPSDKROOT}) + set(ENV_OPENCLROOT $ENV{OPENCLROOT}) + set(ENV_CUDA_PATH $ENV{CUDA_PATH}) + if(ENV_AMDSTREAMSDKROOT) + set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_AMDSTREAMSDKROOT}/include) + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_AMDSTREAMSDKROOT}/lib/x86) + else() + set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_AMDSTREAMSDKROOT}/lib/x86_64) + endif() + elseif(ENV_CUDA_PATH AND WIN32) + set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_CUDA_PATH}/include) + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_CUDA_PATH}/lib/Win32) + else() + set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_CUDA_PATH}/lib/x64) + endif() + elseif(ENV_OPENCLROOT AND UNIX) + set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_OPENCLROOT}/inc) + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} /usr/lib) + else() + set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} /usr/lib64) + endif() + endif() + + if(OPENCL_INCLUDE_SEARCH_PATH) + find_path(OPENCL_INCLUDE_DIR + NAMES CL/cl.h OpenCL/cl.h + PATHS ${OPENCL_INCLUDE_SEARCH_PATH} + NO_DEFAULT_PATH) + else() + find_path(OPENCL_INCLUDE_DIR + NAMES CL/cl.h OpenCL/cl.h) + endif() + + if(OPENCL_LIB_SEARCH_PATH) + find_library(OPENCL_LIBRARY NAMES OpenCL PATHS ${OPENCL_LIB_SEARCH_PATH} NO_DEFAULT_PATH) + else() + find_library(OPENCL_LIBRARY NAMES OpenCL) + endif() + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args( + OPENCL + DEFAULT_MSG + OPENCL_LIBRARY OPENCL_INCLUDE_DIR + ) + + if(OPENCL_FOUND) + set(OPENCL_LIBRARIES ${OPENCL_LIBRARY}) + set(HAVE_OPENCL 1) + else() + set(OPENCL_LIBRARIES) + endif() + else() + set(HAVE_OPENCL 1) + endif() endif()