-
-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathbuild.rs
More file actions
40 lines (34 loc) · 1.37 KB
/
build.rs
File metadata and controls
40 lines (34 loc) · 1.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use flapigen::{JavaConfig, LanguageConfig};
use std::{env, path::{Path, PathBuf}};
fn main() {
env_logger::init();
let android = env::var_os("CARGO_FEATURE_ANDROID").is_some();
let jvm = env::var_os("CARGO_FEATURE_JVM").is_some();
if android && jvm {
panic!("The `android` and `jvm` features are mutually exclusive");
}
let out_dir = env::var("OUT_DIR").unwrap();
let in_src = Path::new("src").join("java_glue.rs.in");
let out_src = Path::new(&out_dir).join("java_glue.rs");
let (java_module, annotation_pkg): (PathBuf, &str) = if jvm {
(PathBuf::from("client-jvm"), "com.etebase.client.annotation")
} else {
(PathBuf::from("client"), "androidx.annotation")
};
let java_out = java_module
.join("src")
.join("main")
.join("java")
.join("com")
.join("etebase")
.join("client");
let swig_gen = flapigen::Generator::new(LanguageConfig::JavaConfig(
JavaConfig::new(java_out, "com.etebase.client".into())
.use_null_annotation_from_package(annotation_pkg.into()),
))
.merge_type_map("typemaps", include_str!("src/jni_typemaps.rs"))
.remove_not_generated_files_from_output_directory(true)
.rustfmt_bindings(true);
swig_gen.expand("etebase jni bindings", &in_src, &out_src);
println!("cargo:rerun-if-changed={}", in_src.display());
}