diff --git a/easytier/Cargo.toml b/easytier/Cargo.toml index 0ffefc35..410726c8 100644 --- a/easytier/Cargo.toml +++ b/easytier/Cargo.toml @@ -50,6 +50,8 @@ time = "0.3" toml = "0.8.12" chrono = { version = "0.4.37", features = ["serde"] } +cfg-if = "1.0" + itertools = "0.14.0" strum = { version = "0.27.2", features = ["derive"] } @@ -250,7 +252,6 @@ shellexpand = "3.1.1" # for fake tcp flume = { version = "0.12", optional = true } -cfg-if = "1.0" [target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows", target_os = "freebsd"))'.dependencies] machine-uid = "0.5.3" @@ -313,6 +314,7 @@ jemalloc-sys = { package = "tikv-jemalloc-sys", version = "0.6.0", features = [ ], optional = true } [build-dependencies] +cfg_aliases = "0.2.1" tonic-build = "0.12" globwalk = "0.8.1" regex = "1" diff --git a/easytier/build.rs b/easytier/build.rs index ac7bedc8..520a3f7f 100644 --- a/easytier/build.rs +++ b/easytier/build.rs @@ -1,9 +1,9 @@ +use cfg_aliases::cfg_aliases; +use prost_wkt_build::{FileDescriptorSet, Message as _}; #[cfg(target_os = "windows")] use std::io::Cursor; use std::{env, path::PathBuf}; -use prost_wkt_build::{FileDescriptorSet, Message as _}; - #[cfg(target_os = "windows")] struct WindowsBuild {} @@ -130,6 +130,17 @@ fn check_locale() { } fn main() -> Result<(), Box> { + cfg_aliases! { + mobile: { + any( + target_os = "android", + target_os = "ios", + all(target_os = "macos", feature = "macos-ne"), + target_env = "ohos" + ) + } + } + // enable thunk-rs when target os is windows and arch is x86_64 or i686 #[cfg(target_os = "windows")] if !std::env::var("TARGET") diff --git a/easytier/src/instance/instance.rs b/easytier/src/instance/instance.rs index c17427c4..83fc5266 100644 --- a/easytier/src/instance/instance.rs +++ b/easytier/src/instance/instance.rs @@ -808,14 +808,7 @@ impl Instance { continue; } - #[cfg(all( - not(any( - target_os = "android", - any(target_os = "ios", all(target_os = "macos", feature = "macos-ne")), - target_env = "ohos" - )), - feature = "tun" - ))] + #[cfg(all(not(mobile), feature = "tun"))] { let mut new_nic_ctx = NicCtx::new( global_ctx_c.clone(), @@ -856,14 +849,7 @@ impl Instance { }); } - #[cfg(all( - not(any( - target_os = "android", - any(target_os = "ios", all(target_os = "macos", feature = "macos-ne")), - target_env = "ohos" - )), - feature = "tun" - ))] + #[cfg(all(not(mobile), feature = "tun"))] fn check_for_static_ip(&self, first_round_output: oneshot::Sender>) { let ipv4_addr = self.global_ctx.get_ipv4(); let ipv6_addr = self.global_ctx.get_ipv6(); @@ -951,11 +937,7 @@ impl Instance { { Self::clear_nic_ctx(self.nic_ctx.clone(), self.peer_packet_receiver.clone()).await; - #[cfg(not(any( - target_os = "android", - any(target_os = "ios", all(target_os = "macos", feature = "macos-ne")), - target_env = "ohos" - )))] + #[cfg(not(mobile))] if !self.global_ctx.config.get_flags().no_tun { let (output_tx, output_rx) = oneshot::channel(); self.check_for_static_ip(output_tx); @@ -1475,11 +1457,7 @@ impl Instance { self.peer_packet_receiver.clone() } - #[cfg(any( - target_os = "android", - any(target_os = "ios", all(target_os = "macos", feature = "macos-ne")), - target_env = "ohos" - ))] + #[cfg(mobile)] pub async fn setup_nic_ctx_for_mobile( nic_ctx: ArcNicCtx, global_ctx: ArcGlobalCtx, diff --git a/easytier/src/instance/virtual_nic.rs b/easytier/src/instance/virtual_nic.rs index d7238a11..d4e77a03 100644 --- a/easytier/src/instance/virtual_nic.rs +++ b/easytier/src/instance/virtual_nic.rs @@ -575,11 +575,7 @@ impl VirtualNic { Ok(tun::create(&config)?) } - #[cfg(any( - target_os = "android", - any(target_os = "ios", all(target_os = "macos", feature = "macos-ne")), - target_env = "ohos" - ))] + #[cfg(mobile)] pub async fn create_dev_for_mobile( &mut self, tun_fd: std::os::fd::RawFd, @@ -1175,11 +1171,7 @@ impl NicCtx { Ok(()) } - #[cfg(any( - target_os = "android", - any(target_os = "ios", all(target_os = "macos", feature = "macos-ne")), - target_env = "ohos" - ))] + #[cfg(mobile)] pub async fn run_for_mobile(&mut self, tun_fd: std::os::fd::RawFd) -> Result<(), Error> { let tunnel = { let mut nic = self.nic.lock().await; diff --git a/easytier/src/launcher.rs b/easytier/src/launcher.rs index a01ef811..b9061077 100644 --- a/easytier/src/launcher.rs +++ b/easytier/src/launcher.rs @@ -93,11 +93,7 @@ impl EasyTierLauncher { } } - #[cfg(any( - target_os = "android", - any(target_os = "ios", all(target_os = "macos", feature = "macos-ne")), - target_env = "ohos" - ))] + #[cfg(mobile)] async fn run_routine_for_mobile( instance: &Instance, data: &EasyTierData, @@ -156,11 +152,7 @@ impl EasyTierLauncher { } }); - #[cfg(any( - target_os = "android", - any(target_os = "ios", all(target_os = "macos", feature = "macos-ne")), - target_env = "ohos" - ))] + #[cfg(mobile)] Self::run_routine_for_mobile(&instance, &data, &mut tasks).await; instance.run().await?;