diff --git a/lact-daemon/Cargo.toml b/lact-daemon/Cargo.toml index 33762863..0b47e88c 100644 --- a/lact-daemon/Cargo.toml +++ b/lact-daemon/Cargo.toml @@ -4,8 +4,9 @@ version = "0.7.3" edition = "2021" [features] -default = [] +default = ["nvidia"] bench = ["dep:divan"] +nvidia = [] [dependencies] lact-schema = { path = "../lact-schema" } diff --git a/lact-daemon/build.rs b/lact-daemon/build.rs index 566f12ae..f27e6d21 100644 --- a/lact-daemon/build.rs +++ b/lact-daemon/build.rs @@ -8,7 +8,10 @@ fn main() { println!("cargo::rerun-if-changed=include/"); gen_intel_bindings(); + + #[cfg(feature = "nvidia")] gen_nvidia_bindings(); + gen_vulkan_constants(); } @@ -26,6 +29,7 @@ fn gen_intel_bindings() { .expect("Couldn't write bindings!"); } +#[cfg(feature = "nvidia")] fn gen_nvidia_bindings() { let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); diff --git a/lact-daemon/src/bindings.rs b/lact-daemon/src/bindings.rs index 758d3bee..81719878 100644 --- a/lact-daemon/src/bindings.rs +++ b/lact-daemon/src/bindings.rs @@ -12,6 +12,7 @@ pub mod intel { include!(concat!(env!("OUT_DIR"), "/intel_bindings.rs")); } +#[cfg(feature = "nvidia")] pub mod nvidia { include!(concat!(env!("OUT_DIR"), "/nvidia_bindings.rs")); } diff --git a/lact-daemon/src/server/gpu_controller.rs b/lact-daemon/src/server/gpu_controller.rs index f9fbb74a..14b47c01 100644 --- a/lact-daemon/src/server/gpu_controller.rs +++ b/lact-daemon/src/server/gpu_controller.rs @@ -2,10 +2,14 @@ mod amd; pub mod fan_control; mod intel; + +#[cfg(feature = "nvidia")] mod nvidia; use amd::AmdGpuController; use intel::IntelGpuController; + +#[cfg(feature = "nvidia")] use nvidia::NvidiaGpuController; pub const VENDOR_AMD: &str = "1002"; @@ -90,6 +94,9 @@ pub(crate) fn init_controller( amd_drm: &LazyCell>, intel_drm: &LazyCell>>, ) -> anyhow::Result> { + #[cfg(not(feature = "nvidia"))] + let _ = nvml; + let uevent_path = path.join("uevent"); let uevent = fs::read_to_string(uevent_path).context("Could not read 'uevent'")?; let mut uevent_map = parse_uevent(&uevent); @@ -175,6 +182,7 @@ pub(crate) fn init_controller( error!("Intel DRM library missing, Intel controls will not be available"); } } + #[cfg(feature = "nvidia")] "nvidia" => { if let Some(nvml) = nvml.as_ref().cloned() { match NvidiaGpuController::new(common.clone(), nvml) { diff --git a/lact/Cargo.toml b/lact/Cargo.toml index 227ff3f9..2a9c61fb 100644 --- a/lact/Cargo.toml +++ b/lact/Cargo.toml @@ -4,12 +4,13 @@ version = "0.7.3" edition = "2021" [features] -default = ["lact-gui"] +default = ["lact-gui", "nvidia"] adw = ["lact-gui/adw"] flatpak = ["dep:configparser"] +nvidia = ["lact-daemon/nvidia"] [dependencies] -lact-daemon = { path = "../lact-daemon" } +lact-daemon = { path = "../lact-daemon", default-features = false } lact-schema = { path = "../lact-schema", features = ["args"] } lact-cli = { path = "../lact-cli" } lact-gui = { path = "../lact-gui", optional = true }