@@ -25,7 +25,7 @@ pub struct Artifacts {
2525impl 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