softbuffer/Cargo.toml
John Nunley c0e8723081
x11: Use POSIX shared memory in X11 backend
The X11 backend used System-V shared memory to communicate shared
buffers to the server, but rustix does not support SysV SHM so we had to
use libc in this backend. However, there is an alternate X11 API which
uses POSIX shared memory, which rustix does support. This PR switches
the X11 backend to POSIX shared memory and purges the previous
usages of libc.

The goal is to remove libc totally. Therefore this PR also removes the
default libc dependency from rustix.

Signed-off-by: John Nunley <dev@notgull.net>
2023-10-17 19:15:15 -07:00

121 lines
3.7 KiB
TOML

[package]
name = "softbuffer"
version = "0.3.1"
edition = "2021"
license = "MIT OR Apache-2.0"
description = "Cross-platform software buffer"
documentation = "https://docs.rs/softbuffer"
readme = "README.md"
repository = "https://github.com/rust-windowing/softbuffer"
keywords = ["framebuffer", "windowing"]
categories = ["game-development", "graphics", "gui", "multimedia", "rendering"]
exclude = ["examples"]
rust-version = "1.65.0"
[[bench]]
name = "buffer_mut"
harness = false
[features]
default = ["kms", "x11", "x11-dlopen", "wayland", "wayland-dlopen"]
kms = ["bytemuck", "drm", "rustix"]
wayland = ["wayland-backend", "wayland-client", "memmap2", "rustix", "fastrand"]
wayland-dlopen = ["wayland-sys/dlopen"]
x11 = ["as-raw-xcb-connection", "bytemuck", "fastrand", "rustix", "tiny-xlib", "x11rb"]
x11-dlopen = ["tiny-xlib/dlopen", "x11rb/dl-libxcb"]
[dependencies]
log = "0.4.17"
raw-window-handle = "0.5.0"
[target.'cfg(all(unix, not(any(target_vendor = "apple", target_os = "android", target_os = "redox"))))'.dependencies]
as-raw-xcb-connection = { version = "1.0.0", optional = true }
bytemuck = { version = "1.12.3", optional = true }
drm = { version = "0.10.0", default-features = false, optional = true }
fastrand = { version = "2.0.0", optional = true }
memmap2 = { version = "0.9.0", optional = true }
rustix = { version = "0.38.19", features = ["fs", "mm", "shm", "std"], default-features = false, optional = true }
tiny-xlib = { version = "0.2.1", optional = true }
wayland-backend = { version = "0.3.0", features = ["client_system"], optional = true }
wayland-client = { version = "0.31.0", optional = true }
wayland-sys = "0.31.0"
x11rb = { version = "0.12.0", features = ["allow-unsafe-code", "shm"], optional = true }
[target.'cfg(target_os = "windows")'.dependencies.windows-sys]
version = "0.48.0"
features = ["Win32_Graphics_Gdi", "Win32_UI_WindowsAndMessaging", "Win32_Foundation"]
[target.'cfg(target_os = "macos")'.dependencies]
bytemuck = { version = "1.12.3", features = ["extern_crate_alloc"] }
cocoa = "0.25.0"
core-graphics = "0.23.1"
foreign-types = "0.5.0"
objc = "0.2.7"
[target.'cfg(target_arch = "wasm32")'.dependencies]
js-sys = "0.3.63"
wasm-bindgen = "0.2.86"
[target.'cfg(target_arch = "wasm32")'.dependencies.web-sys]
version = "0.3.55"
features = [
"CanvasRenderingContext2d",
"Document",
"Element",
"HtmlCanvasElement",
"ImageData",
"OffscreenCanvas",
"OffscreenCanvasRenderingContext2d",
"Window",
]
[target.'cfg(target_os = "redox")'.dependencies]
redox_syscall = "0.4"
[build-dependencies]
cfg_aliases = "0.1.1"
[dev-dependencies]
colorous = "1.0.12"
criterion = { version = "0.4.0", default-features = false, features = ["cargo_bench_support"] }
instant = "0.1.12"
winit = "0.28.1"
winit-test = "0.1.0"
[dev-dependencies.image]
version = "0.24.6"
# Disable rayon on web
default-features = false
features = ["jpeg"]
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
# Turn rayon back on everywhere else; creating the separate entry resets the features to default.
image = "0.24.6"
rayon = "1.5.1"
[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
wasm-bindgen-test = "0.3"
[target.'cfg(all(unix, not(any(target_vendor = "apple", target_os = "android", target_os = "redox"))))'.dev-dependencies]
rustix = { version = "0.38.8", features = ["event"] }
[workspace]
members = [
"run-wasm",
]
[[test]]
name = "present_and_fetch"
path = "tests/present_and_fetch.rs"
harness = false
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
default-target = "x86_64-unknown-linux-gnu"
targets = [
"x86_64-pc-windows-msvc",
"x86_64-apple-darwin",
"x86_64-unknown-linux-gnu",
"wasm32-unknown-unknown",
]