Set the MacOS rpath in the build script (#30054)

Use the build script to set the rpath in MacOS instead of mach. This is
another step toward allowing building servo without mach.
This commit is contained in:
Martin Robinson 2023-08-01 16:46:28 +02:00 committed by GitHub
parent fef332f385
commit f3c7db7d0f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 14 deletions

View file

@ -25,6 +25,12 @@ fn main() {
println!("cargo:rustc-env=VERGEN_GIT_SHA=nogit");
}
// 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/");
// Generate GL bindings
// For now, we only support EGL, and only on Windows and Android.
if target.contains("android") || target.contains("windows") {

View file

@ -36,4 +36,10 @@ fn main() {
);
println!("cargo:rustc-env=VERGEN_GIT_SHA=nogit");
}
// 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/");
}

View file

@ -238,12 +238,6 @@ class MachCommands(CommandBase):
if not package_gstreamer_dylibs(self.cross_compile_target, servo_path):
return 1
# On Mac we use the relocatable dylibs from offical gstreamer
# .pkg distribution. We need to add an LC_RPATH to the servo binary
# to allow the dynamic linker to be able to locate these dylibs
# See `man dyld` for more info
add_rpath_to_binary(servo_path, "@executable_path/lib/")
# On the Mac, set a lovely icon. This makes it easier to pick out the Servo binary in tools
# like Instruments.app.
try:
@ -404,14 +398,6 @@ def change_link_name(binary, old, new):
install_name_tool(binary, '-change', old, f"@executable_path/{new}")
def add_rpath_to_binary(binary, relative_path):
install_name_tool(binary, "-add_rpath", relative_path)
def change_rpath_in_binary(binary, old, new):
install_name_tool(binary, "-rpath", old, new)
def is_system_library(lib):
return lib.startswith("/System/Library") or lib.startswith("/usr/lib")