81 lines
2.8 KiB
Rust
81 lines
2.8 KiB
Rust
#[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");
|
|
}
|
|
}
|