|
| 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)
|
@@ -45,16 +48,43 @@ if (Vulkan_FOUND)
|
45 | 48 | add_compile_definitions(GGML_VULKAN_RUN_TESTS)
|
46 | 49 | endif()
|
47 | 50 |
|
48 |
| - add_subdirectory(vulkan-shaders) |
49 |
| - |
50 |
| - set (_ggml_vk_genshaders_cmd vulkan-shaders-gen) |
| 51 | + if (NOT CMAKE_CROSSCOMPILING) |
| 52 | + add_subdirectory(vulkan-shaders) |
| 53 | + else() |
| 54 | + include(ExternalProject) |
| 55 | + # Native build through ExternalProject_Add |
| 56 | + ExternalProject_Add( |
| 57 | + vulkan-shaders-gen |
| 58 | + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders |
| 59 | + CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release |
| 60 | + -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} |
| 61 | + -DCMAKE_TOOLCHAIN_FILE= |
| 62 | + -DCMAKE_SYSROOT= |
| 63 | + -DCMAKE_C_FLAGS=-O2 |
| 64 | + -DCMAKE_CXX_FLAGS=-O2 |
| 65 | + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER |
| 66 | + -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=NEVER |
| 67 | + -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=NEVER |
| 68 | + -DCMAKE_C_COMPILER=gcc |
| 69 | + -DCMAKE_CXX_COMPILER=g++ |
| 70 | + BUILD_COMMAND ${CMAKE_COMMAND} --build . |
| 71 | + INSTALL_COMMAND ${CMAKE_COMMAND} --install . |
| 72 | + INSTALL_DIR ${CMAKE_BINARY_DIR} |
| 73 | + ) |
| 74 | + ExternalProject_Add_StepTargets(vulkan-shaders-gen build install) |
| 75 | + endif() |
| 76 | + set (_ggml_vk_genshaders_cmd ${CMAKE_BINARY_DIR}/bin/vulkan-shaders-gen) |
51 | 77 | set (_ggml_vk_header ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.hpp)
|
52 | 78 | set (_ggml_vk_source ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.cpp)
|
53 | 79 | set (_ggml_vk_input_dir ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders)
|
54 | 80 | set (_ggml_vk_output_dir ${CMAKE_CURRENT_BINARY_DIR}/vulkan-shaders.spv)
|
55 | 81 |
|
56 | 82 | file(GLOB _ggml_vk_shader_deps "${_ggml_vk_input_dir}/*.comp")
|
57 | 83 |
|
| 84 | + if (CMAKE_CROSSCOMPILING) |
| 85 | + set(_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen-build vulkan-shaders-gen-install) |
| 86 | + endif() |
| 87 | + |
58 | 88 | add_custom_command(
|
59 | 89 | OUTPUT ${_ggml_vk_header}
|
60 | 90 | ${_ggml_vk_source}
|
|
0 commit comments