chore: fix linking with component ffmpeg (#35178)
This commit is contained in:
parent
3fe00d75e9
commit
4e8480b15b
10 changed files with 42 additions and 53 deletions
7
BUILD.gn
7
BUILD.gn
|
@ -901,6 +901,13 @@ if (is_mac) {
|
||||||
"@executable_path/../../../../../..",
|
"@executable_path/../../../../../..",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# For component ffmpeg under non-component build, it is linked from
|
||||||
|
# @loader_path. However the ffmpeg.dylib is moved to a different place
|
||||||
|
# when generating app bundle, and we should change to link from @rpath.
|
||||||
|
if (is_component_ffmpeg && !is_component_build) {
|
||||||
|
ldflags += [ "-Wcrl,installnametool,-change,@loader_path/libffmpeg.dylib,@rpath/libffmpeg.dylib" ]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template("electron_helper_app") {
|
template("electron_helper_app") {
|
||||||
|
|
|
@ -1,23 +1,3 @@
|
||||||
config("build_time_executable") {
|
|
||||||
configs = []
|
|
||||||
|
|
||||||
if (is_electron_build && !is_component_build) {
|
|
||||||
# The executables which have this config applied are dependent on ffmpeg,
|
|
||||||
# which is always a shared library in an Electron build. However, in the
|
|
||||||
# non-component build, executables don't have rpath set to search for
|
|
||||||
# libraries in the executable's directory, so ffmpeg cannot be found. So
|
|
||||||
# let's make sure rpath is set here.
|
|
||||||
# See '//build/config/gcc/BUILD.gn' for details on the rpath setting.
|
|
||||||
if (is_linux) {
|
|
||||||
configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_mac) {
|
|
||||||
ldflags = [ "-Wl,-rpath,@loader_path/." ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# For MAS build, we force defining "MAS_BUILD".
|
# For MAS build, we force defining "MAS_BUILD".
|
||||||
config("mas_build") {
|
config("mas_build") {
|
||||||
if (is_mas_build) {
|
if (is_mas_build) {
|
||||||
|
|
|
@ -12,7 +12,6 @@ webview_cross_drag.patch
|
||||||
gin_enable_disable_v8_platform.patch
|
gin_enable_disable_v8_platform.patch
|
||||||
disable-redraw-lock.patch
|
disable-redraw-lock.patch
|
||||||
enable_reset_aspect_ratio.patch
|
enable_reset_aspect_ratio.patch
|
||||||
v8_context_snapshot_generator.patch
|
|
||||||
boringssl_build_gn.patch
|
boringssl_build_gn.patch
|
||||||
pepper_plugin_support.patch
|
pepper_plugin_support.patch
|
||||||
gtk_visibility.patch
|
gtk_visibility.patch
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nitish Sakhawalkar <nitsakh@icloud.com>
|
|
||||||
Date: Thu, 20 Sep 2018 17:47:58 -0700
|
|
||||||
Subject: v8_context_snapshot_generator.patch
|
|
||||||
|
|
||||||
v8_context_snapshot_generator is a build time executable.
|
|
||||||
The patch adds the config.
|
|
||||||
|
|
||||||
diff --git a/tools/v8_context_snapshot/BUILD.gn b/tools/v8_context_snapshot/BUILD.gn
|
|
||||||
index a06eae4ab3217210f997126f7dcc318785cdb759..9484ccd615817459f17daf76ff9f82e88cfacbdd 100644
|
|
||||||
--- a/tools/v8_context_snapshot/BUILD.gn
|
|
||||||
+++ b/tools/v8_context_snapshot/BUILD.gn
|
|
||||||
@@ -114,6 +114,7 @@ if (use_v8_context_snapshot) {
|
|
||||||
configs += [
|
|
||||||
"//v8:external_startup_data",
|
|
||||||
":disable_icf",
|
|
||||||
+ "//electron/build/config:build_time_executable",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -5,6 +5,8 @@
|
||||||
|
|
||||||
"src/electron/patches/devtools_frontend": "src/third_party/devtools-frontend/src",
|
"src/electron/patches/devtools_frontend": "src/third_party/devtools-frontend/src",
|
||||||
|
|
||||||
|
"src/electron/patches/ffmpeg": "src/third_party/ffmpeg",
|
||||||
|
|
||||||
"src/electron/patches/webrtc": "src/third_party/webrtc",
|
"src/electron/patches/webrtc": "src/third_party/webrtc",
|
||||||
|
|
||||||
"src/electron/patches/v8": "src/v8",
|
"src/electron/patches/v8": "src/v8",
|
||||||
|
|
1
patches/ffmpeg/.patches
Normal file
1
patches/ffmpeg/.patches
Normal file
|
@ -0,0 +1 @@
|
||||||
|
link_with_loader_path.patch
|
29
patches/ffmpeg/link_with_loader_path.patch
Normal file
29
patches/ffmpeg/link_with_loader_path.patch
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
Date: Tue, 2 Aug 2022 11:53:00 +0900
|
||||||
|
Subject: fix: link with @loader_path/libffmpeg.dylib
|
||||||
|
|
||||||
|
Submitted to https://chromium-review.googlesource.com/c/chromium/third_party/ffmpeg/+/3803946.
|
||||||
|
|
||||||
|
When building with `is_component_build=false is_component_ffmpeg=true`,
|
||||||
|
we must manually instruct executables to link with the ffmpeg.dylib,
|
||||||
|
which is generated at the @loader_path, where for most targets is the
|
||||||
|
out/{Release,Debug} dir.
|
||||||
|
|
||||||
|
Using @rpath is wrong because the @rpath of most targets does not
|
||||||
|
include the out dir, and the linker won't be able to find ffmpeg.dylib
|
||||||
|
because of so.
|
||||||
|
|
||||||
|
diff --git a/BUILD.gn b/BUILD.gn
|
||||||
|
index 5ea4e373360f1e09d8295be89beb063f482ec165..4fd65674d1a2a94868de6aa32bdde04a4b9c2662 100755
|
||||||
|
--- a/BUILD.gn
|
||||||
|
+++ b/BUILD.gn
|
||||||
|
@@ -448,7 +448,7 @@ if (is_component_ffmpeg) {
|
||||||
|
|
||||||
|
if (!is_component_build) {
|
||||||
|
if (is_mac) {
|
||||||
|
- ldflags += [ "-Wl,-install_name,@rpath/libffmpeg.dylib" ]
|
||||||
|
+ ldflags += [ "-Wl,-install_name,@loader_path/libffmpeg.dylib" ]
|
||||||
|
} else if (is_linux) {
|
||||||
|
all_dependent_configs = [
|
||||||
|
"//build/config/gcc:rpath_for_built_shared_libraries",
|
|
@ -9,7 +9,7 @@ necessary for native modules to load.
|
||||||
Also, some fixes relating to mksnapshot on ARM.
|
Also, some fixes relating to mksnapshot on ARM.
|
||||||
|
|
||||||
diff --git a/BUILD.gn b/BUILD.gn
|
diff --git a/BUILD.gn b/BUILD.gn
|
||||||
index c918081b31fdf15efd325ae9d688f6c4f59aded1..3820a03365e58a05f2df16195ed6061f1c451a05 100644
|
index c918081b31fdf15efd325ae9d688f6c4f59aded1..15d0dcf9f6ea151f4dcacff0f3dc11b318a1e1cd 100644
|
||||||
--- a/BUILD.gn
|
--- a/BUILD.gn
|
||||||
+++ b/BUILD.gn
|
+++ b/BUILD.gn
|
||||||
@@ -636,7 +636,7 @@ config("internal_config") {
|
@@ -636,7 +636,7 @@ config("internal_config") {
|
||||||
|
@ -30,12 +30,3 @@ index c918081b31fdf15efd325ae9d688f6c4f59aded1..3820a03365e58a05f2df16195ed6061f
|
||||||
|
|
||||||
deps = [
|
deps = [
|
||||||
":v8_libbase",
|
":v8_libbase",
|
||||||
@@ -6037,6 +6037,8 @@ if (current_toolchain == v8_snapshot_toolchain) {
|
|
||||||
|
|
||||||
configs = [ ":internal_config" ]
|
|
||||||
|
|
||||||
+ configs += [ "//electron/build/config:build_time_executable" ]
|
|
||||||
+
|
|
||||||
deps = [
|
|
||||||
":v8_base_without_compiler",
|
|
||||||
":v8_compiler_for_mksnapshot",
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ This patch can be safely removed if, when it is removed, `node.lib` does not
|
||||||
contain any standard C++ library exports (e.g. `std::ostringstream`).
|
contain any standard C++ library exports (e.g. `std::ostringstream`).
|
||||||
|
|
||||||
diff --git a/BUILD.gn b/BUILD.gn
|
diff --git a/BUILD.gn b/BUILD.gn
|
||||||
index b6a232081301a74ffbffb98311fc29c4015fc9f9..f5d605043e7f43324fd0bdf74f1decf634143cb0 100644
|
index 88d775bfe22d6f1ff738120d11cb1123c5ac106c..feab71df47427d6aaebddb581762fa1a2fd16887 100644
|
||||||
--- a/BUILD.gn
|
--- a/BUILD.gn
|
||||||
+++ b/BUILD.gn
|
+++ b/BUILD.gn
|
||||||
@@ -636,6 +636,10 @@ config("internal_config") {
|
@@ -636,6 +636,10 @@ config("internal_config") {
|
||||||
|
|
|
@ -6,7 +6,7 @@ Subject: expose_mksnapshot.patch
|
||||||
Needed in order to target mksnapshot for mksnapshot zip.
|
Needed in order to target mksnapshot for mksnapshot zip.
|
||||||
|
|
||||||
diff --git a/BUILD.gn b/BUILD.gn
|
diff --git a/BUILD.gn b/BUILD.gn
|
||||||
index 3820a03365e58a05f2df16195ed6061f1c451a05..b6a232081301a74ffbffb98311fc29c4015fc9f9 100644
|
index 15d0dcf9f6ea151f4dcacff0f3dc11b318a1e1cd..88d775bfe22d6f1ff738120d11cb1123c5ac106c 100644
|
||||||
--- a/BUILD.gn
|
--- a/BUILD.gn
|
||||||
+++ b/BUILD.gn
|
+++ b/BUILD.gn
|
||||||
@@ -6011,7 +6011,6 @@ if (current_toolchain == v8_generator_toolchain) {
|
@@ -6011,7 +6011,6 @@ if (current_toolchain == v8_generator_toolchain) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue