[package] name = "futuresdr" version = "0.0.37" authors = ["FutureSDR Contributors "] edition = "2021" rust-version = "1.60" license = "Apache-2.0" homepage = "https://www.futuresdr.org" repository = "https://github.com/futuresdr/futuresdr/" readme = "README.md" description = "An Experimental Async SDR Runtime for Heterogeneous Architectures." keywords = ["sdr", "radio", "runtime", "async", "acceleration"] categories = ["asynchronous", "concurrency", "hardware-support", "science", "wasm"] [workspace] members = [ ".", "crates/futuredsp", "crates/macros", "crates/types", ] [features] default = [] aaronia = ["seify/aaronia"] aaronia_http = ["seify/aaronia_http"] audio = ["dep:cpal", "dep:hound", "dep:rodio"] flow_scheduler = [] lttng = ["dep:lttng-ust", "dep:lttng-ust-generate"] rtlsdr = ["seify/rtlsdr"] seify = ["dep:seify"] soapy = ["seify/soapy"] tpb_scheduler = [] vulkan = ["dep:vulkano", "dep:vulkano-shaders"] wgpu = ["dep:wgpu"] zeromq = ["dep:zmq"] zynq = ["dep:xilinx-dma"] [[bench]] name = "flowgraph" harness = false [[bench]] name = "apply" harness = false [[example]] name = "scheduler" required-features = ["tpb_scheduler", "flow_scheduler"] [[example]] name = "vulkan" required-features = ["vulkan"] [[example]] name = "zynq" required-features = ["zynq"] [[test]] name = "flow" required-features = ["flow_scheduler"] [[test]] name = "vulkan" required-features = ["vulkan"] [[test]] name = "tpb" required-features = ["tpb_scheduler"] [[test]] name = "seify" required-features = ["seify", "soapy"] [dependencies] anyhow = "1.0" async-trait = "0.1.68" config = "0.13.3" dirs = "5.0.0" dyn-clone = "1.0" futures = "0.3.28" futures-lite = "1.13.0" futuredsp = { path = "crates/futuredsp", version = "0.0.6" } futuresdr-macros = { path = "crates/macros", version = "0.0.5" } futuresdr-types = { path = "crates/types", version = "0.0.11" } log = { version = "0.4", features = ["std", "max_level_debug", "release_max_level_info"] } num-complex = "0.4" num-integer = "0.1" num_cpus = "1.15" once_cell = "1.17" rand = "0.8.5" rustfft = "6.1" seify = { version = "0.10.0", default-features = false, optional = true } slab = "0.4.8" spin = "0.9.8" serde = { version = "1.0", features = ["derive"] } thiserror = "1.0" wgpu = { version = "0.16.3", optional = true } [target.'cfg(target_arch = "wasm32")'.dependencies] console_log = "1.0" cpal = { version = "0.15.2", optional = true, features = ['wasm-bindgen'] } getrandom = { version = "0.2.9", features = ["js"] } gloo-net = {version = "0.2.6", default-features = false, features = ["websocket", "json"]} gloo-timers = { version = "0.2.6", features = ["futures"] } js-sys = "0.3.64" rodio = { version = "0.17.1", default-features = false, optional = true } serde-wasm-bindgen = "0.5.0" serde_json = "1.0" wasm-bindgen = "0.2.84" wasm-bindgen-futures = "0.4.34" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] async-executor = "1.5.1" async-fs = "1.6.0" async-io = "1.13.0" async-lock = "2.7.0" async-native-tls = { version = "0.5", optional = true } async-net = "1.7.0" async-task = "4.4.0" async-tungstenite = "0.22.0" axum = "0.6.18" blocking = "1.3" concurrent-queue = "2.2" core_affinity = "0.8.0" cpal = { version = "0.15.2", optional = true } hound = {version = "3.5.0", optional = true } libc = "0.2.142" rodio = { version = "0.17.1", optional = true } tokio = { version = "1.28.0", features = ["rt"] } tower-http = { version = "0.4.0", features = ["add-extension", "cors", "fs"] } vmcircbuffer = "0.0.10" vulkano = { version = "0.32.0", optional = true } zmq = { version = "0.10.0", optional = true } vulkano-shaders = { version = "0.32", optional = true } [target.'cfg(target_os = "linux")'.dependencies] lttng-ust = { git = "https://github.com/sprt/lttng-ust-rs.git", version = "0.1.0", optional = true} xilinx-dma = { version = "0.0.8", features = ["async"], optional = true } [target.'cfg(target_os = "android")'.dependencies] android_logger = "0.13.1" [target.'cfg(target_arch = "wasm32")'.dependencies.web-sys] version = "=0.3.64" # need to pin, due to incompatibilites w/ wgpu features = [ 'Document', 'Element', 'HtmlElement', 'Node', 'Window', 'Navigator', 'Usb', 'UsbDeviceRequestOptions', 'UsbDevice', 'UsbDeviceFilter', 'UsbInTransferResult', 'UsbConfiguration', 'UsbControlTransferParameters', 'UsbOutTransferResult', 'UsbRecipient', 'UsbRequestType' ] [build-dependencies] rustc_version = "0.4.0" [target.'cfg(target_os = "linux")'.build-dependencies] lttng-ust-generate = { git = "https://github.com/sprt/lttng-ust-rs.git", version = "0.1.1", optional = true } [dev-dependencies] async-channel = "1.8.0" criterion = { version = "0.4.0", features = ["html_reports"] } easy-parallel = "3.3.0" float-cmp = "0.9.0" [profile.release] codegen-units = 1 debug = true lto = "fat" opt-level = 3 panic = "abort" [package.metadata.docs.rs] rustdoc-args = ["--cfg", "docsrs"]