diff --git a/crates/live_kit_client/Cargo.toml b/crates/live_kit_client/Cargo.toml index 8eb79c3a8992ee..ab8a96a97f2190 100644 --- a/crates/live_kit_client/Cargo.toml +++ b/crates/live_kit_client/Cargo.toml @@ -42,6 +42,12 @@ nanoid = { version ="0.4", optional = true} [target.'cfg(target_os = "macos")'.dependencies] core-foundation = "0.9.3" +[target.'cfg(not(target_os = "macos"))'.dependencies] +async-trait = { workspace = true } +collections = { path = "../collections", features = ["test-support"] } +gpui = { path = "../gpui", features = ["test-support"] } +live_kit_server = { path = "../live_kit_server" } + [dev-dependencies] collections = { path = "../collections", features = ["test-support"] } gpui = { path = "../gpui", features = ["test-support"] } diff --git a/crates/live_kit_client/src/live_kit_client.rs b/crates/live_kit_client/src/live_kit_client.rs index abec27462e3963..1e9054e73caf12 100644 --- a/crates/live_kit_client/src/live_kit_client.rs +++ b/crates/live_kit_client/src/live_kit_client.rs @@ -1,15 +1,15 @@ use std::sync::Arc; -#[cfg(not(any(test, feature = "test-support")))] +#[cfg(all(target_os = "macos", not(any(test, feature = "test-support"))))] pub mod prod; -#[cfg(not(any(test, feature = "test-support")))] +#[cfg(all(target_os = "macos", not(any(test, feature = "test-support"))))] pub use prod::*; -#[cfg(any(test, feature = "test-support"))] +#[cfg(any(test, feature = "test-support", not(target_os = "macos")))] pub mod test; -#[cfg(any(test, feature = "test-support"))] +#[cfg(any(test, feature = "test-support", not(target_os = "macos")))] pub use test::*; pub type Sid = String; diff --git a/crates/live_kit_client/src/test.rs b/crates/live_kit_client/src/test.rs index 96ca2b90dcd5de..0de5bada341bf6 100644 --- a/crates/live_kit_client/src/test.rs +++ b/crates/live_kit_client/src/test.rs @@ -5,6 +5,7 @@ use collections::{BTreeMap, HashMap, HashSet}; use futures::Stream; use gpui::BackgroundExecutor; use live_kit_server::{proto, token}; +#[cfg(target_os = "macos")] use media::core_video::CVImageBuffer; use parking_lot::Mutex; use postage::watch; @@ -845,6 +846,7 @@ impl Frame { self.height } + #[cfg(target_os = "macos")] pub fn image(&self) -> CVImageBuffer { unimplemented!("you can't call this in test mode") } diff --git a/crates/media/build.rs b/crates/media/build.rs index 7e66efd39de86e..ad6032ad41d4ed 100644 --- a/crates/media/build.rs +++ b/crates/media/build.rs @@ -1,6 +1,7 @@ -use std::{env, path::PathBuf, process::Command}; - +#[cfg(target_os = "macos")] fn main() { + use std::{env, path::PathBuf, process::Command}; + let sdk_path = String::from_utf8( Command::new("xcrun") .args(["--sdk", "macosx", "--show-sdk-path"]) @@ -37,3 +38,6 @@ fn main() { .write_to_file(out_path.join("bindings.rs")) .expect("couldn't write dispatch bindings"); } + +#[cfg(not(target_os = "macos"))] +fn main() {} diff --git a/crates/media/src/bindings.rs b/crates/media/src/bindings.rs index a1c0b0da3ef517..a1c78c17c47f7c 100644 --- a/crates/media/src/bindings.rs +++ b/crates/media/src/bindings.rs @@ -3,6 +3,8 @@ #![allow(non_snake_case)] #![allow(unused)] +#[cfg(target_os = "macos")] use objc::*; +#[cfg(target_os = "macos")] include!(concat!(env!("OUT_DIR"), "/bindings.rs")); diff --git a/crates/media/src/media.rs b/crates/media/src/media.rs index 269244dbf9d15f..8d24e45cf215f4 100644 --- a/crates/media/src/media.rs +++ b/crates/media/src/media.rs @@ -3,12 +3,14 @@ mod bindings; +#[cfg(target_os = "macos")] use core_foundation::{ base::{CFTypeID, TCFType}, declare_TCFType, impl_CFTypeDescription, impl_TCFType, }; use std::ffi::c_void; +#[cfg(target_os = "macos")] pub mod io_surface { use super::*; @@ -27,6 +29,7 @@ pub mod io_surface { } } +#[cfg(target_os = "macos")] pub mod core_video { #![allow(non_snake_case)] @@ -206,6 +209,7 @@ pub mod core_video { } } +#[cfg(target_os = "macos")] pub mod core_media { #![allow(non_snake_case)] @@ -413,6 +417,7 @@ pub mod core_media { } } +#[cfg(target_os = "macos")] pub mod video_toolbox { #![allow(non_snake_case)] diff --git a/script/bootstrap b/script/bootstrap index 09504d633cf5db..16ae872dbdd3c7 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -11,3 +11,6 @@ echo "migrating database..." echo "seeding database..." script/seed-db + +echo "Linux dependencies..." +script/linux diff --git a/script/linux b/script/linux new file mode 100755 index 00000000000000..1acf7a6e1659d8 --- /dev/null +++ b/script/linux @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +# if not on Linux, do nothing +[[ $(uname) == "Linux" ]] || exit 0 + +# if sudo is not installed, define an empty alias +maysudo=$(command -v sudo || true) +export maysudo + +# Ubuntu, Debian, etc. +apt=$(command -v apt-get || true) +deps=( + libasound2-dev +) +if [[ -n $apt ]]; then + $maysudo "$apt" install -y "${deps[@]}" + exit 0 +fi + +# Fedora, CentOS, RHEL, etc. +dnf=$(command -v dnf || true) +deps=( + alsa-lib-devel +) +if [[ -n $dnf ]]; then + $maysudo "$dnf" install -y "${deps[@]}" + exit 0 +fi + +# Arch, Manjaro, etc. +pacman=$(command -v pacman || true) +deps=( + alsa-lib +) +if [[ -n $pacman ]]; then + $maysudo "$pacman" -S --noconfirm "${deps[@]}" + exit 0 +fi + +echo "Unsupported Linux distribution in script/linux"