mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Fix cross-compiling servoshell on Mac hosts (#32504)
`#[cfg(target_os = "xxx")]` when used in build scripts checks which platform the **build script** is compiled for - i.e. the Host OS. Since ware interested in the actual target os, we need to read `CARGO_CFG_TARGET_OS`, a value that is set at **runtime of the build script**. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This commit is contained in:
parent
3370146490
commit
19067366df
2 changed files with 19 additions and 15 deletions
|
@ -20,13 +20,11 @@ bench = false
|
|||
|
||||
[build-dependencies]
|
||||
vergen = { version = "8.3.1", features = ["git", "git2"] }
|
||||
cc = "1.0"
|
||||
|
||||
[target.'cfg(windows)'.build-dependencies]
|
||||
winres = "0.1"
|
||||
|
||||
[target.'cfg(target_os = "macos")'.build-dependencies]
|
||||
cc = "1.0"
|
||||
|
||||
[package.metadata.winres]
|
||||
FileDescription = "Servo"
|
||||
LegalCopyright = "© The Servo Project Developers"
|
||||
|
|
|
@ -21,15 +21,21 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||
println!("cargo:rustc-cfg=servo_do_not_use_in_production");
|
||||
}
|
||||
|
||||
#[cfg(windows)]
|
||||
{
|
||||
let mut res = winres::WindowsResource::new();
|
||||
res.set_icon("../../resources/servo.ico");
|
||||
res.set_manifest_file("platform/windows/servo.exe.manifest");
|
||||
res.compile().unwrap();
|
||||
}
|
||||
#[cfg(target_os = "macos")]
|
||||
{
|
||||
// Note: We can't use `#[cfg(windows)]`, since that would check the host platform
|
||||
// and not the target platform
|
||||
let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap();
|
||||
|
||||
if target_os == "windows" {
|
||||
#[cfg(windows)]
|
||||
{
|
||||
let mut res = winres::WindowsResource::new();
|
||||
res.set_icon("../../resources/servo.ico");
|
||||
res.set_manifest_file("platform/windows/servo.exe.manifest");
|
||||
res.compile().unwrap();
|
||||
}
|
||||
#[cfg(not(windows))]
|
||||
panic!("Cross-compiling to windows is currently not supported");
|
||||
} else if target_os == "macos" {
|
||||
cc::Build::new()
|
||||
.file("platform/macos/count_threads.c")
|
||||
.compile("count_threads");
|
||||
|
@ -50,8 +56,8 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||
// On MacOS, all dylib dependencies are shipped along with the binary
|
||||
// in the "/lib" directory. Setting the rpath here, allows the dynamic
|
||||
// linker to locate them. See `man dyld` for more info.
|
||||
#[cfg(target_os = "macos")]
|
||||
println!("cargo:rustc-link-arg=-Wl,-rpath,@executable_path/lib/");
|
||||
|
||||
if target_os == "macos" {
|
||||
println!("cargo:rustc-link-arg=-Wl,-rpath,@executable_path/lib/");
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue