Source code
Revision control
Copy as Markdown
Other Tools
From 64b4d5917b65cf0dd6b1d74de637f9ddc7a8efe3 Mon Sep 17 00:00:00 2001
From: Jamie Nicol <jnicol@mozilla.com>
Date: Fri, 1 May 2026 10:56:48 +0100
Subject: [PATCH] Patch build scripts for Firefox's gn_processor.py
When vendored into Firefox, the script gn_processor.py is used to
generate moz.build files from ANGLE's GN build scripts.
This relies upon Firefox's vendored fork of Chromium's "build" repo,
which we explicitly opt in to building ANGLE with by setting the
`angle_has_build` GN arg in `gn-configs/angle.json`. In Firefox, this
repo is located at `third_party/chromium/build`. We must therefore
replace all references to `//build/` with `//chromium/build` in the GN
files.
The `//dotfile_settings.gni` import must also be replaced with
`//angle/dotfile_settings.gni` due to gn_processor.py executing in the
parent directory (i.e `third_party`, rather than `third_party/angle`).
We also use the system python3 as GN's script_executable, as we do not
vendor ANGLE's hermetic `//third_party/cpython3`.
Lastly, we comment out a couple dependencies on chromium's "testing"
repo, which ANGLE assumes is available due to enabling
`angle_has_build`, but we opted not to vendor.
---
.gn | 16 ++++-----
BUILD.gn | 24 ++++++-------
android/angle_apk.gni | 2 +-
gni/angle.gni | 50 +++++++++++++--------------
src/compiler/translator/ir/BUILD.gn | 2 +-
src/libANGLE/renderer/gl/BUILD.gn | 4 +--
src/libANGLE/renderer/metal/BUILD.gn | 2 +-
src/libANGLE/renderer/vulkan/BUILD.gn | 2 +-
8 files changed, 51 insertions(+), 51 deletions(-)
diff --git a/.gn b/.gn
index c3aed0453..285be5dc4 100644
--- a/.gn
+++ b/.gn
@@ -7,14 +7,14 @@
# As a result this file will only affect stand-alone ANGLE builds,
# not chromium builds.
-import("//build/dotfile_settings.gni")
-import("//dotfile_settings.gni")
+import("//chromium/build/dotfile_settings.gni")
+import("//angle/dotfile_settings.gni")
# Location of the build configuration file.
-buildconfig = "//build/config/BUILDCONFIG.gn"
+buildconfig = "//chromium/build/config/BUILDCONFIG.gn"
# The python interpreter to use by default.
-script_executable = "//third_party/cpython3/host/bin/python3"
+script_executable = "python3"
# These are the targets to check headers for by default. The files in targets
# matching these patterns (see "gn help label_pattern" for format) will have
@@ -28,10 +28,10 @@ script_executable = "//third_party/cpython3/host/bin/python3"
exec_script_allowlist = angle_dotfile_settings.exec_script_allowlist +
build_dotfile_settings.exec_script_allowlist +
[
- "//build/config/sysroot.gni",
- "//build/config/win/BUILD.gn",
- "//build/config/win/visual_studio_version.gni",
- "//build/gn_helpers.py",
+ "//chromium/build/config/sysroot.gni",
+ "//chromium/build/config/win/BUILD.gn",
+ "//chromium/build/config/win/visual_studio_version.gni",
+ "//chromium/build/gn_helpers.py",
"//build_overrides/build.gni",
]
diff --git a/BUILD.gn b/BUILD.gn
index f6227af7a..83cba5bcb 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -15,15 +15,15 @@ if (angle_enable_wgpu) {
import("//build_overrides/tint.gni")
}
if (angle_has_build) {
- import("//build/config/linux/pkg_config.gni")
- import("//build/config/sanitizers/sanitizers.gni")
- import("//build/config/ui.gni")
- import("//testing/libfuzzer/fuzzer_test.gni")
+ import("//chromium/build/config/linux/pkg_config.gni")
+ import("//chromium/build/config/sanitizers/sanitizers.gni")
+ import("//chromium/build/config/ui.gni")
+ #import("//testing/libfuzzer/fuzzer_test.gni")
if (is_android) {
# android/rules.gni can only be imported for Android targets
- import("//build/config/android/config.gni")
- import("//build/config/android/rules.gni")
+ import("//chromium/build/config/android/config.gni")
+ import("//chromium/build/config/android/rules.gni")
import("android/angle_apk.gni")
}
} else {
@@ -555,7 +555,7 @@ angle_source_set("xxhash") {
}
}
-if (angle_has_build) {
+if (false && angle_has_build) {
fuzzer_test("xxhash_fuzzer") {
sources = [ "src/common/third_party/xxhash/xxhash_fuzzer.cpp" ]
deps = [ ":xxhash" ]
@@ -608,7 +608,7 @@ template("angle_common_lib") {
if (using_sanitizer && !build_with_chromium) {
data_deps =
- [ "//build/config/clang:llvm-symbolizer_data($host_toolchain)" ]
+ [ "//chromium/build/config/clang:llvm-symbolizer_data($host_toolchain)" ]
}
if (is_apple) {
@@ -1332,13 +1332,13 @@ group("angle_abseil") {
}
config("angle_compression_config") {
- include_dirs = [ "//third_party/zlib/google" ]
+ include_dirs = [ "//angle/third_party/zlib/google" ]
}
group("angle_compression") {
public_configs = [
":angle_compression_config",
- "//third_party/zlib:zlib_config",
+ "//angle/third_party/zlib:zlib_config",
]
public_deps =
[ "$angle_zlib_compression_utils_dir:compression_utils_portable" ]
@@ -1429,7 +1429,7 @@ config("shared_library_public_config") {
if (build_with_chromium) {
ldflags += [
# Path for loading shared libraries for unbundled binaries.
- # From //build/config/mac/BUILD.gn, this is only added for
+ # From //chromium/build/config/mac/BUILD.gn, this is only added for
# component builds. However, since ANGLE always dynamically
# links to libvulkan, it should be re-added for non-component
# builds. (anglebug.com/42263076)
@@ -1943,7 +1943,7 @@ group("angle_static") {
# toolchain will ensure write_file() is called only once.
if (!build_with_chromium && angle_has_build &&
current_toolchain == default_toolchain) {
- import("//build/gn_logs.gni")
+ import("//chromium/build/gn_logs.gni")
# Write debug logs to gn_logs.txt.
_lines = [
diff --git a/android/angle_apk.gni b/android/angle_apk.gni
index a0123357b..96a24b710 100644
--- a/android/angle_apk.gni
+++ b/android/angle_apk.gni
@@ -2,7 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-import("//build/config/android/rules.gni")
+import("//chromium/build/config/android/rules.gni")
import("../gni/angle.gni")
vulkan_validation_layers = [ "VkLayer_khronos_validation" ]
diff --git a/gni/angle.gni b/gni/angle.gni
index 34451e32d..5bb359bb7 100644
--- a/gni/angle.gni
+++ b/gni/angle.gni
@@ -4,7 +4,7 @@
import("//build_overrides/angle.gni")
if (angle_has_build) {
- import("//build/config/gclient_args.gni")
+ import("//chromium/build/config/gclient_args.gni")
}
if (!defined(checkout_angle_cl_deps)) {
@@ -74,17 +74,17 @@ declare_args() {
}
if (angle_has_build) {
- import("//build/config/dcheck_always_on.gni")
- import("//build/config/ozone.gni") # import the ozone_platform_x11 variable
- import("//build/config/sanitizers/sanitizers.gni")
+ import("//chromium/build/config/dcheck_always_on.gni")
+ import("//chromium/build/config/ozone.gni") # import the ozone_platform_x11 variable
+ import("//chromium/build/config/sanitizers/sanitizers.gni")
import("//build_overrides/build.gni")
- import("//testing/test.gni")
+ #import("//testing/test.gni")
if (is_android) {
- import("//build/config/android/config.gni")
+ import("//chromium/build/config/android/config.gni")
}
if (is_win) {
- import("//build/config/win/visual_studio_version.gni")
+ import("//chromium/build/config/win/visual_studio_version.gni")
}
if (is_chromeos) {
@@ -438,22 +438,22 @@ angle_common_configs = [
angle_remove_configs = []
if (angle_has_build) {
- angle_remove_configs += [ "//build/config/compiler:default_include_dirs" ]
+ angle_remove_configs += [ "//chromium/build/config/compiler:default_include_dirs" ]
if (is_clang) {
- angle_remove_configs += [ "//build/config/clang:find_bad_constructs" ]
+ angle_remove_configs += [ "//chromium/build/config/clang:find_bad_constructs" ]
}
if (!is_debug && !is_fuchsia) {
# default->optimize_max (e.g. Android defaults to -Oz, optimize_max is -O2)
- angle_remove_configs += [ "//build/config/compiler:default_optimization" ]
- angle_common_configs += [ "//build/config/compiler:optimize_max" ]
+ angle_remove_configs += [ "//chromium/build/config/compiler:default_optimization" ]
+ angle_common_configs += [ "//chromium/build/config/compiler:optimize_max" ]
}
if (defined(angle_sanitize_array_bounds) && !angle_sanitize_array_bounds) {
angle_remove_configs +=
- [ "//build/config/compiler:sanitize_c_array_bounds" ]
+ [ "//chromium/build/config/compiler:sanitize_c_array_bounds" ]
}
}
@@ -523,7 +523,7 @@ template("angle_executable") {
configs -= invoker.suppressed_configs
if (angle_has_build && is_win) {
- data_deps += [ "//build/win:runtime_libs" ]
+ data_deps += [ "//chromium/build/win:runtime_libs" ]
}
if (is_ios) {
@@ -560,9 +560,9 @@ template("angle_shared_library") {
if (is_apple) {
# If a "build with ARC" config is present, remove it.
- if (filter_include(configs, [ "//build/config/compiler:enable_arc" ]) !=
+ if (filter_include(configs, [ "//chromium/build/config/compiler:enable_arc" ]) !=
[]) {
- configs -= [ "//build/config/compiler:enable_arc" ]
+ configs -= [ "//chromium/build/config/compiler:enable_arc" ]
}
}
@@ -570,7 +570,7 @@ template("angle_shared_library") {
if (is_android) {
configs += [ angle_root + ":build_id_config" ]
- configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
+ configs -= [ "//chromium/build/config/android:hide_all_but_jni_onload" ]
}
if (is_ios) {
info_plist = "$angle_root/util/ios/Info.plist"
@@ -614,9 +614,9 @@ template("angle_source_set") {
if (is_apple) {
# If a "build with ARC" config is present, remove it.
- if (filter_include(configs, [ "//build/config/compiler:enable_arc" ]) !=
+ if (filter_include(configs, [ "//chromium/build/config/compiler:enable_arc" ]) !=
[]) {
- configs -= [ "//build/config/compiler:enable_arc" ]
+ configs -= [ "//chromium/build/config/compiler:enable_arc" ]
}
}
}
@@ -640,9 +640,9 @@ template("angle_static_library") {
if (is_apple) {
# If a "build with ARC" config is present, remove it.
- if (filter_include(configs, [ "//build/config/compiler:enable_arc" ]) !=
+ if (filter_include(configs, [ "//chromium/build/config/compiler:enable_arc" ]) !=
[]) {
- configs -= [ "//build/config/compiler:enable_arc" ]
+ configs -= [ "//chromium/build/config/compiler:enable_arc" ]
}
}
}
@@ -665,9 +665,9 @@ if (angle_standalone || build_with_chromium ||
if (is_apple) {
# If a "build with ARC" config is present, remove it.
- if (filter_include(configs, [ "//build/config/compiler:enable_arc" ]) !=
+ if (filter_include(configs, [ "//chromium/build/config/compiler:enable_arc" ]) !=
[]) {
- configs -= [ "//build/config/compiler:enable_arc" ]
+ configs -= [ "//chromium/build/config/compiler:enable_arc" ]
}
}
@@ -734,12 +734,12 @@ if (angle_standalone || build_with_chromium ||
if ((is_linux || is_chromeos) && !is_component_build) {
# Set rpath to find shared libs in a non-component build.
- configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
+ configs += [ "//chromium/build/config/gcc:rpath_for_built_shared_libraries" ]
}
if (is_android) {
public_configs += [ "$angle_root:build_id_config" ]
- configs -= [ "//build/config/android:hide_all_but_jni" ]
+ configs -= [ "//chromium/build/config/android:hide_all_but_jni" ]
use_default_launcher = false
generate_final_jni = false
if (angle_standalone_benchmark) {
@@ -764,7 +764,7 @@ if (angle_standalone || build_with_chromium ||
}
if (angle_has_build && is_win) {
- data_deps += [ "//build/win:runtime_libs" ]
+ data_deps += [ "//chromium/build/win:runtime_libs" ]
}
}
}
diff --git a/src/compiler/translator/ir/BUILD.gn b/src/compiler/translator/ir/BUILD.gn
index 3fbc538a9..810c76ed8 100644
--- a/src/compiler/translator/ir/BUILD.gn
+++ b/src/compiler/translator/ir/BUILD.gn
@@ -4,7 +4,7 @@
import("../../../../gni/angle.gni")
if (angle_has_build) {
- import("//build/rust/rust_static_library.gni")
+ import("//chromium/build/rust/rust_static_library.gni")
}
angle_translator_ir_sources = [
diff --git a/src/libANGLE/renderer/gl/BUILD.gn b/src/libANGLE/renderer/gl/BUILD.gn
index 6be94901e..e25f58b35 100644
--- a/src/libANGLE/renderer/gl/BUILD.gn
+++ b/src/libANGLE/renderer/gl/BUILD.gn
@@ -8,7 +8,7 @@ import("../../../../gni/angle.gni")
import("gl_backend.gni")
if (angle_use_gbm) {
- import("//build/config/linux/pkg_config.gni")
+ import("//chromium/build/config/linux/pkg_config.gni")
}
assert(angle_enable_gl)
@@ -47,7 +47,7 @@ angle_source_set("angle_gl_backend") {
]
if (angle_has_build && (is_linux || is_chromeos)) {
- deps += [ "//build/config/linux/libdrm" ]
+ deps += [ "//chromium/build/config/linux/libdrm" ]
}
if (is_win) {
diff --git a/src/libANGLE/renderer/metal/BUILD.gn b/src/libANGLE/renderer/metal/BUILD.gn
index 8e4c836b0..5906bf33f 100644
--- a/src/libANGLE/renderer/metal/BUILD.gn
+++ b/src/libANGLE/renderer/metal/BUILD.gn
@@ -8,7 +8,7 @@ import("../../../../gni/angle.gni")
import("metal_backend.gni")
if (metal_internal_shader_compilation_supported) {
- import("//build/config/mac/mac_sdk.gni")
+ import("//chromium/build/config/mac/mac_sdk.gni")
}
assert(is_mac || is_ios)
diff --git a/src/libANGLE/renderer/vulkan/BUILD.gn b/src/libANGLE/renderer/vulkan/BUILD.gn
index 4eef7114f..8264b762a 100644
--- a/src/libANGLE/renderer/vulkan/BUILD.gn
+++ b/src/libANGLE/renderer/vulkan/BUILD.gn
@@ -4,7 +4,7 @@
#
# This file houses the build configuration for the ANGLE Vulkan back-end.
-import("//build/config/dcheck_always_on.gni")
+import("//chromium/build/config/dcheck_always_on.gni")
import("//build_overrides/swiftshader.gni")
import("vulkan_backend.gni")
--
2.43.0