180d59932Sopenharmony_cicmake_minimum_required(VERSION 3.0) 280d59932Sopenharmony_cicmake_policy(VERSION 3.0...3.22) 380d59932Sopenharmony_ci 480d59932Sopenharmony_ci# Include guard for including this project multiple times 580d59932Sopenharmony_ciif(TARGET Headers) 680d59932Sopenharmony_ci return() 780d59932Sopenharmony_ciendif() 880d59932Sopenharmony_ci 980d59932Sopenharmony_ciproject(OpenCLHeaders 1080d59932Sopenharmony_ci VERSION 2.2 1180d59932Sopenharmony_ci LANGUAGES C # Ideally should be NONE, but GNUInstallDirs detects platform arch using try_compile 1280d59932Sopenharmony_ci # https://stackoverflow.com/questions/43379311/why-does-project-affect-cmakes-opinion-on-cmake-sizeof-void-p 1380d59932Sopenharmony_ci) 1480d59932Sopenharmony_ci 1580d59932Sopenharmony_cioption(OPENCL_HEADERS_BUILD_TESTING "Enable support for OpenCL C headers testing." OFF) 1680d59932Sopenharmony_cioption(OPENCL_HEADERS_BUILD_CXX_TESTS "Enable support for OpenCL C headers testing in C++ mode." ON) 1780d59932Sopenharmony_ci 1880d59932Sopenharmony_ciinclude(GNUInstallDirs) 1980d59932Sopenharmony_ci 2080d59932Sopenharmony_ciadd_library(Headers INTERFACE) 2180d59932Sopenharmony_ciadd_library(OpenCL::Headers ALIAS Headers) 2280d59932Sopenharmony_ci 2380d59932Sopenharmony_ciif(CMAKE_SYSTEM_NAME MATCHES Darwin) 2480d59932Sopenharmony_ci execute_process( 2580d59932Sopenharmony_ci COMMAND ln -shf ${CMAKE_CURRENT_SOURCE_DIR}/CL ${CMAKE_CURRENT_BINARY_DIR}/CL 2680d59932Sopenharmony_ci COMMAND ln -shf ${CMAKE_CURRENT_SOURCE_DIR}/CL ${CMAKE_CURRENT_BINARY_DIR}/OpenCL 2780d59932Sopenharmony_ci ) 2880d59932Sopenharmony_ci target_include_directories(Headers 2980d59932Sopenharmony_ci INTERFACE 3080d59932Sopenharmony_ci $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> 3180d59932Sopenharmony_ci $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> 3280d59932Sopenharmony_ci ) 3380d59932Sopenharmony_ci install(CODE " 3480d59932Sopenharmony_ci file(MAKE_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/CL) 3580d59932Sopenharmony_ci execute_process( 3680d59932Sopenharmony_ci COMMAND ln -shf CL ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/OpenCL 3780d59932Sopenharmony_ci )" 3880d59932Sopenharmony_ci ) 3980d59932Sopenharmony_cielse() 4080d59932Sopenharmony_ci target_include_directories(Headers 4180d59932Sopenharmony_ci INTERFACE 4280d59932Sopenharmony_ci $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> 4380d59932Sopenharmony_ci $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> 4480d59932Sopenharmony_ci ) 4580d59932Sopenharmony_ciendif() 4680d59932Sopenharmony_ci 4780d59932Sopenharmony_ciinstall( 4880d59932Sopenharmony_ci TARGETS Headers 4980d59932Sopenharmony_ci EXPORT OpenCLHeadersTargets 5080d59932Sopenharmony_ci) 5180d59932Sopenharmony_ciinstall( 5280d59932Sopenharmony_ci DIRECTORY CL 5380d59932Sopenharmony_ci DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} 5480d59932Sopenharmony_ci) 5580d59932Sopenharmony_ci 5680d59932Sopenharmony_ciexport( 5780d59932Sopenharmony_ci EXPORT OpenCLHeadersTargets 5880d59932Sopenharmony_ci FILE ${PROJECT_BINARY_DIR}/OpenCLHeaders/OpenCLHeadersTargets.cmake 5980d59932Sopenharmony_ci NAMESPACE OpenCL:: 6080d59932Sopenharmony_ci) 6180d59932Sopenharmony_cifile( 6280d59932Sopenharmony_ci WRITE ${PROJECT_BINARY_DIR}/OpenCLHeaders/OpenCLHeadersConfig.cmake 6380d59932Sopenharmony_ci "include(\"\${CMAKE_CURRENT_LIST_DIR}/OpenCLHeadersTargets.cmake\")" 6480d59932Sopenharmony_ci) 6580d59932Sopenharmony_ci 6680d59932Sopenharmony_ciset(config_package_location ${CMAKE_INSTALL_DATADIR}/cmake/OpenCLHeaders) 6780d59932Sopenharmony_ciinstall( 6880d59932Sopenharmony_ci EXPORT OpenCLHeadersTargets 6980d59932Sopenharmony_ci FILE OpenCLHeadersTargets.cmake 7080d59932Sopenharmony_ci NAMESPACE OpenCL:: 7180d59932Sopenharmony_ci DESTINATION ${config_package_location} 7280d59932Sopenharmony_ci) 7380d59932Sopenharmony_ciinstall( 7480d59932Sopenharmony_ci FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCLHeaders/OpenCLHeadersConfig.cmake 7580d59932Sopenharmony_ci DESTINATION ${config_package_location} 7680d59932Sopenharmony_ci) 7780d59932Sopenharmony_ci 7880d59932Sopenharmony_ciunset(CMAKE_SIZEOF_VOID_P) 7980d59932Sopenharmony_ciinclude(CMakePackageConfigHelpers) 8080d59932Sopenharmony_ciwrite_basic_package_version_file( 8180d59932Sopenharmony_ci ${CMAKE_CURRENT_BINARY_DIR}/OpenCLHeaders/OpenCLHeadersConfigVersion.cmake 8280d59932Sopenharmony_ci VERSION ${PROJECT_VERSION} 8380d59932Sopenharmony_ci COMPATIBILITY AnyNewerVersion 8480d59932Sopenharmony_ci) 8580d59932Sopenharmony_ciinstall( 8680d59932Sopenharmony_ci FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCLHeaders/OpenCLHeadersConfigVersion.cmake 8780d59932Sopenharmony_ci DESTINATION ${config_package_location} 8880d59932Sopenharmony_ci) 8980d59932Sopenharmony_ci 9080d59932Sopenharmony_ciif(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME OR OPENCL_HEADERS_BUILD_TESTING) 9180d59932Sopenharmony_ci include(CTest) 9280d59932Sopenharmony_ciendif() 9380d59932Sopenharmony_ciif((CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME OR OPENCL_HEADERS_BUILD_TESTING) AND BUILD_TESTING) 9480d59932Sopenharmony_ci add_subdirectory(tests) 9580d59932Sopenharmony_ciendif() 96