[package] name = "servoshell" build = "build.rs" version.workspace = true authors.workspace = true license.workspace = true edition.workspace = true publish.workspace = true rust-version.workspace = true [lib] name = "servoshell" path = "lib.rs" bench = false [[bin]] name = "servo" path = "main.rs" bench = false # Some of these dependencies are only needed for a specific target os, but # since build-scripts can't detect the cargo target os at build-time, we # must unconditionally add these dependencies. See https://github.com/rust-lang/cargo/issues/4932 [build-dependencies] # macOS only cc = "1.2" [target.'cfg(windows)'.build-dependencies] winres = "0.1" [package.metadata.winres] FileDescription = "Servo" LegalCopyright = "© The Servo Project Developers" OriginalFilename = "servo.exe" ProductName = "Servo" [features] crown = ["libservo/crown"] debugmozjs = ["libservo/debugmozjs"] default = ["max_log_level", "webgpu", "webxr"] jitspew = ["libservo/jitspew"] js_backtrace = ["libservo/js_backtrace"] max_log_level = ["log/release_max_level_info"] media-gstreamer = ["libservo/media-gstreamer"] native-bluetooth = ["libservo/native-bluetooth"] profilemozjs = ["libservo/profilemozjs"] refcell_backtrace = ["libservo/refcell_backtrace"] tracing = ["dep:tracing", "dep:tracing-subscriber", "libservo/tracing"] tracing-hitrace = ["tracing", "dep:hitrace"] tracing-perfetto = ["tracing", "dep:tracing-perfetto"] webgl_backtrace = ["libservo/webgl_backtrace"] webgpu = ["libservo/webgpu"] webxr = ["libservo/webxr"] vello = ["libservo/vello"] vello_cpu = ["libservo/vello_cpu"] raqote = ["libservo/raqote"] [dependencies] cfg-if = { workspace = true } constellation_traits = { workspace = true } crossbeam-channel = { workspace = true } dpi = { workspace = true } euclid = { workspace = true } getopts = { workspace = true } hitrace = { workspace = true, optional = true } image = { workspace = true } ipc-channel = { workspace = true } keyboard-types = { workspace = true } libc = { workspace = true } libservo = { path = "../../components/servo", features = ["background_hang_monitor", "bluetooth", "testbinding"] } log = { workspace = true } mime_guess = { workspace = true } raw-window-handle = { workspace = true } rustls = { workspace = true, features = ["aws-lc-rs"] } tokio = { workspace = true } tracing = { workspace = true, optional = true } tracing-perfetto = { workspace = true, optional = true } tracing-subscriber = { workspace = true, optional = true, features = ["env-filter"] } url = { workspace = true } webdriver_server = { path = "../../components/webdriver_server" } [target.'cfg(target_os = "android")'.dependencies] android_logger = "0.15" jni = "0.21.1" [target.'cfg(not(target_os = "android"))'.dependencies] backtrace = { workspace = true } [target.'cfg(target_env = "ohos")'.dependencies] env_filter = "0.1.3" euclid = { workspace = true } hilog = "0.2.2" # force inprocess until we add multi-process support for ohos ipc-channel = { workspace = true, features = ["force-inprocess"] } napi-derive-ohos = "1.0.4" napi-ohos = "1.0.4" ohos-ime = "0.4.0" ohos-ime-sys = "0.2.2" ohos-deviceinfo = "0.1.0" ohos-abilitykit-sys = { version = "0.1.2", features = ["api-14"] } ohos-vsync = "0.1.3" ohos-window-manager-sys = { version = "0.1", features = ["api-14"] } xcomponent-sys = { version = "0.3.4", features = ["api-14", "keyboard-types"] } [target.'cfg(any(target_os = "android", target_env = "ohos"))'.dependencies] nix = { workspace = true, features = ["fs"] } serde_json = { workspace = true } surfman = { workspace = true, features = ["sm-angle-default"] } [target.'cfg(not(any(target_os = "android", target_env = "ohos")))'.dependencies] accesskit_winit = "0.27" dirs = "6.0" egui = { version = "0.32.0", features = ["accesskit"] } egui-file-dialog = "0.11.0" egui-winit = { version = "0.32.0", default-features = false, features = ["accesskit", "clipboard", "wayland"] } egui_glow = { version = "0.32.0", features = ["winit"] } gilrs = "0.11.0" glow = "0.16.0" headers = { workspace = true } net = { path = "../../components/net" } net_traits = { workspace = true } serde_json = { workspace = true } # For optional feature servo_allocator/use-system-allocator servo_allocator = { path = "../../components/allocator" } surfman = { workspace = true, features = ["sm-raw-window-handle-06", "sm-x11"] } winit = { workspace = true } [target.'cfg(any(all(target_os = "linux", not(target_env = "ohos")), target_os = "macos"))'.dependencies] sig = "1.0" [target.'cfg(target_os = "windows")'.dependencies] libservo = { path = "../../components/servo", features = ["no-wgl"] } windows-sys = { workspace = true, features = ["Win32_Graphics_Gdi"] } [target.'cfg(target_os = "macos")'.dependencies] objc2-app-kit = { version = "0.3.1", default-features = false, features = [ "std", "NSColorSpace", "NSResponder", "NSView", "NSWindow", ] } objc2-foundation = { version = "0.3.1", default-features = false, features = [ "std", ] }