miden-crypto/build.rs
build.rsRaw
1fn main() {
2 #[cfg(feature = "std")]
3 compile_rpo_falcon();
4
5 #[cfg(feature = "arch-arm64-sve")]
6 compile_arch_arm64_sve();
7}
8
9#[cfg(feature = "std")]
10fn compile_rpo_falcon() {
11 use std::path::PathBuf;
12
13 let target_dir: PathBuf = ["PQClean", "crypto_sign", "falcon-512", "clean"].iter().collect();
14 let common_dir: PathBuf = ["PQClean", "common"].iter().collect();
15 let rpo_dir: PathBuf = ["src", "dsa", "rpo_falcon512", "falcon_c"].iter().collect();
16
17 let scheme_files = glob::glob(target_dir.join("*.c").to_str().unwrap()).unwrap();
18 let common_files = glob::glob(common_dir.join("*.c").to_str().unwrap()).unwrap();
19 let rpo_files = glob::glob(rpo_dir.join("*.c").to_str().unwrap()).unwrap();
20
21 cc::Build::new()
22 .include(&common_dir)
23 .include(target_dir)
24 .files(scheme_files.into_iter().map(|p| p.unwrap().to_string_lossy().into_owned()))
25 .files(common_files.into_iter().map(|p| p.unwrap().to_string_lossy().into_owned()))
26 .files(rpo_files.into_iter().map(|p| p.unwrap().to_string_lossy().into_owned()))
27 .compile("falcon-512_clean");
28}
29
30#[cfg(feature = "arch-arm64-sve")]
31fn compile_arch_arm64_sve() {
32 println!("cargo:rerun-if-changed=arch/arm64-sve/rpo/library.c");
33 println!("cargo:rerun-if-changed=arch/arm64-sve/rpo/library.h");
34 println!("cargo:rerun-if-changed=arch/arm64-sve/rpo/rpo_hash.h");
35
36 cc::Build::new()
37 .file("arch/arm64-sve/rpo/library.c")
38 .flag("-march=armv8-a+sve")
39 .flag("-O3")
40 .compile("rpo_sve");
41}