Skip to content

Commit d389fe1

Browse files
committed
Fix build on Windows
1 parent 4069521 commit d389fe1

1 file changed

Lines changed: 17 additions & 5 deletions

File tree

build.rs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,28 @@ mod pager;
1111
include!("src/args.rs");
1212

1313
fn main() -> Result<(), Error> {
14-
let outdir = match env::var_os("OUT_DIR") {
15-
None => return Ok(()),
16-
Some(outdir) => outdir,
17-
};
18-
1914
#[cfg(target_os = "windows")]
2015
{
2116
static_vcruntime::metabuild();
2217
}
2318

19+
// `rig_app()` builds the whole clap command tree in a single function, so in
20+
// an unoptimized build its stack frame is larger than the 1 MB main thread
21+
// stack we get on Windows. Do the work on a thread with a bigger stack.
22+
std::thread::Builder::new()
23+
.stack_size(32 * 1024 * 1024)
24+
.spawn(generate_completions)
25+
.expect("failed to spawn completion generator thread")
26+
.join()
27+
.expect("completion generator thread panicked")
28+
}
29+
30+
fn generate_completions() -> Result<(), Error> {
31+
let outdir = match env::var_os("OUT_DIR") {
32+
None => return Ok(()),
33+
Some(outdir) => outdir,
34+
};
35+
2436
let mut app = rig_app();
2537
let name = "rig".to_string();
2638

0 commit comments

Comments
 (0)