mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-22 17:03:23 +00:00
30 lines
1011 B
Rust
30 lines
1011 B
Rust
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
use std::{path::PathBuf, process::Command};
|
|
|
|
fn main() {
|
|
let source_dir = PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap());
|
|
let out_dir = PathBuf::from(std::env::var("OUT_DIR").unwrap());
|
|
|
|
let target_arch = std::env::var("TARGET").unwrap();
|
|
let lds = source_dir.join("src/x86/linker.ld");
|
|
let def = match target_arch.as_str() {
|
|
"x86_64-unknown-none" => "-DCFG_TARGET_ARCH_X86_64=1",
|
|
"x86_64-i386_pm-none" => "-DCFG_TARGET_ARCH_X86_64=0",
|
|
other => panic!("unsupported target: {}", other),
|
|
};
|
|
|
|
let out_lds = out_dir.join("linker.ld");
|
|
let status = Command::new("cpp")
|
|
.arg("-o")
|
|
.arg(&out_lds)
|
|
.arg(def)
|
|
.arg(&lds)
|
|
.status()
|
|
.expect("failed to run the preprocessor");
|
|
assert!(status.success(), "the preprocessor exits with failure");
|
|
|
|
println!("cargo:rerun-if-changed={}", lds.display());
|
|
println!("cargo:rustc-link-arg=-T{}", out_lds.display());
|
|
}
|