#[allow(dead_code)]
mod bitboard;
#[allow(dead_code)]
mod board;
#[allow(dead_code)]
mod util;
mod magic;
extern crate alloc;
use bitboard::*;
use magic::*;
use std::fs::File;
use std::io::Write;
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("cargo:rerun-if-changed=src");
let out_dir = std::env::var("OUT_DIR")?;
let (magics, table) = magic::build();
let mut f = File::create(format!("{out_dir}/magics.rs"))?;
writeln!(&mut f, "[")?;
for Magic {
premask: Bitboard(premask),
factor,
offset,
} in magics
{
writeln!(
&mut f,
"Magic {{ premask: Bitboard({premask}), factor: {factor}, offset: {offset} }},"
)?;
}
writeln!(&mut f, "]")?;
let mut f = File::create(format!("{out_dir}/table.rs"))?;
writeln!(&mut f, "[")?;
for value in table {
writeln!(&mut f, "{value},")?;
}
writeln!(&mut f, "]")?;
Ok(())
}