From 9d58b8dd70f94ceb3402e40d92c565295a18923a Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Mon, 18 Apr 2022 17:00:37 -0700 Subject: [PATCH] Add build variables required to roll ANGLE This lands buildroot changes required to roll ANGLE to tip-of-tree; specifically, to commit 866210add2f6a2f891306c1d3d802a558462c07b. List of relevant ANGLE commits and the associated change to our buildroot: * 45344f05555eb7fc5a907d45ebc7a7d7e05856f4: dependency added on `is_chromecast`. * 08805e351f3cbfacb515557dc7f7f3d9d57e93bd: dependency added on `//build/win:runtime_libs`. * b62f8dd1164a7486646ad9281ffd6f02aa926e1c: dependency added on `is_chromeos_lacros`. * 81f03cc092f9122bfa574241c28ea7d8c1ff1617: dependencies added on `angle_spirv_headers_dir` and `angle_spirv_tools_dir`. * 96aa681ce39d288a58692debacb6dc2107971c07: dependency added on `ozone_platform_headless`. * 48da1c3594095fe363bd18e58982d9856f6654fa: dependency added on `build_overrides/swiftshader.gni`. * fa2e37497495b1215062603e8d214c2f0ba79451: dependency added on `ozone_platform_x11`. * 89e3de9720ced82ad9ee7fbaf11a6a1ca2aa2349: dependency added on `using_sanitizer` * 2be4f04a47c8b30e5a4cfaa5f4ca5acff68b717c: dependency added on `ozone_platform_wayland`. Issue: https://github.com/flutter/flutter/issues/102117 --- build/config/BUILDCONFIG.gn | 10 +++++++++- build/config/compiler/BUILD.gn | 4 ---- build/win/BUILD.gn | 12 ++++++++++++ build_overrides/angle.gni | 6 ++++-- build_overrides/spirv_tools.gni | 10 ++++++++++ build_overrides/swiftshader.gni | 9 +++++++++ 6 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 build/win/BUILD.gn create mode 100644 build_overrides/spirv_tools.gni create mode 100644 build_overrides/swiftshader.gni diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn index 4866e6021b..726a571637 100644 --- a/build/config/BUILDCONFIG.gn +++ b/build/config/BUILDCONFIG.gn @@ -286,6 +286,13 @@ is_apple = is_ios || is_mac # Needed for some third_party build files from Chromium. is_nacl = false +# Needed for //third_party/angle. +is_chromecast = false +is_chromeos_lacros = false +ozone_platform_headless = false +ozone_platform_x11 = false +ozone_platform_wayland = false + default_library_type = "static_library" # ============================================================================= @@ -294,7 +301,8 @@ default_library_type = "static_library" # These Sanitizers all imply using the Clang compiler. On Windows they either # don't work or work differently. -if (!is_clang && (is_asan || is_lsan || is_tsan || is_msan)) { +using_sanitizer = !is_win && (is_asan || is_lsan || is_tsan || is_msan) +if (!is_clang && using_sanitizer) { is_clang = true } diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index 8b723d9a85..014fb7c034 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn @@ -47,10 +47,6 @@ config("default_include_dirs") { ] } -if (!is_win) { - using_sanitizer = is_asan || is_lsan || is_tsan || is_msan -} - # compiler --------------------------------------------------------------------- # # Base compiler configuration. diff --git a/build/win/BUILD.gn b/build/win/BUILD.gn new file mode 100644 index 0000000000..4e8df7d02e --- /dev/null +++ b/build/win/BUILD.gn @@ -0,0 +1,12 @@ +# Copyright 2019 The Flutter Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Windows DLLs on which Flutter has a runtime dependency that should be shipped +# with our distributable binaries. +# +# This target is for compatibility with the Chromium buildroot. In particular, +# //third_party/angle depends on it. +group("runtime_libs") { + data = [] +} diff --git a/build_overrides/angle.gni b/build_overrides/angle.gni index a4f82405cb..c6f66c9616 100644 --- a/build_overrides/angle.gni +++ b/build_overrides/angle.gni @@ -7,18 +7,20 @@ import("//build/toolchain/toolchain.gni") # The ANGLE build requires this file to point to the location of third-party # dependencies. - angle_root = "//third_party/angle" # Flutter's buildroot looks enough like Chromium to satisfy Angle, and enough # to cause GN variable collisions if we don't set this. angle_has_build = true +# Overrides for ANGLE's dependencies. angle_googletest_dir = "//third_party/googletest/src" -angle_libpng_dir = "//third_party/libpng" # Note: This path doesn't actually exist; see # //build/secondary/third_party/jsoncpp/BUILD.gn angle_jsoncpp_dir = "//third_party/jsoncpp" +angle_libpng_dir = "//third_party/libpng" +angle_spirv_headers_dir = "//third_party/spirv_headers" +angle_spirv_tools_dir = "//third_party/spirv_tools_flutter" # This is a general Chromium flag, but in the Flutter build only ANGLE needs it # so it is defined here. diff --git a/build_overrides/spirv_tools.gni b/build_overrides/spirv_tools.gni new file mode 100644 index 0000000000..c6da7ae61a --- /dev/null +++ b/build_overrides/spirv_tools.gni @@ -0,0 +1,10 @@ +# Copyright 2019 The Flutter Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# We are building inside Flutter. +spirv_tools_standalone = false + +# Paths to SPIRV-Tools dependencies in Flutter. +spirv_tools_googletest_dir = "//third_party/googletest" +spirv_tools_spirv_headers_dir = "//third_party/spirv_headers" diff --git a/build_overrides/swiftshader.gni b/build_overrides/swiftshader.gni new file mode 100644 index 0000000000..aff1f1e835 --- /dev/null +++ b/build_overrides/swiftshader.gni @@ -0,0 +1,9 @@ +# Copyright 2019 The Flutter Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# We are building SwiftShader in Flutter. +swiftshader_standalone = false + +# Path to SwiftShader. +swiftshader_dir = "//third_party/swiftshader"