summaryrefslogtreecommitdiff
path: root/chromium/ios/third_party/webkit/BUILD.gn
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ios/third_party/webkit/BUILD.gn')
-rw-r--r--chromium/ios/third_party/webkit/BUILD.gn181
1 files changed, 98 insertions, 83 deletions
diff --git a/chromium/ios/third_party/webkit/BUILD.gn b/chromium/ios/third_party/webkit/BUILD.gn
index a21975f562e..d5381899a79 100644
--- a/chromium/ios/third_party/webkit/BUILD.gn
+++ b/chromium/ios/third_party/webkit/BUILD.gn
@@ -6,80 +6,87 @@ import("//build/config/gclient_args.gni")
import("//build/config/ios/ios_sdk.gni")
import("//build/config/zip.gni")
-# Using a locally-built WebKit is only supported for Debug simulator builds.
-_build_custom_webkit = checkout_ios_webkit && is_debug && use_ios_simulator
+declare_args() {
+ build_mac_webkit = false
+}
+
+# Using a locally-built iOS WebKit is only supported for simulator builds, and
+# only if not building WebKit for macOS.
+_build_ios_webkit =
+ checkout_ios_webkit && use_ios_simulator && !build_mac_webkit
+_build_mac_webkit = checkout_ios_webkit && build_mac_webkit
group("webkit") {
- if (_build_custom_webkit) {
+ if (_build_ios_webkit) {
deps = [ ":bundle_webkit_ios_frameworks" ]
}
public_configs = [ ":_webkit_ios_config" ]
}
-if (_build_custom_webkit) {
- # WebKit is built from source using xcodebuild (invoked via the
- # build_webkit.py wrapper script). The WebKit build places its output in a
- # sub-directory named "Release-iphonesimulator" for iOS builds and
- # "Release" for macOS builds.
- _webkit_ios_out_base_dir = "$target_out_dir/iOS"
- _webkit_mac_out_base_dir = "$target_out_dir/macOS"
-
- _webkit_ios_xcodebuild_out_dir_name = "Release-iphonesimulator"
- _webkit_mac_xcodebuild_out_dir_name = "Release"
-
- _webkit_ios_out_product_dir =
- "$_webkit_ios_out_base_dir/$_webkit_ios_xcodebuild_out_dir_name"
- _webkit_mac_out_product_dir =
- "$_webkit_mac_out_base_dir/$_webkit_mac_xcodebuild_out_dir_name"
-
- template("compile_webkit") {
- action(target_name) {
- visibility = [
- ":bundle_webkit_ios_frameworks",
- ":copy_webkit_mac_minibrowser",
- ":webkit",
- ]
-
- script = "build_webkit.py"
-
- inputs = [
- # Because it's difficult to list every webkit source file as an input
- # here, use the ChangeLog files as a proxy to determine whether or not
- # source files have changed.
- # TODO(crbug.com/934252): This will not pick up local edits to source
- # files, so find a way to properly rebuild when those change.
- "src/Tools/ChangeLog",
- "src/ChangeLog",
- "src/Source/WebKit/ChangeLog",
- "src/Source/JavaScriptCore/ChangeLog",
- "src/Source/WebKitLegacy/ChangeLog",
- "src/Source/WebKitLegacy/ios/ChangeLog",
- "src/Source/WebKitLegacy/mac/ChangeLog",
- "src/Source/bmalloc/ChangeLog",
- "src/Source/WebCore/ChangeLog",
- "src/Source/WTF/ChangeLog",
- "src/Source/ThirdParty/ChangeLog",
- "src/WebKitLibraries/ChangeLog",
- ]
-
- outputs = invoker.outputs
-
- args = invoker.args
-
- # TODO(crbug.com/934252): "-j 4" restricts xcodebuild to four simultaneous
- # jobs. This is intended to prevent overloading the machine, because ninja
- # will already be spawning a large number of jobs in parallel with
- # xcodebuild, but it causes the webkit build to run very slowly. Find a way
- # to increase the parallelism here.
- args += [
- "-j",
- "4",
- "-quiet",
- ]
- }
+# WebKit is built from source using xcodebuild (invoked via the
+# build_webkit.py wrapper script). The WebKit build places its output in a
+# sub-directory named "Release-iphonesimulator" for iOS builds and
+# "Release" for macOS builds.
+_webkit_ios_out_base_dir = "$target_out_dir/iOS"
+_webkit_mac_out_base_dir = "$target_out_dir/macOS"
+
+_webkit_ios_xcodebuild_out_dir_name = "Release-iphonesimulator"
+_webkit_mac_xcodebuild_out_dir_name = "Release"
+
+_webkit_ios_out_product_dir =
+ "$_webkit_ios_out_base_dir/$_webkit_ios_xcodebuild_out_dir_name"
+_webkit_mac_out_product_dir =
+ "$_webkit_mac_out_base_dir/$_webkit_mac_xcodebuild_out_dir_name"
+
+template("compile_webkit") {
+ action(target_name) {
+ visibility = [
+ ":bundle_webkit_ios_frameworks",
+ ":copy_webkit_mac_minibrowser",
+ ":webkit",
+ ]
+
+ script = "build_webkit.py"
+
+ inputs = [
+ # Because it's difficult to list every webkit source file as an input
+ # here, use the ChangeLog files as a proxy to determine whether or not
+ # source files have changed.
+ # TODO(crbug.com/934252): This will not pick up local edits to source
+ # files, so find a way to properly rebuild when those change.
+ "src/Tools/ChangeLog",
+ "src/ChangeLog",
+ "src/Source/WebKit/ChangeLog",
+ "src/Source/JavaScriptCore/ChangeLog",
+ "src/Source/WebKitLegacy/ChangeLog",
+ "src/Source/WebKitLegacy/ios/ChangeLog",
+ "src/Source/WebKitLegacy/mac/ChangeLog",
+ "src/Source/bmalloc/ChangeLog",
+ "src/Source/WebCore/ChangeLog",
+ "src/Source/WTF/ChangeLog",
+ "src/Source/ThirdParty/ChangeLog",
+ "src/WebKitLibraries/ChangeLog",
+ ]
+
+ outputs = invoker.outputs
+
+ args = invoker.args
+
+ # TODO(crbug.com/934252): "-j 4" restricts xcodebuild to four simultaneous
+ # jobs. This is intended to prevent overloading the machine, because ninja
+ # will already be spawning a large number of jobs in parallel with
+ # xcodebuild, but it causes the webkit build to run very slowly. Find a way
+ # to increase the parallelism here.
+ args += [
+ "-j",
+ "4",
+ "-quiet",
+ ]
}
+}
+if (_build_ios_webkit) {
compile_webkit("compile_webkit_ios_frameworks") {
outputs = [
# The frameworks themselves include many resource files, but as a first
@@ -92,6 +99,7 @@ if (_build_custom_webkit) {
"$_webkit_ios_out_product_dir/WebKit.framework/WebKit",
"$_webkit_ios_out_product_dir/WebKitLegacy.framework",
"$_webkit_ios_out_product_dir/WebKitLegacy.framework/WebKitLegacy",
+ "$_webkit_ios_out_product_dir/WebKitTestRunnerApp.app/Frameworks/libclang_rt.asan_iossim_dynamic.dylib",
"$_webkit_ios_out_product_dir/com.apple.WebKit.Networking.xpc",
"$_webkit_ios_out_product_dir/com.apple.WebKit.Networking.xpc/com.apple.WebKit.Networking.Development",
"$_webkit_ios_out_product_dir/com.apple.WebKit.Plugin.64.xpc",
@@ -102,13 +110,33 @@ if (_build_custom_webkit) {
"$_webkit_ios_out_product_dir/com.apple.WebKit.WebContent.xpc/com.apple.WebKit.WebContent.Development",
]
args = [
- "--ios-simulator",
+ "--ios_simulator",
"--asan",
"--output_dir",
rebase_path("$_webkit_ios_out_base_dir"),
]
}
+ bundle_data("bundle_webkit_ios_frameworks") {
+ public_deps = [ ":compile_webkit_ios_frameworks" ]
+
+ sources = [
+ "$_webkit_ios_out_product_dir/JavaScriptCore.framework",
+ "$_webkit_ios_out_product_dir/WebCore.framework",
+ "$_webkit_ios_out_product_dir/WebKit.framework",
+ "$_webkit_ios_out_product_dir/WebKitLegacy.framework",
+ "$_webkit_ios_out_product_dir/WebKitTestRunnerApp.app/Frameworks/libclang_rt.asan_iossim_dynamic.dylib",
+ "$_webkit_ios_out_product_dir/com.apple.WebKit.Networking.xpc",
+ "$_webkit_ios_out_product_dir/com.apple.WebKit.Plugin.64.xpc",
+ "$_webkit_ios_out_product_dir/com.apple.WebKit.WebContent.Development.xpc",
+ "$_webkit_ios_out_product_dir/com.apple.WebKit.WebContent.xpc",
+ ]
+ outputs =
+ [ "{{bundle_contents_dir}}/WebKitFrameworks/{{source_file_part}}" ]
+ }
+}
+
+if (_build_mac_webkit) {
compile_webkit("compile_webkit_mac_minibrowser") {
outputs = [ "$_webkit_mac_out_product_dir" ]
args = [
@@ -132,23 +160,6 @@ if (_build_custom_webkit) {
]
}
- bundle_data("bundle_webkit_ios_frameworks") {
- public_deps = [ ":compile_webkit_ios_frameworks" ]
-
- sources = [
- "$_webkit_ios_out_product_dir/JavaScriptCore.framework",
- "$_webkit_ios_out_product_dir/WebCore.framework",
- "$_webkit_ios_out_product_dir/WebKit.framework",
- "$_webkit_ios_out_product_dir/WebKitLegacy.framework",
- "$_webkit_ios_out_product_dir/com.apple.WebKit.Networking.xpc",
- "$_webkit_ios_out_product_dir/com.apple.WebKit.Plugin.64.xpc",
- "$_webkit_ios_out_product_dir/com.apple.WebKit.WebContent.Development.xpc",
- "$_webkit_ios_out_product_dir/com.apple.WebKit.WebContent.xpc",
- ]
- outputs =
- [ "{{bundle_contents_dir}}/WebKitFrameworks/{{source_file_part}}" ]
- }
-
action("copy_webkit_mac_minibrowser") {
script = "copy_webkit_for_clusterfuzz.py"
@@ -158,6 +169,8 @@ if (_build_custom_webkit) {
]
outputs = [ "$root_out_dir/WebKitMacOS" ]
+ _clang_asan_lib = rebase_path(sources[0], root_build_dir) + "/WebKitTestRunnerApp.app/Contents/Frameworks/libclang_rt.asan_osx_dynamic.dylib"
+
args = [
"--output",
rebase_path(outputs[0], root_build_dir),
@@ -165,6 +178,8 @@ if (_build_custom_webkit) {
rebase_path(sources[0], root_build_dir),
"--clusterfuzz_script",
rebase_path(sources[1], root_build_dir),
+ "--clang_asan_library",
+ "$_clang_asan_lib",
]
public_deps = [ ":compile_webkit_mac_minibrowser" ]
@@ -172,7 +187,7 @@ if (_build_custom_webkit) {
}
config("_webkit_ios_config") {
- if (_build_custom_webkit) {
+ if (_build_ios_webkit) {
# From the ld documentation: "Directories specified with -F are searched in
# the order they appear on the command line and before the default search
# path."