mindspore/cmake/external_libs/opencl-headers.cmake

47 lines
2.3 KiB
CMake

if(ENABLE_GITEE_EULER)
set(GIT_REPOSITORY "git@gitee.com:src-openeuler/opencl-clhpp.git")
set(GIT_TAG "7347fa1bb52ebee9f3d6c44ff65ef3c4253cab79")
set(SHA256 "d41d8cd98f00b204e9800998ecf8427e")
if(EXISTS "${CMAKE_BINARY_DIR}/_deps/opencl-clhpp-src")
# Extracting tarball into git repository would make git-status tainted, and case cmake rebuild error.
# Here we clean source dir before rebuild to fix this error.
file(REMOVE_RECURSE "${CMAKE_BINARY_DIR}/_deps/opencl-clhpp-src")
file(REMOVE_RECURSE "${CMAKE_BINARY_DIR}/_deps/opencl-clhpp-build")
file(REMOVE_RECURSE "${CMAKE_BINARY_DIR}/_deps/opencl-clhpp-subbuild")
endif()
__download_pkg_with_git(OpenCL-CLHPP ${GIT_REPOSITORY} ${GIT_TAG} ${SHA256})
set(OPENCL_CLHPP_SRC "${CMAKE_BINARY_DIR}/_deps/opencl-clhpp-src")
execute_process(COMMAND tar -xf ${OPENCL_CLHPP_SRC}/v2.0.12.tar.gz --strip-components 1 -C ${OPENCL_CLHPP_SRC})
set(OPENCL_HEADER_SRC "${CMAKE_BINARY_DIR}/_deps/opencl-headers-src")
file(MAKE_DIRECTORY "${OPENCL_HEADER_SRC}")
execute_process(COMMAND tar -xf ${OPENCL_CLHPP_SRC}/v2020.12.18.tar.gz --strip-components 1 -C ${OPENCL_HEADER_SRC})
elseif(ENABLE_GITEE)
set(REQ_URL "https://gitee.com/mirrors/OpenCL-Headers/repository/archive/v2020.12.18.tar.gz")
set(SHA256 "076251b94284b931399ee525527bc9aef3f5f6f3f3b1964ae485218cc88956ba")
__download_pkg(OpenCL-Headers ${REQ_URL} ${SHA256})
else()
set(REQ_URL "https://github.com/KhronosGroup/OpenCL-Headers/archive/v2020.12.18.tar.gz")
set(SHA256 "5dad6d436c0d7646ef62a39ef6cd1f3eba0a98fc9157808dfc1d808f3705ebc2")
__download_pkg(OpenCL-Headers ${REQ_URL} ${SHA256})
endif()
function(gene_opencl CL_SRC_DIR)
message(STATUS "**********gene opencl********* cl path: " "${CL_SRC_DIR}")
if(NOT EXISTS ${CL_SRC_DIR})
return()
endif()
file(GLOB_RECURSE CL_LIST ${CL_SRC_DIR}/*.cl)
foreach(file_path ${CL_LIST})
set(out_file_path "${file_path}.inc")
file(REMOVE ${out_file_path})
string(REGEX REPLACE ".+/(.+)\\..*" "\\1" kernel_name "${file_path}")
file(READ ${file_path} cl_program)
string(CONCAT cl_str "static const std::string ${kernel_name}_source = R\"(\n" "${cl_program}" ")\";")
file(WRITE ${out_file_path} "${cl_str}")
endforeach()
endfunction()