diff --git a/crates/cargo-gpu/Cargo.toml b/crates/cargo-gpu/Cargo.toml index 502fb62..a8a7a46 100644 --- a/crates/cargo-gpu/Cargo.toml +++ b/crates/cargo-gpu/Cargo.toml @@ -11,7 +11,7 @@ build = "build.rs" [dependencies] anyhow.workspace = true -spirv-builder-cli = { path = "../spirv-builder-cli", default-features = false } +spirv-builder-cli = { path = "../spirv-builder-cli", default-features = false, features = ["rspirv-latest"] } clap.workspace = true directories.workspace = true env_logger.workspace = true diff --git a/crates/spirv-builder-cli/Cargo.lock b/crates/spirv-builder-cli/Cargo.lock index b86b9a2..1b1c1d8 100644 --- a/crates/spirv-builder-cli/Cargo.lock +++ b/crates/spirv-builder-cli/Cargo.lock @@ -704,6 +704,7 @@ checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" dependencies = [ "bitflags 1.3.2", "num-traits", + "serde", ] [[package]] @@ -752,6 +753,7 @@ dependencies = [ "log", "serde", "serde_json", + "spirv 0.2.0+1.5.4", "spirv 0.3.0+sdk-1.3.268.0", "spirv-builder 0.9.0 (git+https://github.com/Rust-GPU/rust-gpu?rev=4c633aec)", "spirv-builder 0.9.0 (git+https://github.com/Rust-GPU/rust-gpu?rev=60dcb82)", diff --git a/crates/spirv-builder-cli/Cargo.toml b/crates/spirv-builder-cli/Cargo.toml index 2ab9ccc..da2a4e8 100644 --- a/crates/spirv-builder-cli/Cargo.toml +++ b/crates/spirv-builder-cli/Cargo.toml @@ -10,16 +10,29 @@ env_logger = "0.10" log = "0.4" serde = "1.0.214" serde_json = "1.0.132" -spirv = { version = "0.3.0", features = [ "deserialize", "serialize" ] } toml = "0.8.19" [features] default = ["spirv-builder-0_10"] # The `spirv-builder` before `cargo gpu` existed. It has an incompatible `SpirvBuilder` interface. -spirv-builder-pre-cli = ["dep:spirv-builder-pre-cli"] +spirv-builder-pre-cli = ["dep:spirv-builder-pre-cli", "dep:spirv_0_2"] # The first version that introduced `cargo gpu`. It has some extra `.builder()` args that make # dynamically changing build dependencies easier. -spirv-builder-0_10 = ["dep:spirv-builder-0_10"] +spirv-builder-0_10 = ["dep:spirv-builder-0_10", "dep:spirv_0_3"] +# +rspirv-latest = ["dep:spirv_0_3"] + +[dependencies.spirv_0_2] +package = "spirv" +version = "0.2.0" +features = [ "deserialize", "serialize" ] +optional = true + +[dependencies.spirv_0_3] +package = "spirv" +version = "0.3.0" +features = [ "deserialize", "serialize" ] +optional = true # NB: All the `${AUTO-REPLACE*}` tokens in each feature get replaced with the same values. # This is because only one feature can ever be used at once and it makes it easier to just diff --git a/crates/spirv-builder-cli/src/args.rs b/crates/spirv-builder-cli/src/args.rs index d90be15..7cae66c 100644 --- a/crates/spirv-builder-cli/src/args.rs +++ b/crates/spirv-builder-cli/src/args.rs @@ -1,3 +1,9 @@ +#[cfg(feature = "spirv-builder-pre-cli")] +use spirv_0_2 as spirv; + +#[cfg(any(feature = "spirv-builder-0_10", feature = "rspirv-latest"))] +use spirv_0_3 as spirv; + use std::str::FromStr as _; #[derive(clap::Parser, Debug, serde::Deserialize, serde::Serialize)] diff --git a/crates/spirv-builder-cli/src/lib.rs b/crates/spirv-builder-cli/src/lib.rs index 982f23d..70d83e4 100644 --- a/crates/spirv-builder-cli/src/lib.rs +++ b/crates/spirv-builder-cli/src/lib.rs @@ -1,6 +1,10 @@ pub mod args; -pub use spirv; +#[cfg(feature = "spirv-builder-pre-cli")] +pub use spirv_0_2 as spirv; + +#[cfg(any(feature = "spirv-builder-0_10", feature = "rspirv-latest"))] +pub use spirv_0_3 as spirv; /// Shader source and entry point that can be used to create shader linkage. #[derive(serde::Serialize, Debug, PartialEq, Eq, PartialOrd, Ord)]