Skip to content

Commit 5d4d99e

Browse files
Update build.rs
1 parent 23991b3 commit 5d4d99e

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

build.rs

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
// TODO - Make this code less awful
12
use llvm_tools::{exe, LlvmTools};
23
use std::env;
34
use std::path::Path;
45
use std::process::Command;
56

67
fn main() {
8+
println!("cargo:warning=Compiling...");
79
let out_dir = env::var("OUT_DIR").unwrap();
810
let llvm_tools = LlvmTools::new().expect("LLVM tools not found");
911
let objcopy = llvm_tools
@@ -23,6 +25,8 @@ fn main() {
2325
&objcopy,
2426
);*/
2527

28+
println!("cargo:warning=Compiling stage2...");
29+
2630
build_subproject(
2731
Path::new("src/real/stage_2"),
2832
&[
@@ -36,40 +40,49 @@ fn main() {
3640
}
3741

3842
fn build_subproject(
39-
dir: &Path,
43+
subproject_dir: &Path,
4044
global_symbols: &[&str],
4145
target: &str,
4246
out_dir: &str,
4347
objcopy: &Path,
4448
) {
45-
let dir_name = dir.file_name().unwrap().to_str().unwrap();
46-
let out_path = Path::new(&out_dir);
49+
let dir_name = subproject_dir.file_name().unwrap().to_str().unwrap();
50+
let out_dir_path = Path::new(&out_dir);
51+
52+
let target_dir = out_dir_path.join("..").join("..").join("..").join("..").join("..");
53+
4754
assert!(
4855
global_symbols.len() > 0,
4956
"must have at least one global symbol"
5057
);
5158

5259
// build
5360
let mut cmd = Command::new("cargo");
54-
cmd.current_dir(&dir);
61+
cmd.current_dir(&subproject_dir);
5562

5663
cmd.arg("build").arg("--release").arg("-Zbuild-std=core");
5764
cmd.arg("--verbose");
5865

5966
cmd.arg(format!(
6067
"--target={}",
61-
//dir.join(target).display()
6268
target
6369
));
64-
cmd.arg("-Z").arg("unstable-options");
70+
71+
cmd.arg("-Zunstable-options");
6572
cmd.arg("--out-dir").arg(&out_dir);
6673
cmd.arg("--target-dir")
67-
.arg(out_path.join("target").join(dir_name));
74+
.arg(&target_dir);
6875
cmd.env_remove("RUSTFLAGS");
6976
cmd.env(
7077
"XBUILD_SYSROOT_PATH",
71-
out_path.join("target").join(dir_name).join("sysroot"),
78+
out_dir_path.join("target").join(dir_name).join("sysroot"),
7279
);
80+
81+
println!("cargo:warning=Out Dir - {}", &out_dir_path.display());
82+
println!("cargo:warning=Subproject Dir - {}", &subproject_dir.display());
83+
println!("cargo:warning=Dir Name - {}", &dir_name);
84+
println!("cargo:warning=Target Dir - {}", &target_dir.display());
85+
7386
let status = cmd.status().unwrap();
7487
assert!(status.success(), "Subcrate build failed!");
7588

@@ -78,9 +91,9 @@ fn build_subproject(
7891
for symbol in global_symbols {
7992
cmd.arg("-G").arg(symbol);
8093
}
81-
cmd.arg(out_path.join(format!("lib{}.a", dir_name)));
94+
cmd.arg(target_dir.join(format!("lib{}.a", dir_name)));
8295
let status = cmd.status().unwrap();
83-
assert!(status.success());
96+
assert!(status.success(), "Objcopy failed!");
8497

8598
// emit linker flags
8699
println!("cargo:rustc-link-search=native={}", out_dir);

0 commit comments

Comments
 (0)