From 0f4c1ba1631e14ff1afe751f5f0f1e86f25aafca Mon Sep 17 00:00:00 2001 From: chyyran Date: Sat, 4 Feb 2023 16:58:31 -0500 Subject: [PATCH] build: go back to submodule method but clone a minimal subset --- .gitmodules | 3 +++ README.md | 3 +++ clone_mesa.sh | 9 ++++++++ spirv-to-dxil-sys/build.rs | 3 --- spirv-to-dxil-sys/native/CMakeLists.txt | 6 +----- spirv-to-dxil-sys/native/mesa | 1 + spirv-to-dxil-sys/native/mesa-sparse-checkout | 21 +++++++++++++++++++ 7 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 clone_mesa.sh create mode 160000 spirv-to-dxil-sys/native/mesa create mode 100644 spirv-to-dxil-sys/native/mesa-sparse-checkout diff --git a/.gitmodules b/.gitmodules index e69de29..f18fa7c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "spirv-to-dxil-sys/native/mesa"] + path = spirv-to-dxil-sys/native/mesa + url = https://gitlab.freedesktop.org/mesa/mesa diff --git a/README.md b/README.md index a3d82e5..ab13b5e 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,10 @@ spirv-to-dxil-rs builds a copy of spirv-to-dxil statically from Mesa. Many of th Lex and Yacc are not required. Additionally, [CMake 3.6](https://cmake.org/) or later is required to run the build script. +A script to clone a minimal subset of Mesa required to build spirv-to-dxil has been provided. + ```bash +$ ./clone-mesa.sh $ cargo build ``` diff --git a/clone_mesa.sh b/clone_mesa.sh new file mode 100644 index 0000000..13d98b9 --- /dev/null +++ b/clone_mesa.sh @@ -0,0 +1,9 @@ +git clone --filter=blob:none --no-checkout https://gitlab.freedesktop.org/mesa/mesa +git submodule add https://gitlab.freedesktop.org/mesa/mesa spirv-to-dxil-sys/native/mesa +git submodule absorbgitdirs + +git -C spirv-to-dxil-sys/native/mesa config core.sparseCheckout true +git -C spirv-to-dxil-sys/native/mesa config core.symlinks false + +cp ./spirv-to-dxil-sys/native/mesa-sparse-checkout ./.git/modules/spirv-to-dxil-sys/native/mesa/info +git submodule update --init --force --checkout spirv-to-dxil-sys/native/mesa diff --git a/spirv-to-dxil-sys/build.rs b/spirv-to-dxil-sys/build.rs index d9d66ec..61a2a26 100644 --- a/spirv-to-dxil-sys/build.rs +++ b/spirv-to-dxil-sys/build.rs @@ -1,8 +1,6 @@ use cmake::Config; use std::{env, fs::File, path::{Path, PathBuf}}; -const MESA_HASH: &str = "13b25a6114fc226b1aa06125fa56bc5fffd900d4"; - fn main() { let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); if env::var("DOCS_RS").is_ok() { @@ -12,7 +10,6 @@ fn main() { } let cmake_dst = Config::new("native") - .define("MESA_HASH", MESA_HASH) .build_target("mesa") .build(); diff --git a/spirv-to-dxil-sys/native/CMakeLists.txt b/spirv-to-dxil-sys/native/CMakeLists.txt index 25660b5..abe9898 100644 --- a/spirv-to-dxil-sys/native/CMakeLists.txt +++ b/spirv-to-dxil-sys/native/CMakeLists.txt @@ -46,11 +46,7 @@ set(MESA_EXTRA_FLAGS ExternalProject_Add(mesa - GIT_REPOSITORY https://gitlab.freedesktop.org/mesa/mesa - GIT_TAG ${MESA_HASH} - GIT_SHALLOW true - GIT_PROGRESS true - GIT_CONFIG core.symlinks=false + URL file://${CMAKE_CURRENT_LIST_DIR}/mesa PREFIX ${CMAKE_BINARY_DIR}/mesa CONFIGURE_COMMAND cd ${CMAKE_BINARY_DIR}/mesa/src/mesa && meson setup ${CMAKE_BINARY_DIR}/mesa/src/mesa-build ${MESA_EXTRA_FLAGS} BUILD_COMMAND cd ${CMAKE_BINARY_DIR}/mesa/src/mesa-build && ninja src/vulkan/util/libvulkan_util.a && ninja src/microsoft/spirv_to_dxil/libspirv_to_dxil.a diff --git a/spirv-to-dxil-sys/native/mesa b/spirv-to-dxil-sys/native/mesa new file mode 160000 index 0000000..8f928a9 --- /dev/null +++ b/spirv-to-dxil-sys/native/mesa @@ -0,0 +1 @@ +Subproject commit 8f928a95e167423320af711b21270a8212f34628 diff --git a/spirv-to-dxil-sys/native/mesa-sparse-checkout b/spirv-to-dxil-sys/native/mesa-sparse-checkout new file mode 100644 index 0000000..4dbf242 --- /dev/null +++ b/spirv-to-dxil-sys/native/mesa-sparse-checkout @@ -0,0 +1,21 @@ +/meson.build +/src/meson.build +/bin +/include +/src/loader +/src/android_stub +/src/compiler +/src/util +/src/vulkan +/src/microsoft +/src/gallium +/src/virtio +/src/amd/common +/src/tool +/src/mesa +/src/gtest +/src/getopt +/src/mapi +/src/c11 +/VERSION +/meson_options.txt