1*1cddb830SAndroid Build Coastguard Workercmake_minimum_required (VERSION 3.1) 2*1cddb830SAndroid Build Coastguard Worker 3*1cddb830SAndroid Build Coastguard Worker# Include guard for including this project multiple times 4*1cddb830SAndroid Build Coastguard Workerif(TARGET OpenCL) 5*1cddb830SAndroid Build Coastguard Worker return() 6*1cddb830SAndroid Build Coastguard Workerendif() 7*1cddb830SAndroid Build Coastguard Worker 8*1cddb830SAndroid Build Coastguard Workerproject (OpenCL-ICD-Loader 9*1cddb830SAndroid Build Coastguard Worker VERSION 1.2 10*1cddb830SAndroid Build Coastguard Worker LANGUAGES C) 11*1cddb830SAndroid Build Coastguard Worker 12*1cddb830SAndroid Build Coastguard Workerfind_package (Threads REQUIRED) 13*1cddb830SAndroid Build Coastguard Worker 14*1cddb830SAndroid Build Coastguard Workerset(CMAKE_C_STANDARD 99) 15*1cddb830SAndroid Build Coastguard Workerset(CMAKE_C_STANDARD_REQUIRED ON) 16*1cddb830SAndroid Build Coastguard Worker# The option below allows building the ICD Loader library as a shared library 17*1cddb830SAndroid Build Coastguard Worker# (ON, default) or a static library (OFF). 18*1cddb830SAndroid Build Coastguard Worker# 19*1cddb830SAndroid Build Coastguard Worker# Khronos OpenCL Working Group strongly recommends building and using the ICD 20*1cddb830SAndroid Build Coastguard Worker# loader as a shared library due to the following benefits: 21*1cddb830SAndroid Build Coastguard Worker# 22*1cddb830SAndroid Build Coastguard Worker# 1. The shared library can be updated independent of the application. This 23*1cddb830SAndroid Build Coastguard Worker# allows releasing new fixes and features in the ICD loader without updating 24*1cddb830SAndroid Build Coastguard Worker# the application. 25*1cddb830SAndroid Build Coastguard Worker# 26*1cddb830SAndroid Build Coastguard Worker# In rare cases when there are backward-incompatible changes to the ICD 27*1cddb830SAndroid Build Coastguard Worker# loader (due to platform requirements, for instance), using a shared 28*1cddb830SAndroid Build Coastguard Worker# library allows updating the library to make the transition seamless to 29*1cddb830SAndroid Build Coastguard Worker# installed applications. 30*1cddb830SAndroid Build Coastguard Worker# 31*1cddb830SAndroid Build Coastguard Worker# 2. On platforms that require the ICD mechanism there are multiple vendors 32*1cddb830SAndroid Build Coastguard Worker# shipping their OpenCL implementations. The vendor installers collaborate 33*1cddb830SAndroid Build Coastguard Worker# to make sure that the installed ICD shared library version is suitable for 34*1cddb830SAndroid Build Coastguard Worker# working with all vendor implementations installed on the system. 35*1cddb830SAndroid Build Coastguard Worker# 36*1cddb830SAndroid Build Coastguard Worker# If applications statically link to ICD Loader then that version of the ICD 37*1cddb830SAndroid Build Coastguard Worker# loader may not work with one or more installed vendor implementations. 38*1cddb830SAndroid Build Coastguard Worker# 39*1cddb830SAndroid Build Coastguard Worker# Using the OpenCL ICD loader as a static library is NOT recommended for 40*1cddb830SAndroid Build Coastguard Worker# end-user installations in general. However in some controlled environments it 41*1cddb830SAndroid Build Coastguard Worker# may be useful to simplify the build and distribution of the application. E.g. 42*1cddb830SAndroid Build Coastguard Worker# in test farms, or in cases where the end-user system configs are known in 43*1cddb830SAndroid Build Coastguard Worker# advance. Use it with discretion. 44*1cddb830SAndroid Build Coastguard Workerif(DEFINED BUILD_SHARED_LIBS) 45*1cddb830SAndroid Build Coastguard Worker set(OPENCL_ICD_LOADER_BUILD_SHARED_LIBS_DEFAULT ${BUILD_SHARED_LIBS}) 46*1cddb830SAndroid Build Coastguard Workerelse() 47*1cddb830SAndroid Build Coastguard Worker set(OPENCL_ICD_LOADER_BUILD_SHARED_LIBS_DEFAULT ON) 48*1cddb830SAndroid Build Coastguard Workerendif() 49*1cddb830SAndroid Build Coastguard Worker option(OPENCL_ICD_LOADER_BUILD_SHARED_LIBS "Build OpenCL ICD Loader as shared library" ${OPENCL_ICD_LOADER_BUILD_SHARED_LIBS_DEFAULT}) 50*1cddb830SAndroid Build Coastguard Worker 51*1cddb830SAndroid Build Coastguard Worker# This option enables/disables support for OpenCL layers in the ICD loader. 52*1cddb830SAndroid Build Coastguard Worker# It is currently needed default while the specification is being formalized, 53*1cddb830SAndroid Build Coastguard Worker# and to study the performance impact. 54*1cddb830SAndroid Build Coastguard Workeroption (ENABLE_OPENCL_LAYERS "Enable OpenCL Layers" ON) 55*1cddb830SAndroid Build Coastguard Workerinclude(CMakeDependentOption) 56*1cddb830SAndroid Build Coastguard Workercmake_dependent_option(ENABLE_OPENCL_LAYERINFO "Enable building cllayerinfo tool" ON ENABLE_OPENCL_LAYERS OFF) 57*1cddb830SAndroid Build Coastguard Worker 58*1cddb830SAndroid Build Coastguard Workerset (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") 59*1cddb830SAndroid Build Coastguard Workerinclude(JoinPaths) 60*1cddb830SAndroid Build Coastguard Worker 61*1cddb830SAndroid Build Coastguard Workerinclude(CheckFunctionExists) 62*1cddb830SAndroid Build Coastguard Workercheck_function_exists(secure_getenv HAVE_SECURE_GETENV) 63*1cddb830SAndroid Build Coastguard Workercheck_function_exists(__secure_getenv HAVE___SECURE_GETENV) 64*1cddb830SAndroid Build Coastguard Workerconfigure_file(${CMAKE_CURRENT_SOURCE_DIR}/loader/icd_cmake_config.h.in 65*1cddb830SAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/icd_cmake_config.h) 66*1cddb830SAndroid Build Coastguard Worker 67*1cddb830SAndroid Build Coastguard Workerset (OPENCL_ICD_LOADER_SOURCES 68*1cddb830SAndroid Build Coastguard Worker loader/icd.c 69*1cddb830SAndroid Build Coastguard Worker loader/icd.h 70*1cddb830SAndroid Build Coastguard Worker loader/icd_version.h 71*1cddb830SAndroid Build Coastguard Worker loader/icd_dispatch.c 72*1cddb830SAndroid Build Coastguard Worker loader/icd_dispatch.h 73*1cddb830SAndroid Build Coastguard Worker loader/icd_dispatch_generated.c 74*1cddb830SAndroid Build Coastguard Worker loader/icd_envvars.h 75*1cddb830SAndroid Build Coastguard Worker loader/icd_platform.h) 76*1cddb830SAndroid Build Coastguard Worker 77*1cddb830SAndroid Build Coastguard Workerif (WIN32) 78*1cddb830SAndroid Build Coastguard Worker list (APPEND OPENCL_ICD_LOADER_SOURCES 79*1cddb830SAndroid Build Coastguard Worker loader/windows/adapter.h 80*1cddb830SAndroid Build Coastguard Worker loader/windows/icd_windows.c 81*1cddb830SAndroid Build Coastguard Worker loader/windows/icd_windows.h 82*1cddb830SAndroid Build Coastguard Worker loader/windows/icd_windows_dxgk.c 83*1cddb830SAndroid Build Coastguard Worker loader/windows/icd_windows_dxgk.h 84*1cddb830SAndroid Build Coastguard Worker loader/windows/icd_windows_envvars.c 85*1cddb830SAndroid Build Coastguard Worker loader/windows/icd_windows_hkr.c 86*1cddb830SAndroid Build Coastguard Worker loader/windows/icd_windows_hkr.h 87*1cddb830SAndroid Build Coastguard Worker loader/windows/icd_windows_apppackage.c 88*1cddb830SAndroid Build Coastguard Worker loader/windows/icd_windows_apppackage.h 89*1cddb830SAndroid Build Coastguard Worker loader/windows/OpenCL.rc) 90*1cddb830SAndroid Build Coastguard Worker # Only add the DXSDK include directory if the environment variable is 91*1cddb830SAndroid Build Coastguard Worker # defined. Since the DXSDK has merged into the Windows SDK, this is 92*1cddb830SAndroid Build Coastguard Worker # only required in rare cases. 93*1cddb830SAndroid Build Coastguard Worker if (DEFINED ENV{DXSDK_DIR} AND NOT (MINGW OR MSYS OR CYGWIN)) 94*1cddb830SAndroid Build Coastguard Worker include_directories ($ENV{DXSDK_DIR}/Include) 95*1cddb830SAndroid Build Coastguard Worker endif () 96*1cddb830SAndroid Build Coastguard Worker 97*1cddb830SAndroid Build Coastguard Worker # For mingw-i686 builds only we need a special .def file with stdcall 98*1cddb830SAndroid Build Coastguard Worker # exports. In all other cases we can use a standard .def file. 99*1cddb830SAndroid Build Coastguard Worker if ((CMAKE_SIZEOF_VOID_P EQUAL 4) AND (MINGW OR MSYS OR CYGWIN)) 100*1cddb830SAndroid Build Coastguard Worker list (APPEND OPENCL_ICD_LOADER_SOURCES loader/windows/OpenCL-mingw-i686.def) 101*1cddb830SAndroid Build Coastguard Worker else () 102*1cddb830SAndroid Build Coastguard Worker list (APPEND OPENCL_ICD_LOADER_SOURCES loader/windows/OpenCL.def) 103*1cddb830SAndroid Build Coastguard Worker endif () 104*1cddb830SAndroid Build Coastguard Workerelse () 105*1cddb830SAndroid Build Coastguard Worker list (APPEND OPENCL_ICD_LOADER_SOURCES 106*1cddb830SAndroid Build Coastguard Worker loader/linux/icd_linux.c 107*1cddb830SAndroid Build Coastguard Worker loader/linux/icd_linux_envvars.c 108*1cddb830SAndroid Build Coastguard Worker loader/linux/icd_exports.map) 109*1cddb830SAndroid Build Coastguard Workerendif () 110*1cddb830SAndroid Build Coastguard Worker 111*1cddb830SAndroid Build Coastguard Workerset (OPENCL_ICD_LOADER_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/inc" CACHE PATH "Path to OpenCL Headers") 112*1cddb830SAndroid Build Coastguard Worker 113*1cddb830SAndroid Build Coastguard Workerif (${OPENCL_ICD_LOADER_BUILD_SHARED_LIBS}) 114*1cddb830SAndroid Build Coastguard Worker add_library (OpenCL SHARED ${OPENCL_ICD_LOADER_SOURCES}) 115*1cddb830SAndroid Build Coastguard Workerelse() 116*1cddb830SAndroid Build Coastguard Worker add_library (OpenCL STATIC ${OPENCL_ICD_LOADER_SOURCES}) 117*1cddb830SAndroid Build Coastguard Workerendif() 118*1cddb830SAndroid Build Coastguard Worker 119*1cddb830SAndroid Build Coastguard Workeradd_library (OpenCL::OpenCL ALIAS OpenCL) 120*1cddb830SAndroid Build Coastguard Worker 121*1cddb830SAndroid Build Coastguard Workerset_target_properties (OpenCL PROPERTIES VERSION "1.2" SOVERSION "1") 122*1cddb830SAndroid Build Coastguard Worker 123*1cddb830SAndroid Build Coastguard Workerif (WIN32) 124*1cddb830SAndroid Build Coastguard Worker target_link_libraries (OpenCL PRIVATE cfgmgr32.lib runtimeobject.lib) 125*1cddb830SAndroid Build Coastguard Worker 126*1cddb830SAndroid Build Coastguard Worker # Generate a DLL without a "lib" prefix for mingw. 127*1cddb830SAndroid Build Coastguard Worker if (MINGW OR MSYS OR CYGWIN) 128*1cddb830SAndroid Build Coastguard Worker set_target_properties(OpenCL PROPERTIES PREFIX "") 129*1cddb830SAndroid Build Coastguard Worker set_target_properties(OpenCL PROPERTIES LINK_FLAGS "-Wl,-disable-stdcall-fixup") 130*1cddb830SAndroid Build Coastguard Worker endif() 131*1cddb830SAndroid Build Coastguard Workerelse() 132*1cddb830SAndroid Build Coastguard Worker target_link_libraries (OpenCL PRIVATE ${CMAKE_THREAD_LIBS_INIT}) 133*1cddb830SAndroid Build Coastguard Worker if (NOT APPLE) 134*1cddb830SAndroid Build Coastguard Worker set_target_properties (OpenCL PROPERTIES LINK_FLAGS "-Wl,--version-script -Wl,${CMAKE_CURRENT_SOURCE_DIR}/loader/linux/icd_exports.map") 135*1cddb830SAndroid Build Coastguard Worker if (OPENCL_ICD_LOADER_PIC) 136*1cddb830SAndroid Build Coastguard Worker set_target_properties(OpenCL PROPERTIES POSITION_INDEPENDENT_CODE ON) 137*1cddb830SAndroid Build Coastguard Worker endif () 138*1cddb830SAndroid Build Coastguard Worker endif () 139*1cddb830SAndroid Build Coastguard Workerendif () 140*1cddb830SAndroid Build Coastguard Worker 141*1cddb830SAndroid Build Coastguard Workerif (EXISTS ${OPENCL_ICD_LOADER_HEADERS_DIR}/CL/cl.h) 142*1cddb830SAndroid Build Coastguard Worker message (STATUS "Defining OpenCL::Headers through OPENCL_ICD_LOADER_HEADERS_DIR") 143*1cddb830SAndroid Build Coastguard Worker add_library (OpenCLHeaders INTERFACE) 144*1cddb830SAndroid Build Coastguard Worker add_library (OpenCL::Headers ALIAS OpenCLHeaders) 145*1cddb830SAndroid Build Coastguard Worker target_include_directories (OpenCLHeaders INTERFACE ${OPENCL_ICD_LOADER_HEADERS_DIR}) 146*1cddb830SAndroid Build Coastguard Worker target_include_directories (OpenCL PUBLIC $<BUILD_INTERFACE:${OPENCL_ICD_LOADER_HEADERS_DIR}>) 147*1cddb830SAndroid Build Coastguard Workerelse () 148*1cddb830SAndroid Build Coastguard Worker if (NOT TARGET OpenCL::Headers) 149*1cddb830SAndroid Build Coastguard Worker find_package (OpenCLHeaders REQUIRED) 150*1cddb830SAndroid Build Coastguard Worker endif () 151*1cddb830SAndroid Build Coastguard Worker target_link_libraries (OpenCL PUBLIC OpenCL::Headers) 152*1cddb830SAndroid Build Coastguard Workerendif () 153*1cddb830SAndroid Build Coastguard Worker 154*1cddb830SAndroid Build Coastguard Workerset (OPENCL_COMPILE_DEFINITIONS 155*1cddb830SAndroid Build Coastguard Worker CL_TARGET_OPENCL_VERSION=300 156*1cddb830SAndroid Build Coastguard Worker CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES 157*1cddb830SAndroid Build Coastguard Worker OPENCL_ICD_LOADER_VERSION_MAJOR=3 158*1cddb830SAndroid Build Coastguard Worker OPENCL_ICD_LOADER_VERSION_MINOR=0 159*1cddb830SAndroid Build Coastguard Worker OPENCL_ICD_LOADER_VERSION_REV=6 160*1cddb830SAndroid Build Coastguard Worker $<$<BOOL:${ENABLE_OPENCL_LAYERS}>:CL_ENABLE_LAYERS> 161*1cddb830SAndroid Build Coastguard Worker) 162*1cddb830SAndroid Build Coastguard Worker 163*1cddb830SAndroid Build Coastguard Workertarget_compile_definitions (OpenCL 164*1cddb830SAndroid Build Coastguard Worker PRIVATE 165*1cddb830SAndroid Build Coastguard Worker ${OPENCL_COMPILE_DEFINITIONS} 166*1cddb830SAndroid Build Coastguard Worker) 167*1cddb830SAndroid Build Coastguard Worker 168*1cddb830SAndroid Build Coastguard Workertarget_include_directories (OpenCL 169*1cddb830SAndroid Build Coastguard Worker PRIVATE 170*1cddb830SAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR} 171*1cddb830SAndroid Build Coastguard Worker loader 172*1cddb830SAndroid Build Coastguard Worker) 173*1cddb830SAndroid Build Coastguard Workertarget_link_libraries (OpenCL PUBLIC ${CMAKE_DL_LIBS}) 174*1cddb830SAndroid Build Coastguard Worker 175*1cddb830SAndroid Build Coastguard Workerif (ENABLE_OPENCL_LAYERINFO) 176*1cddb830SAndroid Build Coastguard Worker 177*1cddb830SAndroid Build Coastguard Worker set (OPENCL_LAYER_INFO_SOURCES 178*1cddb830SAndroid Build Coastguard Worker loader/cllayerinfo.c 179*1cddb830SAndroid Build Coastguard Worker ${OPENCL_ICD_LOADER_SOURCES} 180*1cddb830SAndroid Build Coastguard Worker ) 181*1cddb830SAndroid Build Coastguard Worker 182*1cddb830SAndroid Build Coastguard Worker add_executable(cllayerinfo ${OPENCL_LAYER_INFO_SOURCES}) 183*1cddb830SAndroid Build Coastguard Worker 184*1cddb830SAndroid Build Coastguard Worker add_executable(OpenCL::cllayerinfo ALIAS cllayerinfo) 185*1cddb830SAndroid Build Coastguard Worker 186*1cddb830SAndroid Build Coastguard Worker target_compile_definitions (cllayerinfo 187*1cddb830SAndroid Build Coastguard Worker PRIVATE 188*1cddb830SAndroid Build Coastguard Worker CL_LAYER_INFO 189*1cddb830SAndroid Build Coastguard Worker ${OPENCL_COMPILE_DEFINITIONS} 190*1cddb830SAndroid Build Coastguard Worker ) 191*1cddb830SAndroid Build Coastguard Worker 192*1cddb830SAndroid Build Coastguard Worker if (EXISTS ${OPENCL_ICD_LOADER_HEADERS_DIR}/CL/cl.h) 193*1cddb830SAndroid Build Coastguard Worker target_include_directories (cllayerinfo PUBLIC $<BUILD_INTERFACE:${OPENCL_ICD_LOADER_HEADERS_DIR}>) 194*1cddb830SAndroid Build Coastguard Worker else () 195*1cddb830SAndroid Build Coastguard Worker target_link_libraries (cllayerinfo PUBLIC OpenCL::Headers) 196*1cddb830SAndroid Build Coastguard Worker endif () 197*1cddb830SAndroid Build Coastguard Worker 198*1cddb830SAndroid Build Coastguard Worker if (WIN32) 199*1cddb830SAndroid Build Coastguard Worker target_link_libraries (cllayerinfo PRIVATE cfgmgr32.lib runtimeobject.lib) 200*1cddb830SAndroid Build Coastguard Worker else () 201*1cddb830SAndroid Build Coastguard Worker target_link_libraries (cllayerinfo PRIVATE ${CMAKE_THREAD_LIBS_INIT}) 202*1cddb830SAndroid Build Coastguard Worker endif () 203*1cddb830SAndroid Build Coastguard Worker 204*1cddb830SAndroid Build Coastguard Worker target_link_libraries (cllayerinfo PUBLIC ${CMAKE_DL_LIBS}) 205*1cddb830SAndroid Build Coastguard Worker 206*1cddb830SAndroid Build Coastguard Worker target_include_directories (cllayerinfo 207*1cddb830SAndroid Build Coastguard Worker PRIVATE 208*1cddb830SAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR} 209*1cddb830SAndroid Build Coastguard Worker loader 210*1cddb830SAndroid Build Coastguard Worker ) 211*1cddb830SAndroid Build Coastguard Workerendif () 212*1cddb830SAndroid Build Coastguard Worker 213*1cddb830SAndroid Build Coastguard Workeroption (OPENCL_ICD_LOADER_BUILD_TESTING "Enable support for OpenCL ICD Loader testing." OFF) 214*1cddb830SAndroid Build Coastguard Worker 215*1cddb830SAndroid Build Coastguard Workerif(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME OR OPENCL_ICD_LOADER_BUILD_TESTING) 216*1cddb830SAndroid Build Coastguard Worker include(CTest) 217*1cddb830SAndroid Build Coastguard Workerendif() 218*1cddb830SAndroid Build Coastguard Workerif((CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME OR OPENCL_ICD_LOADER_BUILD_TESTING) AND BUILD_TESTING) 219*1cddb830SAndroid Build Coastguard Worker add_subdirectory (test) 220*1cddb830SAndroid Build Coastguard Workerendif() 221*1cddb830SAndroid Build Coastguard Worker 222*1cddb830SAndroid Build Coastguard Workerinclude (GNUInstallDirs) 223*1cddb830SAndroid Build Coastguard Worker 224*1cddb830SAndroid Build Coastguard Workerinstall( 225*1cddb830SAndroid Build Coastguard Worker TARGETS OpenCL 226*1cddb830SAndroid Build Coastguard Worker EXPORT OpenCLICDLoaderTargets 227*1cddb830SAndroid Build Coastguard Worker LIBRARY 228*1cddb830SAndroid Build Coastguard Worker DESTINATION ${CMAKE_INSTALL_LIBDIR} # obtained from GNUInstallDirs 229*1cddb830SAndroid Build Coastguard Worker) 230*1cddb830SAndroid Build Coastguard Workerinstall( 231*1cddb830SAndroid Build Coastguard Worker# FILES $<TARGET_PDB_FILE:OpenCL> is cleanest, but is MSVC link.exe specific. LLVM's lld.exe and lld-link.exe don't support it (configure-time error) 232*1cddb830SAndroid Build Coastguard Worker# FILES $<TARGET_PROPERTY:OpenCL,COMPILE_PDB_OUTPUT_DIRECTORY>/OpenCL.pdb looks OK, but even though there's a PDB, this prop is empty on non-MSVC toolchains 233*1cddb830SAndroid Build Coastguard Worker FILES $<TARGET_FILE_DIR:OpenCL>/OpenCL.pdb # is the most implicit (expect PDB be next to the library), yet the only one that universally works 234*1cddb830SAndroid Build Coastguard Worker DESTINATION ${CMAKE_INSTALL_BINDIR} 235*1cddb830SAndroid Build Coastguard Worker OPTIONAL 236*1cddb830SAndroid Build Coastguard Worker) 237*1cddb830SAndroid Build Coastguard Worker 238*1cddb830SAndroid Build Coastguard Workerif (ENABLE_OPENCL_LAYERINFO) 239*1cddb830SAndroid Build Coastguard Worker install( 240*1cddb830SAndroid Build Coastguard Worker TARGETS cllayerinfo 241*1cddb830SAndroid Build Coastguard Worker EXPORT OpenCLICDLoaderTargets 242*1cddb830SAndroid Build Coastguard Worker RUNTIME 243*1cddb830SAndroid Build Coastguard Worker DESTINATION ${CMAKE_INSTALL_BINDIR} 244*1cddb830SAndroid Build Coastguard Worker ) 245*1cddb830SAndroid Build Coastguard Workerendif() 246*1cddb830SAndroid Build Coastguard Worker 247*1cddb830SAndroid Build Coastguard Workerexport( 248*1cddb830SAndroid Build Coastguard Worker EXPORT OpenCLICDLoaderTargets 249*1cddb830SAndroid Build Coastguard Worker FILE ${PROJECT_BINARY_DIR}/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake 250*1cddb830SAndroid Build Coastguard Worker NAMESPACE OpenCL:: 251*1cddb830SAndroid Build Coastguard Worker) 252*1cddb830SAndroid Build Coastguard Workerfile( 253*1cddb830SAndroid Build Coastguard Worker WRITE ${PROJECT_BINARY_DIR}/OpenCLICDLoader/OpenCLICDLoaderConfig.cmake 254*1cddb830SAndroid Build Coastguard Worker "include(\"\${CMAKE_CURRENT_LIST_DIR}/OpenCLICDLoaderTargets.cmake\")" 255*1cddb830SAndroid Build Coastguard Worker) 256*1cddb830SAndroid Build Coastguard Worker 257*1cddb830SAndroid Build Coastguard Workerset(config_package_location ${CMAKE_INSTALL_DATADIR}/cmake/OpenCLICDLoader) 258*1cddb830SAndroid Build Coastguard Workerinstall( 259*1cddb830SAndroid Build Coastguard Worker EXPORT OpenCLICDLoaderTargets 260*1cddb830SAndroid Build Coastguard Worker FILE OpenCLICDLoaderTargets.cmake 261*1cddb830SAndroid Build Coastguard Worker NAMESPACE OpenCL:: 262*1cddb830SAndroid Build Coastguard Worker DESTINATION ${config_package_location} 263*1cddb830SAndroid Build Coastguard Worker) 264*1cddb830SAndroid Build Coastguard Workerinstall( 265*1cddb830SAndroid Build Coastguard Worker FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCLICDLoader/OpenCLICDLoaderConfig.cmake 266*1cddb830SAndroid Build Coastguard Worker DESTINATION ${config_package_location} 267*1cddb830SAndroid Build Coastguard Worker) 268*1cddb830SAndroid Build Coastguard Worker 269*1cddb830SAndroid Build Coastguard Workerunset(CMAKE_SIZEOF_VOID_P) 270*1cddb830SAndroid Build Coastguard Workerinclude(CMakePackageConfigHelpers) 271*1cddb830SAndroid Build Coastguard Workerwrite_basic_package_version_file( 272*1cddb830SAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/OpenCLICDLoader/OpenCLICDLoaderConfigVersion.cmake 273*1cddb830SAndroid Build Coastguard Worker VERSION ${PROJECT_VERSION} 274*1cddb830SAndroid Build Coastguard Worker COMPATIBILITY AnyNewerVersion 275*1cddb830SAndroid Build Coastguard Worker) 276*1cddb830SAndroid Build Coastguard Workerinstall( 277*1cddb830SAndroid Build Coastguard Worker FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCLICDLoader/OpenCLICDLoaderConfigVersion.cmake 278*1cddb830SAndroid Build Coastguard Worker DESTINATION ${config_package_location} 279*1cddb830SAndroid Build Coastguard Worker) 280*1cddb830SAndroid Build Coastguard Worker 281*1cddb830SAndroid Build Coastguard Workerinstall (TARGETS OpenCL 282*1cddb830SAndroid Build Coastguard Worker RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 283*1cddb830SAndroid Build Coastguard Worker ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 284*1cddb830SAndroid Build Coastguard Worker LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) 285*1cddb830SAndroid Build Coastguard Worker 286*1cddb830SAndroid Build Coastguard Workerjoin_paths(OPENCL_LIBDIR_PC "\${exec_prefix}" "${CMAKE_INSTALL_LIBDIR}") 287*1cddb830SAndroid Build Coastguard Workerjoin_paths(OPENCL_INCLUDEDIR_PC "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") 288*1cddb830SAndroid Build Coastguard Worker 289*1cddb830SAndroid Build Coastguard Workerif (NOT MSVC) 290*1cddb830SAndroid Build Coastguard Worker configure_file(OpenCL.pc.in OpenCL.pc @ONLY) 291*1cddb830SAndroid Build Coastguard Worker set(pkg_config_location ${CMAKE_INSTALL_LIBDIR}/pkgconfig) 292*1cddb830SAndroid Build Coastguard Worker install( 293*1cddb830SAndroid Build Coastguard Worker FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL.pc 294*1cddb830SAndroid Build Coastguard Worker DESTINATION ${pkg_config_location}) 295*1cddb830SAndroid Build Coastguard Workerendif() 296