#[cfg(feature = "builtin-lua")] extern crate gcc; extern crate rustc_version; use std::env; fn main() { let target_os = env::var("CARGO_CFG_TARGET_OS"); let target_family = env::var("CARGO_CFG_TARGET_FAMILY"); if target_family == Ok("windows".to_string()) && rustc_version::version().unwrap() == rustc_version::Version::parse("1.24.0").unwrap() { // Error handling is completely broken on windows with // https://github.com/rust-lang/rust/pull/46833 merged, and this includes stable rustc // 1.24.0+. `#[unwind]` fixes error handling on windows, but requires nightly! This // HORRIBLE HACK enables `#[unwind]` on stable rust by setting RUSTC_BOOTSTRAP=1 during // build. This is very evil, don't do this kids. // // See https://github.com/rust-lang/rust/issues/48251 and // https://github.com/chucklefish/rlua/issues/71 for more details. println!("cargo:rustc-env=RUSTC_BOOTSTRAP=1"); println!("cargo:rustc-cfg=unwind"); } #[cfg(feature = "builtin-lua")] { let mut config = gcc::Build::new(); if target_os == Ok("linux".to_string()) { config.define("LUA_USE_LINUX", None); } else if target_os == Ok("macos".to_string()) { config.define("LUA_USE_MACOSX", None); } else if target_family == Ok("unix".to_string()) { config.define("LUA_USE_POSIX", None); } else if target_family == Ok("windows".to_string()) { config.define("LUA_USE_WINDOWS", None); } if cfg!(debug_assertions) { config.define("LUA_USE_APICHECK", None); } config .include("lua") .file("lua/lapi.c") .file("lua/lauxlib.c") .file("lua/lbaselib.c") .file("lua/lbitlib.c") .file("lua/lcode.c") .file("lua/lcorolib.c") .file("lua/lctype.c") .file("lua/ldblib.c") .file("lua/ldebug.c") .file("lua/ldo.c") .file("lua/ldump.c") .file("lua/lfunc.c") .file("lua/lgc.c") .file("lua/linit.c") .file("lua/liolib.c") .file("lua/llex.c") .file("lua/lmathlib.c") .file("lua/lmem.c") .file("lua/loadlib.c") .file("lua/lobject.c") .file("lua/lopcodes.c") .file("lua/loslib.c") .file("lua/lparser.c") .file("lua/lstate.c") .file("lua/lstring.c") .file("lua/lstrlib.c") .file("lua/ltable.c") .file("lua/ltablib.c") .file("lua/ltm.c") .file("lua/lundump.c") .file("lua/lutf8lib.c") .file("lua/lvm.c") .file("lua/lzio.c") .compile("liblua5.3.a"); } }