1if(ENABLE_GITEE_EULER) 2 set(GIT_REPOSITORY "git@gitee.com:src-openeuler/opencl-clhpp.git") 3 set(GIT_TAG "7347fa1bb52ebee9f3d6c44ff65ef3c4253cab79") 4 set(SHA256 "d41d8cd98f00b204e9800998ecf8427e") 5 6 if(EXISTS "${CMAKE_BINARY_DIR}/_deps/opencl-clhpp-src") 7 # Extracting tarball into git repository would make git-status tainted, and case cmake rebuild error. 8 # Here we clean source dir before rebuild to fix this error. 9 file(REMOVE_RECURSE "${CMAKE_BINARY_DIR}/_deps/opencl-clhpp-src") 10 file(REMOVE_RECURSE "${CMAKE_BINARY_DIR}/_deps/opencl-clhpp-build") 11 file(REMOVE_RECURSE "${CMAKE_BINARY_DIR}/_deps/opencl-clhpp-subbuild") 12 endif() 13 14 __download_pkg_with_git(OpenCL-CLHPP ${GIT_REPOSITORY} ${GIT_TAG} ${SHA256}) 15 set(OPENCL_CLHPP_SRC "${CMAKE_BINARY_DIR}/_deps/opencl-clhpp-src") 16 execute_process(COMMAND tar -xf ${OPENCL_CLHPP_SRC}/v2.0.12.tar.gz --strip-components 1 -C ${OPENCL_CLHPP_SRC}) 17 18 set(OPENCL_HEADER_SRC "${CMAKE_BINARY_DIR}/_deps/opencl-headers-src") 19 file(MAKE_DIRECTORY "${OPENCL_HEADER_SRC}") 20 execute_process(COMMAND tar -xf ${OPENCL_CLHPP_SRC}/v2020.12.18.tar.gz --strip-components 1 -C ${OPENCL_HEADER_SRC}) 21elseif(ENABLE_GITEE) 22 set(REQ_URL "https://gitee.com/mirrors/OpenCL-Headers/repository/archive/v2020.12.18.tar.gz")# VER v2020.12.18 23 set(SHA256 "076251b94284b931399ee525527bc9aef3f5f6f3f3b1964ae485218cc88956ba") 24 __download_pkg(OpenCL-Headers ${REQ_URL} ${SHA256}) 25else() 26 set(REQ_URL "https://github.com/KhronosGroup/OpenCL-Headers/archive/v2020.12.18.tar.gz") 27 set(SHA256 "5dad6d436c0d7646ef62a39ef6cd1f3eba0a98fc9157808dfc1d808f3705ebc2") 28 __download_pkg(OpenCL-Headers ${REQ_URL} ${SHA256}) 29endif() 30 31function(gene_opencl CL_SRC_DIR) 32 message(STATUS "**********gene opencl********* cl path: " "${CL_SRC_DIR}") 33 if(NOT EXISTS ${CL_SRC_DIR}) 34 return() 35 endif() 36 file(GLOB_RECURSE CL_LIST ${CL_SRC_DIR}/*.cl) 37 foreach(file_path ${CL_LIST}) 38 set(out_file_path "${file_path}.inc") 39 file(REMOVE ${out_file_path}) 40 41 string(REGEX REPLACE ".+/(.+)\\..*" "\\1" kernel_name "${file_path}") 42 file(READ ${file_path} cl_program) 43 string(CONCAT cl_str "static const std::string ${kernel_name}_source = R\"(\n" "${cl_program}" ")\";") 44 file(WRITE ${out_file_path} "${cl_str}") 45 endforeach() 46endfunction() 47