From f45b4c39014f55aff118fd000df9fc0c4f488516 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Mon, 26 May 2025 10:44:52 +0200 Subject: [PATCH 1/7] move target specs to new `rustc_codegen_spirv_target_specs` crate --- Cargo.lock | 6 +++++ Cargo.toml | 2 ++ .../Cargo.toml | 12 +++++++++ .../README.md | 7 +++++ .../src/include_str.rs} | 0 .../src/lib.rs | 10 +++++++ .../target-specs/spirv-unknown-opengl4.0.json | 0 .../target-specs/spirv-unknown-opengl4.1.json | 0 .../target-specs/spirv-unknown-opengl4.2.json | 0 .../target-specs/spirv-unknown-opengl4.3.json | 0 .../target-specs/spirv-unknown-opengl4.5.json | 0 .../target-specs/spirv-unknown-spv1.0.json | 0 .../target-specs/spirv-unknown-spv1.1.json | 0 .../target-specs/spirv-unknown-spv1.2.json | 0 .../target-specs/spirv-unknown-spv1.3.json | 0 .../target-specs/spirv-unknown-spv1.4.json | 0 .../target-specs/spirv-unknown-spv1.5.json | 0 .../target-specs/spirv-unknown-vulkan1.0.json | 0 .../target-specs/spirv-unknown-vulkan1.1.json | 0 .../spirv-unknown-vulkan1.1spv1.4.json | 0 .../target-specs/spirv-unknown-vulkan1.2.json | 0 crates/spirv-builder/Cargo.toml | 18 +++++++------ crates/spirv-builder/src/lib.rs | 26 ++++++++++++------- docs/src/writing-shader-crates.md | 2 +- tests/Cargo.toml | 3 ++- tests/src/main.rs | 6 ++--- 26 files changed, 68 insertions(+), 24 deletions(-) create mode 100644 crates/rustc_codegen_spirv_target_specs/Cargo.toml create mode 100644 crates/rustc_codegen_spirv_target_specs/README.md rename crates/{spirv-builder/src/target_specs.rs => rustc_codegen_spirv_target_specs/src/include_str.rs} (100%) create mode 100644 crates/rustc_codegen_spirv_target_specs/src/lib.rs rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-opengl4.0.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-opengl4.1.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-opengl4.2.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-opengl4.3.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-opengl4.5.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-spv1.0.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-spv1.1.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-spv1.2.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-spv1.3.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-spv1.4.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-spv1.5.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-vulkan1.0.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-vulkan1.1.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-vulkan1.1spv1.4.json (100%) rename crates/{spirv-builder => rustc_codegen_spirv_target_specs}/target-specs/spirv-unknown-vulkan1.2.json (100%) diff --git a/Cargo.lock b/Cargo.lock index 080c4c1f4b..6d2ce208e9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -498,6 +498,7 @@ dependencies = [ "compiletest_rs", "itertools", "rustc_codegen_spirv", + "rustc_codegen_spirv_target_specs", ] [[package]] @@ -2356,6 +2357,10 @@ dependencies = [ "spirv", ] +[[package]] +name = "rustc_codegen_spirv_target_specs" +version = "0.9.0" + [[package]] name = "rustc_version" version = "0.4.1" @@ -2662,6 +2667,7 @@ dependencies = [ "raw-string", "rustc_codegen_spirv", "rustc_codegen_spirv-types", + "rustc_codegen_spirv_target_specs", "semver", "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index 13b1c0337f..56df504c03 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,7 @@ members = [ "crates/rustc_codegen_spirv", "crates/rustc_codegen_spirv-types", + "crates/rustc_codegen_spirv_target_specs", "crates/spirv-builder", "crates/spirv-std", "crates/spirv-std/shared", @@ -46,6 +47,7 @@ spirv-std-macros = { path = "./crates/spirv-std/macros", version = "=0.9.0" } spirv-tools = { version = "0.11", default-features = false } rustc_codegen_spirv = { path = "./crates/rustc_codegen_spirv", version = "=0.9.0", default-features = false } rustc_codegen_spirv-types = { path = "./crates/rustc_codegen_spirv-types", version = "=0.9.0" } +rustc_codegen_spirv_target_specs = { path = "./crates/rustc_codegen_spirv_target_specs", version = "=0.9.0" } tracing = "0.1" tracing-subscriber = { version = "0.3.3", features = ["env-filter", "json"] } diff --git a/crates/rustc_codegen_spirv_target_specs/Cargo.toml b/crates/rustc_codegen_spirv_target_specs/Cargo.toml new file mode 100644 index 0000000000..1cc9dfdd4e --- /dev/null +++ b/crates/rustc_codegen_spirv_target_specs/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "rustc_codegen_spirv_target_specs" +description = "target spec json files of rust-gpu for the rustc compiler" +version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true + +[features] +include_str = [] +dir_path = [] diff --git a/crates/rustc_codegen_spirv_target_specs/README.md b/crates/rustc_codegen_spirv_target_specs/README.md new file mode 100644 index 0000000000..d21caeba20 --- /dev/null +++ b/crates/rustc_codegen_spirv_target_specs/README.md @@ -0,0 +1,7 @@ +# `rustc_codegen_spirv_target_spec` + +The target spec json files of rust-gpu to hand to the rustc compiler, declaring various metadata about our codegen backend. + +## Features +* `include_str`: include target specs as string constants, for bundling with `cargo-gpu` +* `dir_path`: export a path to the target specs dir, for `spirv-builder` and `compiletest` in this repo diff --git a/crates/spirv-builder/src/target_specs.rs b/crates/rustc_codegen_spirv_target_specs/src/include_str.rs similarity index 100% rename from crates/spirv-builder/src/target_specs.rs rename to crates/rustc_codegen_spirv_target_specs/src/include_str.rs diff --git a/crates/rustc_codegen_spirv_target_specs/src/lib.rs b/crates/rustc_codegen_spirv_target_specs/src/lib.rs new file mode 100644 index 0000000000..b3033d9fee --- /dev/null +++ b/crates/rustc_codegen_spirv_target_specs/src/lib.rs @@ -0,0 +1,10 @@ +#![doc = include_str!("../README.md")] + +/// directory with all the `target-specs` jsons for our codegen backend +#[cfg(feature = "dir_path")] +pub const TARGET_SPEC_DIR_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/target-specs"); + +#[cfg(feature = "include_str")] +mod include_str; +#[cfg(feature = "include_str")] +pub use include_str::TARGET_SPECS; diff --git a/crates/spirv-builder/target-specs/spirv-unknown-opengl4.0.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.0.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-opengl4.0.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.0.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-opengl4.1.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.1.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-opengl4.1.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.1.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-opengl4.2.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.2.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-opengl4.2.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.2.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-opengl4.3.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.3.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-opengl4.3.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.3.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-opengl4.5.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.5.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-opengl4.5.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.5.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-spv1.0.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.0.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-spv1.0.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.0.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-spv1.1.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.1.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-spv1.1.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.1.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-spv1.2.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.2.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-spv1.2.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.2.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-spv1.3.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.3.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-spv1.3.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.3.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-spv1.4.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.4.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-spv1.4.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.4.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-spv1.5.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.5.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-spv1.5.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.5.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-vulkan1.0.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.0.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-vulkan1.0.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.0.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-vulkan1.1.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.1.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-vulkan1.1.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.1.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-vulkan1.1spv1.4.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.1spv1.4.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-vulkan1.1spv1.4.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.1spv1.4.json diff --git a/crates/spirv-builder/target-specs/spirv-unknown-vulkan1.2.json b/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.2.json similarity index 100% rename from crates/spirv-builder/target-specs/spirv-unknown-vulkan1.2.json rename to crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.2.json diff --git a/crates/spirv-builder/Cargo.toml b/crates/spirv-builder/Cargo.toml index 545085c114..b709bcfe89 100644 --- a/crates/spirv-builder/Cargo.toml +++ b/crates/spirv-builder/Cargo.toml @@ -22,21 +22,23 @@ default = ["use-compiled-tools"] # Compile `rustc_codegen_spirv`, allows constructing SpirvBuilder without # explicitly passing in a path to a compiled `rustc_codegen_spirv.so` (or dll) rustc_codegen_spirv = ["dep:rustc_codegen_spirv"] +# Inclide target spec json files, allows constructing SpirvBuilder without +# explicitly passing a path to the target spec json +include_target_specs = ["dep:rustc_codegen_spirv_target_specs"] # See `rustc_codegen_spirv/Cargo.toml` for details on these features. -use-installed-tools = ["rustc_codegen_spirv", "rustc_codegen_spirv?/use-installed-tools"] -use-compiled-tools = ["rustc_codegen_spirv", "rustc_codegen_spirv?/use-compiled-tools"] +# We add new "default" features to `use-installed-tools` and `use-compiled-tools` to keep +# backwards compat with `default-features = false, features = "use-installed-tools"` setups +use-installed-tools = ["rustc_codegen_spirv", "include_target_specs", "rustc_codegen_spirv?/use-installed-tools"] +use-compiled-tools = ["rustc_codegen_spirv", "include_target_specs", "rustc_codegen_spirv?/use-compiled-tools"] skip-toolchain-check = ["rustc_codegen_spirv?/skip-toolchain-check"] watch = ["dep:notify"] clap = ["dep:clap"] [dependencies] -# See comment in `src/lib.rs` `invoke_rustc` regarding `rustc_codegen_spirv` dep. -rustc_codegen_spirv.workspace = true -# HACK(eddyb) see `docs.rs`-related comment above for why this is optional. -rustc_codegen_spirv.optional = true - -rustc_codegen_spirv-types.workspace = true +rustc_codegen_spirv = { workspace = true, optional = true } +rustc_codegen_spirv-types = { workspace = true } +rustc_codegen_spirv_target_specs = { workspace = true, features = ["dir_path"], optional = true } memchr = "2.4" raw-string = "0.3.5" diff --git a/crates/spirv-builder/src/lib.rs b/crates/spirv-builder/src/lib.rs index ea017ed526..0839de2467 100644 --- a/crates/spirv-builder/src/lib.rs +++ b/crates/spirv-builder/src/lib.rs @@ -73,7 +73,6 @@ #![doc = include_str!("../README.md")] mod depfile; -mod target_specs; #[cfg(feature = "watch")] mod watch; @@ -91,7 +90,9 @@ use thiserror::Error; pub use rustc_codegen_spirv_types::Capability; pub use rustc_codegen_spirv_types::{CompileResult, ModuleResult}; -pub use target_specs::TARGET_SPECS; + +#[cfg(feature = "include_target_specs")] +pub use rustc_codegen_spirv_target_specs::TARGET_SPEC_DIR_PATH; #[derive(Debug, Error)] #[non_exhaustive] @@ -107,11 +108,16 @@ pub enum SpirvBuilderError { #[error("crate path '{0}' does not exist")] CratePathDoesntExist(PathBuf), #[error( - "Without feature `rustc_codegen_spirv`, you need to set the path of the dylib using `rustc_codegen_spirv_location(...)`" + "Without feature `rustc_codegen_spirv`, you need to set the path of the dylib with `rustc_codegen_spirv_location`" )] MissingRustcCodegenSpirvDylib, #[error("`rustc_codegen_spirv_location` path '{0}' is not a file")] RustcCodegenSpirvDylibDoesNotExist(PathBuf), + #[error( + "Without feature `include_target_specs`, instead of setting a `target`, \ + you need to set the path of the target spec file of your particular target with `path_to_target_spec`" + )] + MissingTargetSpec, #[error("build failed")] BuildFailed, #[error("multi-module build cannot be used with print_metadata = MetadataPrintout::Full")] @@ -975,13 +981,13 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result { // target_spec jsons, some later version requires them, some earlier // version fails with them (notably our 0.9.0 release) if toolchain_rustc_version >= Version::new(1, 76, 0) { - cargo - .arg("--target") - .arg(builder.path_to_target_spec.clone().unwrap_or_else(|| { - PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("target-specs") - .join(format!("{}.json", target)) - })); + let path = builder.path_to_target_spec.clone(); + let path = if cfg!(feature = "include_target_specs") { + path.unwrap_or_else(|| PathBuf::from(format!("{TARGET_SPEC_DIR_PATH}/{target}.json"))) + } else { + path.ok_or(SpirvBuilderError::MissingTargetSpec)? + }; + cargo.arg("--target").arg(path); } else { cargo.arg("--target").arg(target); } diff --git a/docs/src/writing-shader-crates.md b/docs/src/writing-shader-crates.md index 91ef93d081..4b4541227c 100644 --- a/docs/src/writing-shader-crates.md +++ b/docs/src/writing-shader-crates.md @@ -120,7 +120,7 @@ how to build SPIR-V. Here are a few things we need to mention there. - Path to a spec of a target you're compiling for (see [platform support](./platform-support.md)). These specs reside in a directory inside the `spirv-builder` crate and an example relative path - could look like `../rust-gpu/crates/spirv-builder/target-specs/spirv-unknown-spv1.3.json`. + could look like `../rust-gpu/crates/rustc_codegen_spirv-types/target-specs/spirv-unknown-spv1.3.json`. - Absolute path to the `rustc_codegen_spirv` dynamic library that we built above. - Some additional options. diff --git a/tests/Cargo.toml b/tests/Cargo.toml index 6d12c9a5f3..27d5fe5146 100644 --- a/tests/Cargo.toml +++ b/tests/Cargo.toml @@ -15,6 +15,7 @@ use-compiled-tools = ["rustc_codegen_spirv/use-compiled-tools"] [dependencies] compiletest = { version = "0.11.2", package = "compiletest_rs" } -rustc_codegen_spirv.workspace = true +rustc_codegen_spirv = { workspace = true } +rustc_codegen_spirv_target_specs = { workspace = true, features = ["dir_path"] } clap = { version = "4", features = ["derive"] } itertools = "0.10.5" diff --git a/tests/src/main.rs b/tests/src/main.rs index 551e6eb92f..c2947bd35d 100644 --- a/tests/src/main.rs +++ b/tests/src/main.rs @@ -1,5 +1,6 @@ use clap::Parser; use itertools::Itertools as _; +use rustc_codegen_spirv_target_specs::TARGET_SPEC_DIR_PATH; use std::{ env, io, path::{Path, PathBuf}, @@ -30,10 +31,7 @@ impl Opt { const SPIRV_TARGET_PREFIX: &str = "spirv-unknown-"; fn target_spec_json(target: &str) -> String { - format!( - "{}/../crates/spirv-builder/target-specs/{target}.json", - env!("CARGO_MANIFEST_DIR") - ) + format!("{TARGET_SPEC_DIR_PATH}/{target}.json") } #[derive(Copy, Clone)] From 475a06e96ea7b9d7056ed0e4fe184ad702b872e4 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Mon, 26 May 2025 12:51:43 +0200 Subject: [PATCH 2/7] fix `spirv-builder` with `default-features = false` failing to compile --- crates/spirv-builder/src/lib.rs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/crates/spirv-builder/src/lib.rs b/crates/spirv-builder/src/lib.rs index 0839de2467..689096f697 100644 --- a/crates/spirv-builder/src/lib.rs +++ b/crates/spirv-builder/src/lib.rs @@ -981,12 +981,17 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result { // target_spec jsons, some later version requires them, some earlier // version fails with them (notably our 0.9.0 release) if toolchain_rustc_version >= Version::new(1, 76, 0) { - let path = builder.path_to_target_spec.clone(); - let path = if cfg!(feature = "include_target_specs") { - path.unwrap_or_else(|| PathBuf::from(format!("{TARGET_SPEC_DIR_PATH}/{target}.json"))) - } else { - path.ok_or(SpirvBuilderError::MissingTargetSpec)? - }; + let path_opt = builder.path_to_target_spec.clone(); + let path; + #[cfg(feature = "include_target_specs")] + { + path = path_opt + .unwrap_or_else(|| PathBuf::from(format!("{TARGET_SPEC_DIR_PATH}/{target}.json"))); + } + #[cfg(not(feature = "include_target_specs"))] + { + path = path_opt.ok_or(SpirvBuilderError::MissingTargetSpec)?; + } cargo.arg("--target").arg(path); } else { cargo.arg("--target").arg(target); From b77676e69f25878fc13056a07fcd0573bc96b168 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Mon, 26 May 2025 12:55:44 +0200 Subject: [PATCH 3/7] make `rustc_codegen_spirv` depend on `rustc_codegen_spirv_target_specs` for cargo gpu --- Cargo.lock | 1 + crates/rustc_codegen_spirv/Cargo.toml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 6d2ce208e9..a29fb48794 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2336,6 +2336,7 @@ dependencies = [ "rspirv", "rustc-demangle", "rustc_codegen_spirv-types", + "rustc_codegen_spirv_target_specs", "rustix", "sanitize-filename", "smallvec", diff --git a/crates/rustc_codegen_spirv/Cargo.toml b/crates/rustc_codegen_spirv/Cargo.toml index f863d086d9..58422fcd0e 100644 --- a/crates/rustc_codegen_spirv/Cargo.toml +++ b/crates/rustc_codegen_spirv/Cargo.toml @@ -61,6 +61,9 @@ tracing.workspace = true tracing-subscriber.workspace = true tracing-tree = "0.3.0" +# required for cargo gpu to resolve the needed target specs +rustc_codegen_spirv_target_specs.workspace = true + [dev-dependencies] pretty_assertions = "1.0" From 21294b3e604b1083e256e31911b7eb1ac69e40c7 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Tue, 27 May 2025 12:38:45 +0200 Subject: [PATCH 4/7] remove `non_exhaustive` from `SpirvBuilder` --- crates/spirv-builder/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/spirv-builder/src/lib.rs b/crates/spirv-builder/src/lib.rs index 689096f697..0e7ab1d0eb 100644 --- a/crates/spirv-builder/src/lib.rs +++ b/crates/spirv-builder/src/lib.rs @@ -358,7 +358,6 @@ impl Default for ShaderCrateFeatures { } } -#[non_exhaustive] #[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] #[cfg_attr(feature = "clap", derive(clap::Parser))] pub struct SpirvBuilder { From 86edfffac1d2fe349211576617ffc22a176de2a3 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Wed, 28 May 2025 14:43:28 +0200 Subject: [PATCH 5/7] fix `SpirvBuilder::print_metadata` docs --- crates/spirv-builder/src/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/spirv-builder/src/lib.rs b/crates/spirv-builder/src/lib.rs index 0e7ab1d0eb..08d00de1d4 100644 --- a/crates/spirv-builder/src/lib.rs +++ b/crates/spirv-builder/src/lib.rs @@ -363,7 +363,8 @@ impl Default for ShaderCrateFeatures { pub struct SpirvBuilder { #[cfg_attr(feature = "clap", clap(skip))] pub path_to_crate: Option, - /// Whether to print build.rs cargo metadata (e.g. cargo:rustc-env=var=val). Defaults to [`MetadataPrintout::Full`]. + /// Whether to print build.rs cargo metadata (e.g. cargo:rustc-env=var=val). Defaults to [`MetadataPrintout::None`]. + /// Within build scripts, set it to [`MetadataPrintout::DependencyOnly`] or [`MetadataPrintout::Full`] to ensure the build script is rerun on code changes. #[cfg_attr(feature = "clap", clap(skip))] pub print_metadata: MetadataPrintout, /// Build in release. Defaults to true. From 81b1af4cadf47522cced4968ced8ed45d915d4c8 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Wed, 28 May 2025 19:19:36 +0200 Subject: [PATCH 6/7] rename `rustc_codegen_spirv_target_specs` to `rustc_codegen_spirv-target-specs` --- Cargo.lock | 14 +++++++------- Cargo.toml | 4 ++-- .../Cargo.toml | 2 +- .../README.md | 2 +- .../src/include_str.rs | 0 .../src/lib.rs | 0 .../target-specs/spirv-unknown-opengl4.0.json | 0 .../target-specs/spirv-unknown-opengl4.1.json | 0 .../target-specs/spirv-unknown-opengl4.2.json | 0 .../target-specs/spirv-unknown-opengl4.3.json | 0 .../target-specs/spirv-unknown-opengl4.5.json | 0 .../target-specs/spirv-unknown-spv1.0.json | 0 .../target-specs/spirv-unknown-spv1.1.json | 0 .../target-specs/spirv-unknown-spv1.2.json | 0 .../target-specs/spirv-unknown-spv1.3.json | 0 .../target-specs/spirv-unknown-spv1.4.json | 0 .../target-specs/spirv-unknown-spv1.5.json | 0 .../target-specs/spirv-unknown-vulkan1.0.json | 0 .../target-specs/spirv-unknown-vulkan1.1.json | 0 .../spirv-unknown-vulkan1.1spv1.4.json | 0 .../target-specs/spirv-unknown-vulkan1.2.json | 0 crates/rustc_codegen_spirv/Cargo.toml | 2 +- crates/spirv-builder/Cargo.toml | 4 ++-- docs/src/writing-shader-crates.md | 2 +- tests/Cargo.toml | 2 +- 25 files changed, 16 insertions(+), 16 deletions(-) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/Cargo.toml (85%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/README.md (89%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/src/include_str.rs (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/src/lib.rs (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-opengl4.0.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-opengl4.1.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-opengl4.2.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-opengl4.3.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-opengl4.5.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-spv1.0.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-spv1.1.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-spv1.2.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-spv1.3.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-spv1.4.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-spv1.5.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-vulkan1.0.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-vulkan1.1.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-vulkan1.1spv1.4.json (100%) rename crates/{rustc_codegen_spirv_target_specs => rustc_codegen_spirv-target-specs}/target-specs/spirv-unknown-vulkan1.2.json (100%) diff --git a/Cargo.lock b/Cargo.lock index a29fb48794..0038aed6fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -498,7 +498,7 @@ dependencies = [ "compiletest_rs", "itertools", "rustc_codegen_spirv", - "rustc_codegen_spirv_target_specs", + "rustc_codegen_spirv-target-specs", ] [[package]] @@ -2335,8 +2335,8 @@ dependencies = [ "regex", "rspirv", "rustc-demangle", + "rustc_codegen_spirv-target-specs", "rustc_codegen_spirv-types", - "rustc_codegen_spirv_target_specs", "rustix", "sanitize-filename", "smallvec", @@ -2348,6 +2348,10 @@ dependencies = [ "tracing-tree", ] +[[package]] +name = "rustc_codegen_spirv-target-specs" +version = "0.9.0" + [[package]] name = "rustc_codegen_spirv-types" version = "0.9.0" @@ -2358,10 +2362,6 @@ dependencies = [ "spirv", ] -[[package]] -name = "rustc_codegen_spirv_target_specs" -version = "0.9.0" - [[package]] name = "rustc_version" version = "0.4.1" @@ -2667,8 +2667,8 @@ dependencies = [ "notify", "raw-string", "rustc_codegen_spirv", + "rustc_codegen_spirv-target-specs", "rustc_codegen_spirv-types", - "rustc_codegen_spirv_target_specs", "semver", "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index 56df504c03..d5d439a7a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ members = [ "crates/rustc_codegen_spirv", "crates/rustc_codegen_spirv-types", - "crates/rustc_codegen_spirv_target_specs", + "crates/rustc_codegen_spirv-target-specs", "crates/spirv-builder", "crates/spirv-std", "crates/spirv-std/shared", @@ -47,7 +47,7 @@ spirv-std-macros = { path = "./crates/spirv-std/macros", version = "=0.9.0" } spirv-tools = { version = "0.11", default-features = false } rustc_codegen_spirv = { path = "./crates/rustc_codegen_spirv", version = "=0.9.0", default-features = false } rustc_codegen_spirv-types = { path = "./crates/rustc_codegen_spirv-types", version = "=0.9.0" } -rustc_codegen_spirv_target_specs = { path = "./crates/rustc_codegen_spirv_target_specs", version = "=0.9.0" } +rustc_codegen_spirv-target-specs = { path = "crates/rustc_codegen_spirv-target-specs", version = "=0.9.0" } tracing = "0.1" tracing-subscriber = { version = "0.3.3", features = ["env-filter", "json"] } diff --git a/crates/rustc_codegen_spirv_target_specs/Cargo.toml b/crates/rustc_codegen_spirv-target-specs/Cargo.toml similarity index 85% rename from crates/rustc_codegen_spirv_target_specs/Cargo.toml rename to crates/rustc_codegen_spirv-target-specs/Cargo.toml index 1cc9dfdd4e..76e6e2c106 100644 --- a/crates/rustc_codegen_spirv_target_specs/Cargo.toml +++ b/crates/rustc_codegen_spirv-target-specs/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "rustc_codegen_spirv_target_specs" +name = "rustc_codegen_spirv-target-specs" description = "target spec json files of rust-gpu for the rustc compiler" version.workspace = true authors.workspace = true diff --git a/crates/rustc_codegen_spirv_target_specs/README.md b/crates/rustc_codegen_spirv-target-specs/README.md similarity index 89% rename from crates/rustc_codegen_spirv_target_specs/README.md rename to crates/rustc_codegen_spirv-target-specs/README.md index d21caeba20..9b0bc4d74a 100644 --- a/crates/rustc_codegen_spirv_target_specs/README.md +++ b/crates/rustc_codegen_spirv-target-specs/README.md @@ -1,4 +1,4 @@ -# `rustc_codegen_spirv_target_spec` +# `rustc_codegen_spirv-target-specs` The target spec json files of rust-gpu to hand to the rustc compiler, declaring various metadata about our codegen backend. diff --git a/crates/rustc_codegen_spirv_target_specs/src/include_str.rs b/crates/rustc_codegen_spirv-target-specs/src/include_str.rs similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/src/include_str.rs rename to crates/rustc_codegen_spirv-target-specs/src/include_str.rs diff --git a/crates/rustc_codegen_spirv_target_specs/src/lib.rs b/crates/rustc_codegen_spirv-target-specs/src/lib.rs similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/src/lib.rs rename to crates/rustc_codegen_spirv-target-specs/src/lib.rs diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.0.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-opengl4.0.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.0.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-opengl4.0.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.1.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-opengl4.1.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.1.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-opengl4.1.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.2.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-opengl4.2.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.2.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-opengl4.2.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.3.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-opengl4.3.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.3.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-opengl4.3.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.5.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-opengl4.5.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-opengl4.5.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-opengl4.5.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.0.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-spv1.0.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.0.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-spv1.0.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.1.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-spv1.1.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.1.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-spv1.1.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.2.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-spv1.2.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.2.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-spv1.2.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.3.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-spv1.3.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.3.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-spv1.3.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.4.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-spv1.4.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.4.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-spv1.4.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.5.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-spv1.5.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-spv1.5.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-spv1.5.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.0.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-vulkan1.0.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.0.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-vulkan1.0.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.1.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-vulkan1.1.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.1.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-vulkan1.1.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.1spv1.4.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-vulkan1.1spv1.4.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.1spv1.4.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-vulkan1.1spv1.4.json diff --git a/crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.2.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-vulkan1.2.json similarity index 100% rename from crates/rustc_codegen_spirv_target_specs/target-specs/spirv-unknown-vulkan1.2.json rename to crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-vulkan1.2.json diff --git a/crates/rustc_codegen_spirv/Cargo.toml b/crates/rustc_codegen_spirv/Cargo.toml index 58422fcd0e..5af8dbea20 100644 --- a/crates/rustc_codegen_spirv/Cargo.toml +++ b/crates/rustc_codegen_spirv/Cargo.toml @@ -62,7 +62,7 @@ tracing-subscriber.workspace = true tracing-tree = "0.3.0" # required for cargo gpu to resolve the needed target specs -rustc_codegen_spirv_target_specs.workspace = true +rustc_codegen_spirv-target-specs.workspace = true [dev-dependencies] pretty_assertions = "1.0" diff --git a/crates/spirv-builder/Cargo.toml b/crates/spirv-builder/Cargo.toml index b709bcfe89..6abbf7b5a8 100644 --- a/crates/spirv-builder/Cargo.toml +++ b/crates/spirv-builder/Cargo.toml @@ -24,7 +24,7 @@ default = ["use-compiled-tools"] rustc_codegen_spirv = ["dep:rustc_codegen_spirv"] # Inclide target spec json files, allows constructing SpirvBuilder without # explicitly passing a path to the target spec json -include_target_specs = ["dep:rustc_codegen_spirv_target_specs"] +include_target_specs = ["dep:rustc_codegen_spirv-target-specs"] # See `rustc_codegen_spirv/Cargo.toml` for details on these features. # We add new "default" features to `use-installed-tools` and `use-compiled-tools` to keep # backwards compat with `default-features = false, features = "use-installed-tools"` setups @@ -38,7 +38,7 @@ clap = ["dep:clap"] [dependencies] rustc_codegen_spirv = { workspace = true, optional = true } rustc_codegen_spirv-types = { workspace = true } -rustc_codegen_spirv_target_specs = { workspace = true, features = ["dir_path"], optional = true } +rustc_codegen_spirv-target-specs = { workspace = true, features = ["dir_path"], optional = true } memchr = "2.4" raw-string = "0.3.5" diff --git a/docs/src/writing-shader-crates.md b/docs/src/writing-shader-crates.md index 4b4541227c..19d1b4884f 100644 --- a/docs/src/writing-shader-crates.md +++ b/docs/src/writing-shader-crates.md @@ -120,7 +120,7 @@ how to build SPIR-V. Here are a few things we need to mention there. - Path to a spec of a target you're compiling for (see [platform support](./platform-support.md)). These specs reside in a directory inside the `spirv-builder` crate and an example relative path - could look like `../rust-gpu/crates/rustc_codegen_spirv-types/target-specs/spirv-unknown-spv1.3.json`. + could look like `../rust-gpu/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-spv1.3.json`. - Absolute path to the `rustc_codegen_spirv` dynamic library that we built above. - Some additional options. diff --git a/tests/Cargo.toml b/tests/Cargo.toml index 27d5fe5146..b03db33b8e 100644 --- a/tests/Cargo.toml +++ b/tests/Cargo.toml @@ -16,6 +16,6 @@ use-compiled-tools = ["rustc_codegen_spirv/use-compiled-tools"] [dependencies] compiletest = { version = "0.11.2", package = "compiletest_rs" } rustc_codegen_spirv = { workspace = true } -rustc_codegen_spirv_target_specs = { workspace = true, features = ["dir_path"] } +rustc_codegen_spirv-target-specs = { workspace = true, features = ["dir_path"] } clap = { version = "4", features = ["derive"] } itertools = "0.10.5" From 9b19c61c5b9dc03a28605a2f79859c7652644bd6 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Thu, 29 May 2025 10:54:52 +0200 Subject: [PATCH 7/7] rename feature `include_target_specs` to `include-target-specs` --- crates/spirv-builder/Cargo.toml | 6 +++--- crates/spirv-builder/src/lib.rs | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/crates/spirv-builder/Cargo.toml b/crates/spirv-builder/Cargo.toml index 6abbf7b5a8..d8d2e68c95 100644 --- a/crates/spirv-builder/Cargo.toml +++ b/crates/spirv-builder/Cargo.toml @@ -24,12 +24,12 @@ default = ["use-compiled-tools"] rustc_codegen_spirv = ["dep:rustc_codegen_spirv"] # Inclide target spec json files, allows constructing SpirvBuilder without # explicitly passing a path to the target spec json -include_target_specs = ["dep:rustc_codegen_spirv-target-specs"] +include-target-specs = ["dep:rustc_codegen_spirv-target-specs"] # See `rustc_codegen_spirv/Cargo.toml` for details on these features. # We add new "default" features to `use-installed-tools` and `use-compiled-tools` to keep # backwards compat with `default-features = false, features = "use-installed-tools"` setups -use-installed-tools = ["rustc_codegen_spirv", "include_target_specs", "rustc_codegen_spirv?/use-installed-tools"] -use-compiled-tools = ["rustc_codegen_spirv", "include_target_specs", "rustc_codegen_spirv?/use-compiled-tools"] +use-installed-tools = ["rustc_codegen_spirv", "include-target-specs", "rustc_codegen_spirv?/use-installed-tools"] +use-compiled-tools = ["rustc_codegen_spirv", "include-target-specs", "rustc_codegen_spirv?/use-compiled-tools"] skip-toolchain-check = ["rustc_codegen_spirv?/skip-toolchain-check"] watch = ["dep:notify"] diff --git a/crates/spirv-builder/src/lib.rs b/crates/spirv-builder/src/lib.rs index 08d00de1d4..80cc8ad246 100644 --- a/crates/spirv-builder/src/lib.rs +++ b/crates/spirv-builder/src/lib.rs @@ -91,7 +91,7 @@ use thiserror::Error; pub use rustc_codegen_spirv_types::Capability; pub use rustc_codegen_spirv_types::{CompileResult, ModuleResult}; -#[cfg(feature = "include_target_specs")] +#[cfg(feature = "include-target-specs")] pub use rustc_codegen_spirv_target_specs::TARGET_SPEC_DIR_PATH; #[derive(Debug, Error)] @@ -114,7 +114,7 @@ pub enum SpirvBuilderError { #[error("`rustc_codegen_spirv_location` path '{0}' is not a file")] RustcCodegenSpirvDylibDoesNotExist(PathBuf), #[error( - "Without feature `include_target_specs`, instead of setting a `target`, \ + "Without feature `include-target-specs`, instead of setting a `target`, \ you need to set the path of the target spec file of your particular target with `path_to_target_spec`" )] MissingTargetSpec, @@ -983,12 +983,12 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result { if toolchain_rustc_version >= Version::new(1, 76, 0) { let path_opt = builder.path_to_target_spec.clone(); let path; - #[cfg(feature = "include_target_specs")] + #[cfg(feature = "include-target-specs")] { path = path_opt .unwrap_or_else(|| PathBuf::from(format!("{TARGET_SPEC_DIR_PATH}/{target}.json"))); } - #[cfg(not(feature = "include_target_specs"))] + #[cfg(not(feature = "include-target-specs"))] { path = path_opt.ok_or(SpirvBuilderError::MissingTargetSpec)?; }