arnaucube
arnaucube/miden-cryptoPublic Self-hosted repository
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}