wgpu/wgpu-core/build.rs
Kevin Reid 16d41cfaf3
Make std usage optional for wgpu-core. (#7279)
* Make `wgpu_core::snatch::LockTrace` fully instead of partially conditional.

Now, when `cfg(not(debug_assertions))`, there is no `SNATCH_LOCK_TRACE`
thread local, and `LockTrace` has no data fields.

* Make `std` usage optional for `wgpu-core`.

Adds a `std` feature, enabled by default, to `wgpu-core`. When that
feature is disabled, the following functionality is not available:

* `Send + Sync` for resources.
* `trace` feature.
* `observe_locks` feature.
* Snatch lock recursive locking assertion.
2025-03-06 14:07:38 -05:00

28 lines
1.2 KiB
Rust

fn main() {
cfg_aliases::cfg_aliases! {
windows_linux_android: { any(windows, target_os = "linux", target_os = "android") },
send_sync: { all(
feature = "std",
any(
not(target_arch = "wasm32"),
all(feature = "fragile-send-sync-non-atomic-wasm", not(target_feature = "atomics"))
)
) },
dx12: { all(target_os = "windows", feature = "dx12") },
webgl: { all(target_arch = "wasm32", not(target_os = "emscripten"), feature = "webgl") },
gles: { any(
all(windows_linux_android, feature = "gles"), // Regular GLES
all(webgl), // WebGL
all(target_os = "emscripten", feature = "gles"), // Emscripten GLES
all(target_vendor = "apple", feature = "angle") // ANGLE on Apple
) },
vulkan: { any(
all(windows_linux_android, feature = "vulkan"), // Regular Vulkan
all(target_vendor = "apple", feature = "vulkan-portability") // Vulkan Portability on Apple
) },
metal: { all(target_vendor = "apple", feature = "metal") },
supports_64bit_atomics: { target_has_atomic = "64" }
}
}