-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.rs
64 lines (60 loc) · 2.06 KB
/
build.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
extern crate cc;
extern crate bindgen;
use std::{
env,
path::Path,
};
fn main() {
let bindings_file = Path::new(&env::var("OUT_DIR").unwrap()).join("lua.rs");
if cfg!(feature = "dynamic") && !cfg!(feature = "static") {
println!("cargo:rustc-link-lib=dylib=lua51");
} else if cfg!(feature = "static") && !cfg!(feature = "dynamic") {
cc::Build::new()
.file("lua/src/lapi.c")
.file("lua/src/lauxlib.c")
.file("lua/src/lbaselib.c")
.file("lua/src/lcode.c")
.file("lua/src/ldblib.c")
.file("lua/src/ldebug.c")
.file("lua/src/ldo.c")
.file("lua/src/ldump.c")
.file("lua/src/lfunc.c")
.file("lua/src/lgc.c")
.file("lua/src/linit.c")
.file("lua/src/liolib.c")
.file("lua/src/llex.c")
.file("lua/src/lmathlib.c")
.file("lua/src/lmem.c")
.file("lua/src/loadlib.c")
.file("lua/src/lobject.c")
.file("lua/src/lopcodes.c")
.file("lua/src/loslib.c")
.file("lua/src/lparser.c")
.file("lua/src/lstate.c")
.file("lua/src/lstring.c")
.file("lua/src/lstrlib.c")
.file("lua/src/ltable.c")
.file("lua/src/ltablib.c")
.file("lua/src/ltm.c")
.file("lua/src/lua.c")
.file("lua/src/luac.c")
.file("lua/src/lundump.c")
.file("lua/src/lvm.c")
.file("lua/src/lzio.c")
.file("lua/src/print.c")
.include("lua/src")
.compile("liblua.a");
} else {
panic!("Please enable exactly one of these features: dynamic, static");
}
bindgen::builder()
.header("src/helper.h")
.clang_arg("-Ilua/src")
.whitelist_type("luaL?_.*")
.whitelist_function("luaL?_.*")
.whitelist_var("LUA_.*")
.generate()
.expect("Could not generate Lua bindings")
.write_to_file(bindings_file)
.expect("Could not write bindings file");
}