2023-08-28 11:06:13 +02:00
|
|
|
use flapigen::{JavaConfig, LanguageConfig};
|
2023-11-20 02:08:38 +01:00
|
|
|
use std::{env, fs, path::Path};
|
2023-08-28 16:12:42 +02:00
|
|
|
use rifgen::{Generator as RifgenGenerator, TypeCases, Language};
|
|
|
|
use flapigen::Generator as FlapigenGenerator;
|
2023-08-28 11:06:13 +02:00
|
|
|
|
|
|
|
fn main() {
|
2023-08-28 16:12:42 +02:00
|
|
|
let out_dir_var = env::var("OUT_DIR")
|
|
|
|
.expect("no OUT_DIR, but cargo should provide it");
|
|
|
|
let out_dir = Path::new(&out_dir_var);
|
2023-11-20 02:08:38 +01:00
|
|
|
let generated_glue_file = out_dir.join("generated_glue.in");
|
2023-08-28 16:12:42 +02:00
|
|
|
|
2023-11-20 02:08:38 +01:00
|
|
|
let src_dir = Path::new("src/main/rust/");
|
|
|
|
let glue_file = src_dir.join("glue.in");
|
2023-08-28 16:12:42 +02:00
|
|
|
|
2023-11-20 02:08:38 +01:00
|
|
|
RifgenGenerator::new(TypeCases::CamelCase,Language::Java, vec!(src_dir))
|
|
|
|
.generate_interface(&generated_glue_file);
|
2023-08-28 16:12:42 +02:00
|
|
|
|
|
|
|
let jni_path = Path::new("src")
|
|
|
|
.join("main")
|
|
|
|
.join("java")
|
|
|
|
.join("com")
|
|
|
|
.join("codemp")
|
|
|
|
.join("intellij")
|
|
|
|
.join("jni");
|
|
|
|
|
|
|
|
//create folder if it doesn't exist
|
2023-11-20 02:08:38 +01:00
|
|
|
fs::create_dir_all(&jni_path)
|
2023-08-28 16:12:42 +02:00
|
|
|
.expect("An error occurred while creating the JNI folder!");
|
|
|
|
|
|
|
|
let java_gen = FlapigenGenerator::new(LanguageConfig::JavaConfig(
|
|
|
|
JavaConfig::new(
|
|
|
|
jni_path,
|
|
|
|
"com.codemp.intellij.jni".into()
|
|
|
|
))).rustfmt_bindings(true);
|
|
|
|
|
2023-11-20 02:08:38 +01:00
|
|
|
java_gen.expand_many(
|
2023-08-28 16:12:42 +02:00
|
|
|
"codemp-intellij",
|
2023-11-20 02:08:38 +01:00
|
|
|
&[&generated_glue_file, &glue_file],
|
2023-08-28 16:12:42 +02:00
|
|
|
out_dir.join("glue.rs"),
|
|
|
|
);
|
|
|
|
|
|
|
|
println!(
|
|
|
|
"cargo:rerun-if-changed={}",
|
2023-11-20 02:08:38 +01:00
|
|
|
Path::new("src/main").join(&generated_glue_file).display()
|
2023-08-28 16:12:42 +02:00
|
|
|
);
|
2023-11-20 02:08:38 +01:00
|
|
|
}
|