@@ -25,7 +25,7 @@ pub struct Artifacts {
25
25
impl Default for Build {
26
26
fn default ( ) -> Self {
27
27
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) ,
29
29
target : env:: var ( "TARGET" ) . ok ( ) ,
30
30
host : env:: var ( "HOST" ) . ok ( ) ,
31
31
max_cstack_size : 1000000 ,
@@ -46,11 +46,13 @@ impl Build {
46
46
self
47
47
}
48
48
49
+ #[ doc( hidden) ]
49
50
pub fn target ( & mut self , target : & str ) -> & mut Build {
50
51
self . target = Some ( target. to_string ( ) ) ;
51
52
self
52
53
}
53
54
55
+ #[ doc( hidden) ]
54
56
pub fn host ( & mut self , host : & str ) -> & mut Build {
55
57
self . host = Some ( host. to_string ( ) ) ;
56
58
self
@@ -72,31 +74,30 @@ impl Build {
72
74
}
73
75
74
76
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" ) ;
76
78
self . vector_size = size;
77
79
self
78
80
}
79
81
80
82
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" ) ;
84
87
85
88
let source_base_dir = Path :: new ( env ! ( "CARGO_MANIFEST_DIR" ) ) ;
86
89
let common_include_dir = source_base_dir. join ( "luau" ) . join ( "Common" ) . join ( "include" ) ;
87
90
let vm_source_dir = source_base_dir. join ( "luau" ) . join ( "VM" ) . join ( "src" ) ;
88
91
let vm_include_dir = source_base_dir. join ( "luau" ) . join ( "VM" ) . join ( "include" ) ;
89
92
90
93
// 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 ( ) ;
93
96
}
94
97
95
98
// Configure C++
96
99
let mut config = cc:: Build :: new ( ) ;
97
100
config
98
- . target ( target)
99
- . host ( host)
100
101
. warnings ( false )
101
102
. cargo_metadata ( false )
102
103
. std ( "c++17" )
@@ -117,9 +118,9 @@ impl Build {
117
118
config. define ( "LUA_USE_LONGJMP" , "1" ) ;
118
119
}
119
120
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 {
123
124
// this flag allows compiler to lower sqrt() into a single CPU instruction
124
125
config. flag_if_supported ( "-fno-math-errno" ) ;
125
126
}
@@ -134,7 +135,7 @@ impl Build {
134
135
. clone ( )
135
136
. include ( & ast_include_dir)
136
137
. add_files_by_ext ( & ast_source_dir, "cpp" )
137
- . out_dir ( out_dir )
138
+ . out_dir ( & build_dir )
138
139
. compile ( ast_lib_name) ;
139
140
140
141
// Build `CogeGen` library
@@ -153,7 +154,7 @@ impl Build {
153
154
. include ( & vm_source_dir)
154
155
. define ( "LUACODEGEN_API" , "extern \" C\" " )
155
156
. add_files_by_ext ( & codegen_source_dir, "cpp" )
156
- . out_dir ( out_dir )
157
+ . out_dir ( & build_dir )
157
158
. compile ( codegen_lib_name) ;
158
159
}
159
160
@@ -167,7 +168,7 @@ impl Build {
167
168
. include ( & ast_include_dir)
168
169
. define ( "LUACODE_API" , "extern \" C\" " )
169
170
. add_files_by_ext ( & compiler_source_dir, "cpp" )
170
- . out_dir ( out_dir )
171
+ . out_dir ( & build_dir )
171
172
. compile ( compiler_lib_name) ;
172
173
173
174
// Build customization library
@@ -178,7 +179,7 @@ impl Build {
178
179
. include ( & vm_include_dir)
179
180
. include ( & vm_source_dir)
180
181
. add_files_by_ext ( & custom_source_dir, "cpp" )
181
- . out_dir ( out_dir )
182
+ . out_dir ( & build_dir )
182
183
. compile ( custom_lib_name) ;
183
184
184
185
// Build `Require` library
@@ -203,7 +204,7 @@ impl Build {
203
204
require_config
204
205
. include ( & ast_include_dir)
205
206
. include ( & vm_include_dir)
206
- . out_dir ( out_dir )
207
+ . out_dir ( & build_dir )
207
208
. compile ( require_lib_name) ;
208
209
209
210
// Build VM
@@ -212,11 +213,11 @@ impl Build {
212
213
. clone ( )
213
214
. include ( & vm_include_dir)
214
215
. add_files_by_ext ( & vm_source_dir, "cpp" )
215
- . out_dir ( out_dir )
216
+ . out_dir ( & build_dir )
216
217
. compile ( vm_lib_name) ;
217
218
218
219
let mut artifacts = Artifacts {
219
- lib_dir : out_dir . to_path_buf ( ) ,
220
+ lib_dir : build_dir ,
220
221
libs : vec ! [
221
222
vm_lib_name. to_string( ) ,
222
223
compiler_lib_name. to_string( ) ,
0 commit comments