|
| 1 | +cmake_minimum_required(VERSION 3.19) |
| 2 | +cmake_policy(SET CMP0114 NEW) |
| 3 | + |
1 | 4 | find_package(Vulkan COMPONENTS glslc REQUIRED)
|
2 | 5 |
|
3 | 6 | if (Vulkan_FOUND)
|
@@ -59,16 +62,43 @@ if (Vulkan_FOUND)
|
59 | 62 | add_compile_definitions(GGML_VULKAN_RUN_TESTS)
|
60 | 63 | endif()
|
61 | 64 |
|
62 |
| - add_subdirectory(vulkan-shaders) |
63 |
| - |
64 |
| - set (_ggml_vk_genshaders_cmd vulkan-shaders-gen) |
| 65 | + if (NOT CMAKE_CROSSCOMPILING) |
| 66 | + add_subdirectory(vulkan-shaders) |
| 67 | + else() |
| 68 | + include(ExternalProject) |
| 69 | + # Native build through ExternalProject_Add |
| 70 | + ExternalProject_Add( |
| 71 | + vulkan-shaders-gen |
| 72 | + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders |
| 73 | + CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release |
| 74 | + -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} |
| 75 | + -DCMAKE_TOOLCHAIN_FILE= |
| 76 | + -DCMAKE_SYSROOT= |
| 77 | + -DCMAKE_C_FLAGS=-O2 |
| 78 | + -DCMAKE_CXX_FLAGS=-O2 |
| 79 | + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER |
| 80 | + -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=NEVER |
| 81 | + -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=NEVER |
| 82 | + -DCMAKE_C_COMPILER=gcc |
| 83 | + -DCMAKE_CXX_COMPILER=g++ |
| 84 | + BUILD_COMMAND ${CMAKE_COMMAND} --build . |
| 85 | + INSTALL_COMMAND ${CMAKE_COMMAND} --install . |
| 86 | + INSTALL_DIR ${CMAKE_BINARY_DIR} |
| 87 | + ) |
| 88 | + ExternalProject_Add_StepTargets(vulkan-shaders-gen build install) |
| 89 | + endif() |
| 90 | + set (_ggml_vk_genshaders_cmd ${CMAKE_BINARY_DIR}/bin/vulkan-shaders-gen) |
65 | 91 | set (_ggml_vk_header ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.hpp)
|
66 | 92 | set (_ggml_vk_source ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.cpp)
|
67 | 93 | set (_ggml_vk_input_dir ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders)
|
68 | 94 | set (_ggml_vk_output_dir ${CMAKE_CURRENT_BINARY_DIR}/vulkan-shaders.spv)
|
69 | 95 |
|
70 | 96 | file(GLOB _ggml_vk_shader_deps "${_ggml_vk_input_dir}/*.comp")
|
71 | 97 |
|
| 98 | + if (CMAKE_CROSSCOMPILING) |
| 99 | + set(_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen-build vulkan-shaders-gen-install) |
| 100 | + endif() |
| 101 | + |
72 | 102 | add_custom_command(
|
73 | 103 | OUTPUT ${_ggml_vk_header}
|
74 | 104 | ${_ggml_vk_source}
|
|
0 commit comments