You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

vulkan.cmake 1.8 kB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. if(ENABLE_GITEE)
  2. set(REQ_URL "https://gitee.com/mirrors/Vulkan-Headers/archive/v1.2.144.zip")
  3. set(MD5 "8797a525aff953ea536ebe338a9f5ef6")
  4. set(PKG_GIT_TAG "")
  5. __download_pkg_with_git(Vulkan-Headers ${REQ_URL} ${PKG_GIT_TAG} ${MD5})
  6. else()
  7. set(REQ_URL "https://github.com/KhronosGroup/Vulkan-Headers/archive/v1.2.144.zip")
  8. set(MD5 "91eae880a0ad9ad77c89d79b95b7399a")
  9. __download_pkg(Vulkan-Headers ${REQ_URL} ${MD5})
  10. endif()
  11. function(gene_spirv BASEPATH)
  12. string(CONCAT CL_SRC_DIR "${BASEPATH}" "/src/runtime/kernel/vulkan/glsl")
  13. message(STATUS "**********gene spirv*********base path: " "${BASEPATH}" ", glsl path: " "${CL_SRC_DIR}")
  14. if(NOT EXISTS ${CL_SRC_DIR})
  15. return()
  16. endif()
  17. file(GLOB_RECURSE CL_LIST ${CL_SRC_DIR}/*.cl)
  18. foreach(file_path ${CL_LIST})
  19. file(REMOVE ${file_path}.inc)
  20. string(REGEX REPLACE ".+/(.+)\\..*" "\\1" kernel_name "${file_path}")
  21. set(inc_file_ex "${kernel_name}.cl.inc")
  22. execute_process(
  23. COMMAND bash -c "sed 's/\\\\/\\\\\\\\/g' "
  24. COMMAND bash -c "sed 's/\\\"/\\\\\\\"/g' "
  25. COMMAND bash -c "sed 's/$/\\\\n\\\" \\\\/' "
  26. COMMAND bash -c "sed 's/^/\\\"/' "
  27. WORKING_DIRECTORY ${CL_SRC_DIR}
  28. INPUT_FILE ${file_path}
  29. OUTPUT_FILE ${inc_file_ex}
  30. RESULT_VARIABLE RESULT)
  31. if(NOT RESULT EQUAL "0")
  32. message(FATAL_ERROR "error! when generate ${inc_file_ex}")
  33. endif()
  34. __exec_cmd(COMMAND sed -i
  35. "1i\\static const char *${kernel_name}_source =\\\"\\\\n\\\" \\\\"
  36. ${inc_file_ex} WORKING_DIRECTORY ${CL_SRC_DIR}
  37. )
  38. __exec_cmd(COMMAND sed -i "$a\\\\\;" ${inc_file_ex} WORKING_DIRECTORY ${CL_SRC_DIR})
  39. endforeach()
  40. endfunction()