@@ -15,7 +15,7 @@ use std::path::Path;
15
15
#[ cfg( feature = "dummy_match_byte" ) ]
16
16
mod codegen {
17
17
use std:: path:: Path ;
18
- pub fn main ( _ : & Path ) { }
18
+ pub fn main ( ) { }
19
19
}
20
20
21
21
#[ cfg( not( feature = "dummy_match_byte" ) ) ]
@@ -27,11 +27,21 @@ mod codegen {
27
27
use match_byte;
28
28
use std:: env;
29
29
use std:: path:: Path ;
30
+ use std:: thread:: Builder ;
30
31
31
- pub fn main ( tokenizer_rs : & Path ) {
32
- match_byte:: expand ( tokenizer_rs,
33
- & Path :: new ( & env:: var ( "OUT_DIR" ) . unwrap ( ) ) . join ( "tokenizer.rs" ) ) ;
32
+ pub fn main ( ) {
33
+ let manifest_dir = env:: var ( "CARGO_MANIFEST_DIR" ) . unwrap ( ) ;
34
34
35
+ let input = Path :: new ( & manifest_dir) . join ( "src/tokenizer.rs" ) ;
36
+ let output = Path :: new ( & env:: var ( "OUT_DIR" ) . unwrap ( ) ) . join ( "tokenizer.rs" ) ;
37
+ println ! ( "cargo:rerun-if-changed={}" , input. display( ) ) ;
38
+
39
+ // We have stack overflows on Servo's CI.
40
+ let handle = Builder :: new ( ) . stack_size ( 8 * 1024 * 1024 ) . spawn ( move || {
41
+ match_byte:: expand ( & input, & output) ;
42
+ } ) . unwrap ( ) ;
43
+
44
+ handle. join ( ) . unwrap ( ) ;
35
45
}
36
46
}
37
47
@@ -41,8 +51,5 @@ fn main() {
41
51
println ! ( "cargo:rustc-cfg=rustc_has_pr45225" )
42
52
}
43
53
44
- let manifest_dir = env:: var ( "CARGO_MANIFEST_DIR" ) . unwrap ( ) ;
45
- let tokenizer_rs = Path :: new ( & manifest_dir) . join ( "src/tokenizer.rs" ) ;
46
- codegen:: main ( & tokenizer_rs) ;
47
- println ! ( "cargo:rerun-if-changed={}" , tokenizer_rs. display( ) ) ;
54
+ codegen:: main ( ) ;
48
55
}
0 commit comments