use std::path::Path; fn main() { let mut cc = cc::Build::new(); let jp2dir = Path::new("vendor/src/lib/openjp2"); let target = std::env::var("CARGO_CFG_TARGET_FAMILY").expect("CARGO_CFG_TARGET_FAMILY"); if target == "windows" { cc.define("OPJ_HAVE__ALIGNED_MALLOC", Some("1")); #[cfg(feature = "threads")] cc.define("MUTEX_win32", Some("1")); } else { cc.define("OPJ_HAVE_POSIX_MEMALIGN", Some("1")); #[cfg(feature = "threads")] cc.define("MUTEX_pthread", Some("1")); } cc.include(jp2dir); cc.include("config"); cc.define("OPJ_STATIC", Some("1")); #[cfg(not(feature = "threads"))] cc.define("MUTEX_stub", Some("1")); let files = [ "thread.c", "bio.c", "cio.c", "dwt.c", "event.c", "ht_dec.c", "image.c", "invert.c", "j2k.c", "jp2.c", "mct.c", "mqc.c", "openjpeg.c", "opj_clock.c", "pi.c", "t1.c", "t2.c", "tcd.c", "tgt.c", "function_list.c", "opj_malloc.c", "sparse_array.c", ]; for file in &files { cc.file(jp2dir.join(file)); } cc.compile("openjp2"); }