diff --git a/.gitignore b/.gitignore index eb5a316..a9d37c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ target +Cargo.lock diff --git a/android-activity/.gitignore b/android-activity/.gitignore deleted file mode 100644 index 29f475a..0000000 --- a/android-activity/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -/target -Cargo.lock - - -# Added by cargo -# -# already existing elements were commented out - -#/target -#Cargo.lock diff --git a/android-activity/build.rs b/android-activity/build.rs index 7fc92e7..301f3b7 100644 --- a/android-activity/build.rs +++ b/android-activity/build.rs @@ -1,5 +1,3 @@ -#![allow(dead_code)] - fn build_glue_for_game_activity() { for f in [ "GameActivity.h", @@ -46,6 +44,16 @@ fn build_glue_for_game_activity() { } fn main() { - #[cfg(feature = "game-activity")] - build_glue_for_game_activity(); + // Avoid re-running build script if nothing changed. + println!("cargo:rerun-if-changed=build.rs"); + + if cfg!(feature = "game-activity") { + build_glue_for_game_activity(); + } + + // Whether this is used directly in or as a dependency on docs.rs. + println!("cargo:rustc-check-cfg=cfg(used_on_docsrs)"); + if std::env::var("DOCS_RS").is_ok() { + println!("cargo:rustc-cfg=used_on_docsrs"); + } } diff --git a/android-activity/src/game_activity/mod.rs b/android-activity/src/game_activity/mod.rs index 2150596..e3fac4f 100644 --- a/android-activity/src/game_activity/mod.rs +++ b/android-activity/src/game_activity/mod.rs @@ -1,5 +1,3 @@ -#![cfg(feature = "game-activity")] - use std::collections::HashMap; use std::marker::PhantomData; use std::ops::Deref; diff --git a/android-activity/src/lib.rs b/android-activity/src/lib.rs index e8984fe..816f21e 100644 --- a/android-activity/src/lib.rs +++ b/android-activity/src/lib.rs @@ -140,7 +140,7 @@ compile_error!( ); #[cfg(all( not(any(feature = "game-activity", feature = "native-activity")), - not(doc) + not(any(doc, used_on_docsrs)), ))] compile_error!( r#"Either "game-activity" or "native-activity" must be enabled as features @@ -159,8 +159,18 @@ You may need to add a `[patch]` into your Cargo.toml to ensure a specific versio android-activity is used across all of your application's crates."# ); -#[cfg_attr(any(feature = "native-activity", doc), path = "native_activity/mod.rs")] -#[cfg_attr(any(feature = "game-activity", doc), path = "game_activity/mod.rs")] +#[cfg_attr(feature = "native-activity", path = "native_activity/mod.rs")] +#[cfg_attr(feature = "game-activity", path = "game_activity/mod.rs")] +#[cfg_attr( + all( + // No activities enabled. + not(any(feature = "native-activity", feature = "game-activity")), + // And building docs. + any(doc, used_on_docsrs), + ), + // Fall back to documenting native activity. + path = "native_activity/mod.rs" +)] pub(crate) mod activity_impl; pub mod error; diff --git a/android-activity/src/native_activity/mod.rs b/android-activity/src/native_activity/mod.rs index 88a9fe8..0bcb683 100644 --- a/android-activity/src/native_activity/mod.rs +++ b/android-activity/src/native_activity/mod.rs @@ -1,5 +1,3 @@ -#![cfg(any(feature = "native-activity", doc))] - use std::collections::HashMap; use std::marker::PhantomData; use std::panic::AssertUnwindSafe;