From 81d2ec390d521ced4fde19bcddf8627bc43c414e Mon Sep 17 00:00:00 2001 From: firestar99 Date: Thu, 4 Dec 2025 14:04:45 +0100 Subject: [PATCH 1/6] dylib: allow setting `cargo ` dynamically --- crates/spirv-builder/src/lib.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/crates/spirv-builder/src/lib.rs b/crates/spirv-builder/src/lib.rs index d3082dd327..98a016497b 100644 --- a/crates/spirv-builder/src/lib.rs +++ b/crates/spirv-builder/src/lib.rs @@ -400,8 +400,12 @@ impl Default for ShaderCrateFeatures { #[cfg_attr(feature = "clap", derive(clap::Parser))] #[non_exhaustive] pub struct SpirvBuilder { + /// The path to the shader crate to compile #[cfg_attr(feature = "clap", clap(skip))] pub path_to_crate: Option, + /// The cargo command to run, formatted like `cargo {cargo_cmd} ...`. Defaults to `build`. + #[cfg_attr(feature = "clap", clap(skip))] + pub cargo_cmd: Option, /// 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))] @@ -497,6 +501,7 @@ impl Default for SpirvBuilder { fn default() -> Self { Self { path_to_crate: None, + cargo_cmd: None, print_metadata: MetadataPrintout::default(), release: true, target: None, @@ -995,14 +1000,15 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result { .join(target_dir_path) }; - let profile = if builder.release { "release" } else { "dev" }; - let mut cargo = cargo_cmd::CargoCmd::new(); if let Some(toolchain) = &builder.toolchain_overwrite { cargo.arg(format!("+{toolchain}")); } + + let cargo_cmd = builder.cargo_cmd.as_ref().map_or("build", |s| s.as_str()); + let profile = if builder.release { "release" } else { "dev" }; cargo.args([ - "build", + cargo_cmd, "--lib", "--message-format=json-render-diagnostics", "-Zbuild-std=core", From 1b6f6867aef052fa98327f02aae8ec39d3e5aa60 Mon Sep 17 00:00:00 2001 From: firestar99 Date: Thu, 4 Dec 2025 14:05:43 +0100 Subject: [PATCH 2/6] dylib: switch from `cargo build` to `cargo rustc` --- crates/spirv-builder/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/spirv-builder/src/lib.rs b/crates/spirv-builder/src/lib.rs index 98a016497b..a51f1fb358 100644 --- a/crates/spirv-builder/src/lib.rs +++ b/crates/spirv-builder/src/lib.rs @@ -403,7 +403,7 @@ pub struct SpirvBuilder { /// The path to the shader crate to compile #[cfg_attr(feature = "clap", clap(skip))] pub path_to_crate: Option, - /// The cargo command to run, formatted like `cargo {cargo_cmd} ...`. Defaults to `build`. + /// The cargo command to run, formatted like `cargo {cargo_cmd} ...`. Defaults to `rustc`. #[cfg_attr(feature = "clap", clap(skip))] pub cargo_cmd: Option, /// Whether to print build.rs cargo metadata (e.g. cargo:rustc-env=var=val). Defaults to [`MetadataPrintout::None`]. @@ -1005,7 +1005,7 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result { cargo.arg(format!("+{toolchain}")); } - let cargo_cmd = builder.cargo_cmd.as_ref().map_or("build", |s| s.as_str()); + let cargo_cmd = builder.cargo_cmd.as_ref().map_or("rustc", |s| s.as_str()); let profile = if builder.release { "release" } else { "dev" }; cargo.args([ cargo_cmd, From d7681df703dc135d370619d5dad65c5b907f04dc Mon Sep 17 00:00:00 2001 From: firestar99 Date: Thu, 4 Dec 2025 14:06:38 +0100 Subject: [PATCH 3/6] dylib: add rustc arg `--crate-type`, no longer require `crate-type` to be set in Cargo.toml --- crates/spirv-builder/src/lib.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/crates/spirv-builder/src/lib.rs b/crates/spirv-builder/src/lib.rs index a51f1fb358..3bd3c18dec 100644 --- a/crates/spirv-builder/src/lib.rs +++ b/crates/spirv-builder/src/lib.rs @@ -406,6 +406,10 @@ pub struct SpirvBuilder { /// The cargo command to run, formatted like `cargo {cargo_cmd} ...`. Defaults to `rustc`. #[cfg_attr(feature = "clap", clap(skip))] pub cargo_cmd: Option, + /// Whether the cargo command set in `cargo_cmd` behaves like `cargo rustc` and allows passing args such as + /// `--crate-type dylib`. Defaults to true if `cargo_cmd` is `None` or `Some("rustc")`. + #[cfg_attr(feature = "clap", clap(skip))] + pub cargo_cmd_like_rustc: Option, /// 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))] @@ -502,6 +506,7 @@ impl Default for SpirvBuilder { Self { path_to_crate: None, cargo_cmd: None, + cargo_cmd_like_rustc: None, print_metadata: MetadataPrintout::default(), release: true, target: None, @@ -1006,6 +1011,7 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result { } let cargo_cmd = builder.cargo_cmd.as_ref().map_or("rustc", |s| s.as_str()); + let cargo_cmd_like_rustc = builder.cargo_cmd_like_rustc.unwrap_or(cargo_cmd == "rustc"); let profile = if builder.release { "release" } else { "dev" }; cargo.args([ cargo_cmd, @@ -1016,6 +1022,14 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result { "--profile", profile, ]); + if cargo_cmd_like_rustc { + // About `crate-type`: We use it to determine whether the crate needs to be linked into shaders. For `rlib`, + // we're emitting regular rust libraries as is expected. For `dylib` or `cdylib`, we're linking all `rlib`s + // together, legalize them in many passes and emit a final `*.spv` file. Quirk: If you depend on a crate + // that has crate-type `dylib`, we also link it, and it will fail if it has no shaders, which may not be + // desired. (Gathered from reading source code and experimenting, @firestar99) + cargo.args(["--crate-type", "dylib"]); + } if let Ok(extra_cargoflags) = tracked_env_var_get("RUSTGPU_CARGOFLAGS") { cargo.args(extra_cargoflags.split_whitespace()); From 5709fb0a78e82fa9de66af7788bffdc56e7011e6 Mon Sep 17 00:00:00 2001 From: firestar99 Date: Thu, 4 Dec 2025 14:07:20 +0100 Subject: [PATCH 4/6] dylib: remove `crate-type` declarations from examples and difftests --- examples/runners/wgpu/Cargo.toml | 3 --- examples/shaders/compute-shader/Cargo.toml | 3 --- examples/shaders/mouse-shader/Cargo.toml | 3 --- examples/shaders/reduce/Cargo.toml | 3 --- examples/shaders/simplest-shader/Cargo.toml | 3 --- examples/shaders/sky-shader/Cargo.toml | 3 --- .../tests/arch/atomic_ops/atomic_ops-rust/Cargo.toml | 3 --- .../arch/memory_barriers/memory_barriers-rust/Cargo.toml | 3 --- .../tests/arch/push_constants/push_constants-rust/Cargo.toml | 3 --- .../vector_extract_insert-rust/Cargo.toml | 3 --- .../arch/workgroup_memory/workgroup_memory-ash/Cargo.toml | 4 ---- .../arch/workgroup_memory/workgroup_memory-rust/Cargo.toml | 4 ---- .../tests/lang/abi/vector_layout/rust-gpu/Cargo.toml | 3 --- .../tests/lang/abi/vector_layout_cuda/rust-gpu/Cargo.toml | 3 --- .../lang/abi/vector_layout_scalar_math/rust-gpu/Cargo.toml | 3 --- .../tests/lang/control_flow/control_flow-rust/Cargo.toml | 3 --- .../control_flow_complex/control_flow_complex-rust/Cargo.toml | 3 --- .../core/intrinsics/black_box_noop/with-black-box/Cargo.toml | 3 --- .../intrinsics/black_box_noop/without-black-box/Cargo.toml | 3 --- .../lang/core/ops/bitwise_ops/bitwise_ops-rust/Cargo.toml | 3 --- .../lang/core/ops/const_fold_int/const-expr-shader/Cargo.toml | 3 --- .../lang/core/ops/const_fold_int/const-fold-shader/Cargo.toml | 3 --- .../core/ops/const_fold_int/dynamic-values-shader/Cargo.toml | 3 --- .../tests/lang/core/ops/math_ops/math_ops-rust/Cargo.toml | 3 --- .../tests/lang/core/ops/matrix_ops/matrix_ops-rust/Cargo.toml | 3 --- .../tests/lang/core/ops/trig_ops/trig_ops-rust/Cargo.toml | 3 --- .../tests/lang/core/ops/vector_ops/vector_ops-rust/Cargo.toml | 3 --- .../core/ops/vector_swizzle/vector_swizzle-rust/Cargo.toml | 3 --- .../tests/simple-compute/simple-compute-rust/Cargo.toml | 3 --- .../storage_class/array_access/array_access-rust/Cargo.toml | 3 --- 30 files changed, 92 deletions(-) diff --git a/examples/runners/wgpu/Cargo.toml b/examples/runners/wgpu/Cargo.toml index b4e240ebc3..0cedf9e424 100644 --- a/examples/runners/wgpu/Cargo.toml +++ b/examples/runners/wgpu/Cargo.toml @@ -7,9 +7,6 @@ edition.workspace = true license.workspace = true repository.workspace = true -[lib] -crate-type = ["lib", "cdylib"] - # See rustc_codegen_spirv/Cargo.toml for details on these features [features] default = ["use-compiled-tools"] diff --git a/examples/shaders/compute-shader/Cargo.toml b/examples/shaders/compute-shader/Cargo.toml index 4a7d4324fe..67056a21a6 100644 --- a/examples/shaders/compute-shader/Cargo.toml +++ b/examples/shaders/compute-shader/Cargo.toml @@ -10,9 +10,6 @@ repository.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib", "lib"] - [dependencies] spirv-std = { workspace = true } diff --git a/examples/shaders/mouse-shader/Cargo.toml b/examples/shaders/mouse-shader/Cargo.toml index 1955c82de6..e646de26c8 100644 --- a/examples/shaders/mouse-shader/Cargo.toml +++ b/examples/shaders/mouse-shader/Cargo.toml @@ -10,9 +10,6 @@ repository.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - [dependencies] shared = { path = "../../shaders/shared" } spirv-std = { workspace = true } diff --git a/examples/shaders/reduce/Cargo.toml b/examples/shaders/reduce/Cargo.toml index a67f74232f..d5d3fb8462 100644 --- a/examples/shaders/reduce/Cargo.toml +++ b/examples/shaders/reduce/Cargo.toml @@ -10,8 +10,5 @@ repository.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib", "lib"] - [dependencies] spirv-std = { workspace = true } diff --git a/examples/shaders/simplest-shader/Cargo.toml b/examples/shaders/simplest-shader/Cargo.toml index d86220025e..6f8e461062 100644 --- a/examples/shaders/simplest-shader/Cargo.toml +++ b/examples/shaders/simplest-shader/Cargo.toml @@ -10,9 +10,6 @@ repository.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - [dependencies] spirv-std = { workspace = true } shared = { path = "../shared" } diff --git a/examples/shaders/sky-shader/Cargo.toml b/examples/shaders/sky-shader/Cargo.toml index 3fbbe6061f..67bf81339d 100644 --- a/examples/shaders/sky-shader/Cargo.toml +++ b/examples/shaders/sky-shader/Cargo.toml @@ -10,9 +10,6 @@ repository.workspace = true [lints] workspace = true -[lib] -crate-type = ["lib", "dylib"] - [dependencies] shared = { path = "../../shaders/shared" } spirv-std = { workspace = true } diff --git a/tests/difftests/tests/arch/atomic_ops/atomic_ops-rust/Cargo.toml b/tests/difftests/tests/arch/atomic_ops/atomic_ops-rust/Cargo.toml index 431fdac31a..eb7dc97be7 100644 --- a/tests/difftests/tests/arch/atomic_ops/atomic_ops-rust/Cargo.toml +++ b/tests/difftests/tests/arch/atomic_ops/atomic_ops-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # Common deps [dependencies] diff --git a/tests/difftests/tests/arch/memory_barriers/memory_barriers-rust/Cargo.toml b/tests/difftests/tests/arch/memory_barriers/memory_barriers-rust/Cargo.toml index 6b7ea4ccd3..d48ae4a706 100644 --- a/tests/difftests/tests/arch/memory_barriers/memory_barriers-rust/Cargo.toml +++ b/tests/difftests/tests/arch/memory_barriers/memory_barriers-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # GPU deps [dependencies] spirv-std.workspace = true diff --git a/tests/difftests/tests/arch/push_constants/push_constants-rust/Cargo.toml b/tests/difftests/tests/arch/push_constants/push_constants-rust/Cargo.toml index 2ba5468de4..7c56b84c7f 100644 --- a/tests/difftests/tests/arch/push_constants/push_constants-rust/Cargo.toml +++ b/tests/difftests/tests/arch/push_constants/push_constants-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # GPU deps [dependencies] spirv-std.workspace = true diff --git a/tests/difftests/tests/arch/vector_extract_insert/vector_extract_insert-rust/Cargo.toml b/tests/difftests/tests/arch/vector_extract_insert/vector_extract_insert-rust/Cargo.toml index 2481bd472d..69f627ec34 100644 --- a/tests/difftests/tests/arch/vector_extract_insert/vector_extract_insert-rust/Cargo.toml +++ b/tests/difftests/tests/arch/vector_extract_insert/vector_extract_insert-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # GPU deps [dependencies] spirv-std.workspace = true diff --git a/tests/difftests/tests/arch/workgroup_memory/workgroup_memory-ash/Cargo.toml b/tests/difftests/tests/arch/workgroup_memory/workgroup_memory-ash/Cargo.toml index 93652986fd..7c9886495e 100644 --- a/tests/difftests/tests/arch/workgroup_memory/workgroup_memory-ash/Cargo.toml +++ b/tests/difftests/tests/arch/workgroup_memory/workgroup_memory-ash/Cargo.toml @@ -5,10 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -name = "workgroup_memory_ash_shader" -crate-type = ["dylib"] - # Common deps [dependencies] diff --git a/tests/difftests/tests/arch/workgroup_memory/workgroup_memory-rust/Cargo.toml b/tests/difftests/tests/arch/workgroup_memory/workgroup_memory-rust/Cargo.toml index 2e55e489b1..f5ae49b68d 100644 --- a/tests/difftests/tests/arch/workgroup_memory/workgroup_memory-rust/Cargo.toml +++ b/tests/difftests/tests/arch/workgroup_memory/workgroup_memory-rust/Cargo.toml @@ -5,10 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -name = "workgroup_memory_rust_shader" -crate-type = ["dylib"] - # Common deps [dependencies] diff --git a/tests/difftests/tests/lang/abi/vector_layout/rust-gpu/Cargo.toml b/tests/difftests/tests/lang/abi/vector_layout/rust-gpu/Cargo.toml index e178ce6d25..192bba3ce4 100644 --- a/tests/difftests/tests/lang/abi/vector_layout/rust-gpu/Cargo.toml +++ b/tests/difftests/tests/lang/abi/vector_layout/rust-gpu/Cargo.toml @@ -2,9 +2,6 @@ name = "abi-vector-layout-rust-gpu" edition.workspace = true -[lib] -crate-type = ["lib", "dylib"] - [lints] workspace = true diff --git a/tests/difftests/tests/lang/abi/vector_layout_cuda/rust-gpu/Cargo.toml b/tests/difftests/tests/lang/abi/vector_layout_cuda/rust-gpu/Cargo.toml index 2ae5c7a13f..7ac8b0e0c0 100644 --- a/tests/difftests/tests/lang/abi/vector_layout_cuda/rust-gpu/Cargo.toml +++ b/tests/difftests/tests/lang/abi/vector_layout_cuda/rust-gpu/Cargo.toml @@ -2,9 +2,6 @@ name = "abi-vector-layout-cuda-rust-gpu" edition.workspace = true -[lib] -crate-type = ["lib", "dylib"] - [lints] workspace = true diff --git a/tests/difftests/tests/lang/abi/vector_layout_scalar_math/rust-gpu/Cargo.toml b/tests/difftests/tests/lang/abi/vector_layout_scalar_math/rust-gpu/Cargo.toml index 225553fd24..7061922523 100644 --- a/tests/difftests/tests/lang/abi/vector_layout_scalar_math/rust-gpu/Cargo.toml +++ b/tests/difftests/tests/lang/abi/vector_layout_scalar_math/rust-gpu/Cargo.toml @@ -2,9 +2,6 @@ name = "abi-vector-layout-scalar-math-rust-gpu" edition.workspace = true -[lib] -crate-type = ["lib", "dylib"] - [lints] workspace = true diff --git a/tests/difftests/tests/lang/control_flow/control_flow-rust/Cargo.toml b/tests/difftests/tests/lang/control_flow/control_flow-rust/Cargo.toml index 89b14e484b..84b1678fa6 100644 --- a/tests/difftests/tests/lang/control_flow/control_flow-rust/Cargo.toml +++ b/tests/difftests/tests/lang/control_flow/control_flow-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # Common deps [dependencies] diff --git a/tests/difftests/tests/lang/control_flow_complex/control_flow_complex-rust/Cargo.toml b/tests/difftests/tests/lang/control_flow_complex/control_flow_complex-rust/Cargo.toml index 5cf19236ff..d2a046293e 100644 --- a/tests/difftests/tests/lang/control_flow_complex/control_flow_complex-rust/Cargo.toml +++ b/tests/difftests/tests/lang/control_flow_complex/control_flow_complex-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # GPU deps [dependencies] spirv-std.workspace = true diff --git a/tests/difftests/tests/lang/core/intrinsics/black_box_noop/with-black-box/Cargo.toml b/tests/difftests/tests/lang/core/intrinsics/black_box_noop/with-black-box/Cargo.toml index 42c5fe9c79..e415ed0348 100644 --- a/tests/difftests/tests/lang/core/intrinsics/black_box_noop/with-black-box/Cargo.toml +++ b/tests/difftests/tests/lang/core/intrinsics/black_box_noop/with-black-box/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # GPU deps [dependencies] spirv-std.workspace = true diff --git a/tests/difftests/tests/lang/core/intrinsics/black_box_noop/without-black-box/Cargo.toml b/tests/difftests/tests/lang/core/intrinsics/black_box_noop/without-black-box/Cargo.toml index c1f7123aaf..f2aa58ed0b 100644 --- a/tests/difftests/tests/lang/core/intrinsics/black_box_noop/without-black-box/Cargo.toml +++ b/tests/difftests/tests/lang/core/intrinsics/black_box_noop/without-black-box/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # GPU deps [dependencies] spirv-std.workspace = true diff --git a/tests/difftests/tests/lang/core/ops/bitwise_ops/bitwise_ops-rust/Cargo.toml b/tests/difftests/tests/lang/core/ops/bitwise_ops/bitwise_ops-rust/Cargo.toml index 2392c4f90d..aeb163066f 100644 --- a/tests/difftests/tests/lang/core/ops/bitwise_ops/bitwise_ops-rust/Cargo.toml +++ b/tests/difftests/tests/lang/core/ops/bitwise_ops/bitwise_ops-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # GPU deps [dependencies] spirv-std.workspace = true diff --git a/tests/difftests/tests/lang/core/ops/const_fold_int/const-expr-shader/Cargo.toml b/tests/difftests/tests/lang/core/ops/const_fold_int/const-expr-shader/Cargo.toml index a2e86b99d3..4a72f4da21 100644 --- a/tests/difftests/tests/lang/core/ops/const_fold_int/const-expr-shader/Cargo.toml +++ b/tests/difftests/tests/lang/core/ops/const_fold_int/const-expr-shader/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # GPU deps [dependencies] const_fold_int-const-fold-cpu = { path = "../const-fold-cpu" } diff --git a/tests/difftests/tests/lang/core/ops/const_fold_int/const-fold-shader/Cargo.toml b/tests/difftests/tests/lang/core/ops/const_fold_int/const-fold-shader/Cargo.toml index 83d06ddc63..31127c8b01 100644 --- a/tests/difftests/tests/lang/core/ops/const_fold_int/const-fold-shader/Cargo.toml +++ b/tests/difftests/tests/lang/core/ops/const_fold_int/const-fold-shader/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # GPU deps [dependencies] const_fold_int-const-fold-cpu = { path = "../const-fold-cpu" } diff --git a/tests/difftests/tests/lang/core/ops/const_fold_int/dynamic-values-shader/Cargo.toml b/tests/difftests/tests/lang/core/ops/const_fold_int/dynamic-values-shader/Cargo.toml index 99b20e4891..6f8dd63b8d 100644 --- a/tests/difftests/tests/lang/core/ops/const_fold_int/dynamic-values-shader/Cargo.toml +++ b/tests/difftests/tests/lang/core/ops/const_fold_int/dynamic-values-shader/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["rlib", "dylib"] - # GPU deps [dependencies] const_fold_int-const-fold-cpu = { path = "../const-fold-cpu" } diff --git a/tests/difftests/tests/lang/core/ops/math_ops/math_ops-rust/Cargo.toml b/tests/difftests/tests/lang/core/ops/math_ops/math_ops-rust/Cargo.toml index 86d05c7de4..ee3eaba621 100644 --- a/tests/difftests/tests/lang/core/ops/math_ops/math_ops-rust/Cargo.toml +++ b/tests/difftests/tests/lang/core/ops/math_ops/math_ops-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # Common deps [dependencies] spirv-std.workspace = true diff --git a/tests/difftests/tests/lang/core/ops/matrix_ops/matrix_ops-rust/Cargo.toml b/tests/difftests/tests/lang/core/ops/matrix_ops/matrix_ops-rust/Cargo.toml index b4d32b8fcb..15179bf50c 100644 --- a/tests/difftests/tests/lang/core/ops/matrix_ops/matrix_ops-rust/Cargo.toml +++ b/tests/difftests/tests/lang/core/ops/matrix_ops/matrix_ops-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # Common deps [dependencies] spirv-std.workspace = true diff --git a/tests/difftests/tests/lang/core/ops/trig_ops/trig_ops-rust/Cargo.toml b/tests/difftests/tests/lang/core/ops/trig_ops/trig_ops-rust/Cargo.toml index 229e9f2459..c7e191d8e0 100644 --- a/tests/difftests/tests/lang/core/ops/trig_ops/trig_ops-rust/Cargo.toml +++ b/tests/difftests/tests/lang/core/ops/trig_ops/trig_ops-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # GPU deps [dependencies] spirv-std.workspace = true diff --git a/tests/difftests/tests/lang/core/ops/vector_ops/vector_ops-rust/Cargo.toml b/tests/difftests/tests/lang/core/ops/vector_ops/vector_ops-rust/Cargo.toml index 19e11d7a03..129d19170e 100644 --- a/tests/difftests/tests/lang/core/ops/vector_ops/vector_ops-rust/Cargo.toml +++ b/tests/difftests/tests/lang/core/ops/vector_ops/vector_ops-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - [dependencies] spirv-std.workspace = true difftest.workspace = true diff --git a/tests/difftests/tests/lang/core/ops/vector_swizzle/vector_swizzle-rust/Cargo.toml b/tests/difftests/tests/lang/core/ops/vector_swizzle/vector_swizzle-rust/Cargo.toml index 6cf5f5e2a3..a678ce5465 100644 --- a/tests/difftests/tests/lang/core/ops/vector_swizzle/vector_swizzle-rust/Cargo.toml +++ b/tests/difftests/tests/lang/core/ops/vector_swizzle/vector_swizzle-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # GPU deps [dependencies] spirv-std.workspace = true diff --git a/tests/difftests/tests/simple-compute/simple-compute-rust/Cargo.toml b/tests/difftests/tests/simple-compute/simple-compute-rust/Cargo.toml index ab34115943..6241c2eba7 100644 --- a/tests/difftests/tests/simple-compute/simple-compute-rust/Cargo.toml +++ b/tests/difftests/tests/simple-compute/simple-compute-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # Common deps [dependencies] diff --git a/tests/difftests/tests/storage_class/array_access/array_access-rust/Cargo.toml b/tests/difftests/tests/storage_class/array_access/array_access-rust/Cargo.toml index fb811e545d..9a1e70401b 100644 --- a/tests/difftests/tests/storage_class/array_access/array_access-rust/Cargo.toml +++ b/tests/difftests/tests/storage_class/array_access/array_access-rust/Cargo.toml @@ -5,9 +5,6 @@ edition.workspace = true [lints] workspace = true -[lib] -crate-type = ["dylib"] - # Common deps [dependencies] From d89aedd9e13a7a58d918f01eacb888ff4bc736bb Mon Sep 17 00:00:00 2001 From: firestar99 Date: Fri, 5 Dec 2025 12:32:16 +0100 Subject: [PATCH 5/6] dylib: update docs --- docs/src/writing-shader-crates.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/src/writing-shader-crates.md b/docs/src/writing-shader-crates.md index 19d1b4884f..8360577376 100644 --- a/docs/src/writing-shader-crates.md +++ b/docs/src/writing-shader-crates.md @@ -152,12 +152,9 @@ can give to a renderer. ## Writing your first shader -Configure your shader crate as a `"dylib"` type crate, and add `spirv-std` to its dependencies: +Add `spirv-std` to its dependencies: ```toml -[lib] -crate-type = ["dylib"] - [dependencies] spirv-std = { version = "0.9" } ``` From 9f842cf7751696e94101025a25a739deb4abc10e Mon Sep 17 00:00:00 2001 From: firestar99 Date: Fri, 5 Dec 2025 13:55:47 +0100 Subject: [PATCH 6/6] dylib: fix Android --- examples/runners/wgpu/Cargo.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/runners/wgpu/Cargo.toml b/examples/runners/wgpu/Cargo.toml index 0cedf9e424..48243b9ff5 100644 --- a/examples/runners/wgpu/Cargo.toml +++ b/examples/runners/wgpu/Cargo.toml @@ -7,6 +7,10 @@ edition.workspace = true license.workspace = true repository.workspace = true +[lib] +# required by cargo apk / Android +crate-type = ["lib", "cdylib"] + # See rustc_codegen_spirv/Cargo.toml for details on these features [features] default = ["use-compiled-tools"]