Skip to content

Commit 1c3da78

Browse files
committed
Update build rules
1 parent 879ed3f commit 1c3da78

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

src/lib.rs

+20-19
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ pub struct Artifacts {
2525
impl Default for Build {
2626
fn default() -> Self {
2727
Build {
28-
out_dir: env::var_os("OUT_DIR").map(|s| PathBuf::from(s).join("luau-build")),
28+
out_dir: env::var_os("OUT_DIR").map(PathBuf::from),
2929
target: env::var("TARGET").ok(),
3030
host: env::var("HOST").ok(),
3131
max_cstack_size: 1000000,
@@ -46,11 +46,13 @@ impl Build {
4646
self
4747
}
4848

49+
#[doc(hidden)]
4950
pub fn target(&mut self, target: &str) -> &mut Build {
5051
self.target = Some(target.to_string());
5152
self
5253
}
5354

55+
#[doc(hidden)]
5456
pub fn host(&mut self, host: &str) -> &mut Build {
5557
self.host = Some(host.to_string());
5658
self
@@ -72,31 +74,30 @@ impl Build {
7274
}
7375

7476
pub fn set_vector_size(&mut self, size: usize) -> &mut Build {
75-
assert!(size == 3 || size == 4);
77+
assert!(size == 3 || size == 4, "vector size must be 3 or 4");
7678
self.vector_size = size;
7779
self
7880
}
7981

8082
pub fn build(&mut self) -> Artifacts {
81-
let target = &self.target.as_ref().expect("TARGET not set")[..];
82-
let host = &self.host.as_ref().expect("HOST not set")[..];
83-
let out_dir = self.out_dir.as_ref().expect("OUT_DIR not set");
83+
let target = &self.target.as_ref().expect("TARGET is not set")[..];
84+
let host = &self.host.as_ref().expect("HOST is not set")[..];
85+
let out_dir = self.out_dir.as_ref().expect("OUT_DIR is not set");
86+
let build_dir = out_dir.join("luau-build");
8487

8588
let source_base_dir = Path::new(env!("CARGO_MANIFEST_DIR"));
8689
let common_include_dir = source_base_dir.join("luau").join("Common").join("include");
8790
let vm_source_dir = source_base_dir.join("luau").join("VM").join("src");
8891
let vm_include_dir = source_base_dir.join("luau").join("VM").join("include");
8992

9093
// Cleanup
91-
if out_dir.exists() {
92-
fs::remove_dir_all(out_dir).unwrap();
94+
if build_dir.exists() {
95+
fs::remove_dir_all(&build_dir).unwrap();
9396
}
9497

9598
// Configure C++
9699
let mut config = cc::Build::new();
97100
config
98-
.target(target)
99-
.host(host)
100101
.warnings(false)
101102
.cargo_metadata(false)
102103
.std("c++17")
@@ -117,9 +118,9 @@ impl Build {
117118
config.define("LUA_USE_LONGJMP", "1");
118119
}
119120

120-
if cfg!(not(debug_assertions)) {
121-
config.define("NDEBUG", None);
122-
config.opt_level(2);
121+
if cfg!(debug_assertions) {
122+
config.define("LUAU_ENABLE_ASSERT", None);
123+
} else {
123124
// this flag allows compiler to lower sqrt() into a single CPU instruction
124125
config.flag_if_supported("-fno-math-errno");
125126
}
@@ -134,7 +135,7 @@ impl Build {
134135
.clone()
135136
.include(&ast_include_dir)
136137
.add_files_by_ext(&ast_source_dir, "cpp")
137-
.out_dir(out_dir)
138+
.out_dir(&build_dir)
138139
.compile(ast_lib_name);
139140

140141
// Build `CogeGen` library
@@ -153,7 +154,7 @@ impl Build {
153154
.include(&vm_source_dir)
154155
.define("LUACODEGEN_API", "extern \"C\"")
155156
.add_files_by_ext(&codegen_source_dir, "cpp")
156-
.out_dir(out_dir)
157+
.out_dir(&build_dir)
157158
.compile(codegen_lib_name);
158159
}
159160

@@ -167,7 +168,7 @@ impl Build {
167168
.include(&ast_include_dir)
168169
.define("LUACODE_API", "extern \"C\"")
169170
.add_files_by_ext(&compiler_source_dir, "cpp")
170-
.out_dir(out_dir)
171+
.out_dir(&build_dir)
171172
.compile(compiler_lib_name);
172173

173174
// Build customization library
@@ -178,7 +179,7 @@ impl Build {
178179
.include(&vm_include_dir)
179180
.include(&vm_source_dir)
180181
.add_files_by_ext(&custom_source_dir, "cpp")
181-
.out_dir(out_dir)
182+
.out_dir(&build_dir)
182183
.compile(custom_lib_name);
183184

184185
// Build `Require` library
@@ -203,7 +204,7 @@ impl Build {
203204
require_config
204205
.include(&ast_include_dir)
205206
.include(&vm_include_dir)
206-
.out_dir(out_dir)
207+
.out_dir(&build_dir)
207208
.compile(require_lib_name);
208209

209210
// Build VM
@@ -212,11 +213,11 @@ impl Build {
212213
.clone()
213214
.include(&vm_include_dir)
214215
.add_files_by_ext(&vm_source_dir, "cpp")
215-
.out_dir(out_dir)
216+
.out_dir(&build_dir)
216217
.compile(vm_lib_name);
217218

218219
let mut artifacts = Artifacts {
219-
lib_dir: out_dir.to_path_buf(),
220+
lib_dir: build_dir,
220221
libs: vec![
221222
vm_lib_name.to_string(),
222223
compiler_lib_name.to_string(),

0 commit comments

Comments
 (0)