diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-29 10:46:47 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-11-02 12:02:10 +0000 |
commit | 99677208ff3b216fdfec551fbe548da5520cd6fb (patch) | |
tree | 476a4865c10320249360e859d8fdd3e01833b03a /chromium/build/toolchain | |
parent | c30a6232df03e1efbd9f3b226777b07e087a1122 (diff) | |
download | qtwebengine-chromium-99677208ff3b216fdfec551fbe548da5520cd6fb.tar.gz |
BASELINE: Update Chromium to 86.0.4240.124
Change-Id: Ide0ff151e94cd665ae6521a446995d34a9d1d644
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/build/toolchain')
-rw-r--r-- | chromium/build/toolchain/OWNERS | 1 | ||||
-rw-r--r-- | chromium/build/toolchain/android/OWNERS | 1 | ||||
-rw-r--r-- | chromium/build/toolchain/apple/OWNERS | 1 | ||||
-rw-r--r-- | chromium/build/toolchain/concurrent_links.gni | 32 | ||||
-rw-r--r-- | chromium/build/toolchain/gcc_toolchain.gni | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | chromium/build/toolchain/get_concurrent_links.py | 103 | ||||
-rw-r--r-- | chromium/build/toolchain/mac/OWNERS | 3 | ||||
-rw-r--r-- | chromium/build/toolchain/toolchain.gni | 4 | ||||
-rw-r--r-- | chromium/build/toolchain/win/midl.gni | 2 | ||||
-rw-r--r-- | chromium/build/toolchain/win/setup_toolchain.py | 9 |
10 files changed, 114 insertions, 44 deletions
diff --git a/chromium/build/toolchain/OWNERS b/chromium/build/toolchain/OWNERS index 37c7730cbcf..39669b33da0 100644 --- a/chromium/build/toolchain/OWNERS +++ b/chromium/build/toolchain/OWNERS @@ -1,4 +1,3 @@ -dpranke@chromium.org dpranke@google.com scottmg@chromium.org diff --git a/chromium/build/toolchain/android/OWNERS b/chromium/build/toolchain/android/OWNERS new file mode 100644 index 00000000000..a74cfbe228b --- /dev/null +++ b/chromium/build/toolchain/android/OWNERS @@ -0,0 +1 @@ +file://build/android/OWNERS diff --git a/chromium/build/toolchain/apple/OWNERS b/chromium/build/toolchain/apple/OWNERS new file mode 100644 index 00000000000..6f3324f07c8 --- /dev/null +++ b/chromium/build/toolchain/apple/OWNERS @@ -0,0 +1 @@ +file://build/apple/OWNERS diff --git a/chromium/build/toolchain/concurrent_links.gni b/chromium/build/toolchain/concurrent_links.gni index 55407729774..37422736148 100644 --- a/chromium/build/toolchain/concurrent_links.gni +++ b/chromium/build/toolchain/concurrent_links.gni @@ -7,6 +7,7 @@ # in the context of the default_toolchain, so we can at least check for that. assert(current_toolchain == default_toolchain) +import("//build/config/android/config.gni") import("//build/config/compiler/compiler.gni") import("//build/config/mac/symbols.gni") import("//build/config/sanitizers/sanitizers.gni") @@ -47,10 +48,8 @@ if (concurrent_links == -1) { } else if (is_android && !is_component_build && symbol_level == 2) { # Full debug symbols require large memory for link. _args = [ "--mem_per_link_gb=25" ] - } else if (is_android && !is_debug && !using_sanitizer && symbol_level < 2) { - # Increase the number of concurrent links for release bots. Debug builds - # make heavier use of ProGuard, and so should not be raised. Sanitizers also - # increase the memory overhead. + } else if (is_android && !is_debug && !using_sanitizer && is_java_debug && + disable_android_lint && symbol_level < 2) { if (symbol_level == 1) { _args = [ "--mem_per_link_gb=6" ] } else { @@ -63,7 +62,30 @@ if (concurrent_links == -1) { _args = [] } + # For Android builds, we also need to be wary of: + # * ProGuard / R8 + # * Android Lint + # These both have a peak usage of < 2GB, but that is still large enough for + # them to need to use a pool since they both typically happen at the + # same time as linking. + if (is_android) { + _args += [ "--secondary_mem_per_link=2" ] + } + # TODO(crbug.com/617429) Pass more build configuration info to the script # so that we can compute better values. - concurrent_links = exec_script("get_concurrent_links.py", _args, "value") + _command_dict = exec_script("get_concurrent_links.py", _args, "scope") + + concurrent_links = _command_dict.primary_pool_size + concurrent_links_logs = _command_dict.explanation + if (_command_dict.secondary_pool_size >= concurrent_links) { + # Have R8 / Lint share the link pool unless we would safely get more + # concurrency out of using a separate one. + # On low-RAM machines, this allows an apk's native library to link at the + # same time as its java is optimized with R8. + java_cmd_pool_size = _command_dict.secondary_pool_size + } +} else { + concurrent_links_logs = + [ "concurrent_links set by GN arg (value=$concurrent_links)" ] } diff --git a/chromium/build/toolchain/gcc_toolchain.gni b/chromium/build/toolchain/gcc_toolchain.gni index 1c7bf7e7ab8..06854b73f02 100644 --- a/chromium/build/toolchain/gcc_toolchain.gni +++ b/chromium/build/toolchain/gcc_toolchain.gni @@ -32,7 +32,7 @@ declare_args() { # When the arg is set via args.gn, it applies to all toolchains. In order to not # hit the assert in grit_rule.gni, explicitly disable for host toolchains. -if (is_linux && target_os == "android") { +if ((is_linux || is_chromeos) && target_os == "android") { enable_resource_whitelist_generation = false } diff --git a/chromium/build/toolchain/get_concurrent_links.py b/chromium/build/toolchain/get_concurrent_links.py index e5121c77a97..e895e13bab8 100644..100755 --- a/chromium/build/toolchain/get_concurrent_links.py +++ b/chromium/build/toolchain/get_concurrent_links.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python # Copyright 2014 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -7,28 +8,32 @@ from __future__ import print_function +import argparse import multiprocessing -import optparse import os import re import subprocess import sys +sys.path.insert(1, os.path.join(os.path.dirname(__file__), '..')) +import gn_helpers + + def _GetTotalMemoryInBytes(): if sys.platform in ('win32', 'cygwin'): import ctypes class MEMORYSTATUSEX(ctypes.Structure): _fields_ = [ - ("dwLength", ctypes.c_ulong), - ("dwMemoryLoad", ctypes.c_ulong), - ("ullTotalPhys", ctypes.c_ulonglong), - ("ullAvailPhys", ctypes.c_ulonglong), - ("ullTotalPageFile", ctypes.c_ulonglong), - ("ullAvailPageFile", ctypes.c_ulonglong), - ("ullTotalVirtual", ctypes.c_ulonglong), - ("ullAvailVirtual", ctypes.c_ulonglong), - ("sullAvailExtendedVirtual", ctypes.c_ulonglong), + ("dwLength", ctypes.c_ulong), + ("dwMemoryLoad", ctypes.c_ulong), + ("ullTotalPhys", ctypes.c_ulonglong), + ("ullAvailPhys", ctypes.c_ulonglong), + ("ullTotalPageFile", ctypes.c_ulonglong), + ("ullAvailPageFile", ctypes.c_ulonglong), + ("ullTotalVirtual", ctypes.c_ulonglong), + ("ullAvailVirtual", ctypes.c_ulonglong), + ("sullAvailExtendedVirtual", ctypes.c_ulonglong), ] stat = MEMORYSTATUSEX(dwLength=ctypes.sizeof(MEMORYSTATUSEX)) @@ -52,35 +57,71 @@ def _GetTotalMemoryInBytes(): return 0 -def _GetDefaultConcurrentLinks(mem_per_link_gb, reserve_mem_gb): +def _GetDefaultConcurrentLinks(per_link_gb, reserve_gb, secondary_per_link_gb): + explanation = [] + explanation.append( + 'per_link_gb={} reserve_gb={} secondary_per_link_gb={}'.format( + per_link_gb, reserve_gb, secondary_per_link_gb)) # Inherit the legacy environment variable for people that have set it in GYP. - pool_size = int(os.getenv('GYP_LINK_CONCURRENCY', 0)) - if pool_size: - return pool_size + num_links = int(os.getenv('GYP_LINK_CONCURRENCY', 0)) + if num_links: + reason = 'GYP_LINK_CONCURRENCY' + else: + mem_total_gb = float(_GetTotalMemoryInBytes()) / 2**30 + mem_total_gb = max(0, mem_total_gb - reserve_gb) + mem_cap = int(max(1, mem_total_gb / per_link_gb)) + hard_cap = max(1, int(os.getenv('GYP_LINK_CONCURRENCY_MAX', 2**32))) + + try: + cpu_cap = multiprocessing.cpu_count() + except: + cpu_cap = 1 - mem_total_bytes = _GetTotalMemoryInBytes() - mem_total_bytes = max(0, mem_total_bytes - reserve_mem_gb * 2**30) - num_concurrent_links = int(max(1, mem_total_bytes / mem_per_link_gb / 2**30)) - hard_cap = max(1, int(os.getenv('GYP_LINK_CONCURRENCY_MAX', 2**32))) + explanation.append('cpu_count={} mem_total_gb={:.1f}GiB'.format( + cpu_cap, mem_total_gb)) - try: - cpu_cap = multiprocessing.cpu_count() - except: - cpu_cap = 1 + num_links = min(mem_cap, hard_cap, cpu_cap) + if num_links == cpu_cap: + reason = 'cpu_count' + elif num_links == hard_cap: + reason = 'GYP_LINK_CONCURRENCY_MAX' + else: + reason = 'RAM' - return min(num_concurrent_links, hard_cap, cpu_cap) + explanation.append('concurrent_links={} (reason: {})'.format( + num_links, reason)) + + # See if there is RAM leftover for a secondary pool. + if secondary_per_link_gb and num_links == mem_cap: + mem_remaining = mem_total_gb - mem_cap * per_link_gb + secondary_size = int(max(0, mem_remaining / secondary_per_link_gb)) + explanation.append('secondary_size={} (mem_remaining={:.1f}GiB)'.format( + secondary_size, mem_remaining)) + else: + secondary_size = 0 + + return num_links, secondary_size, explanation def main(): - parser = optparse.OptionParser() - parser.add_option('--mem_per_link_gb', action="store", type="int", default=8) - parser.add_option('--reserve_mem_gb', action="store", type="int", default=0) - parser.disable_interspersed_args() - options, _ = parser.parse_args() - - print(_GetDefaultConcurrentLinks(options.mem_per_link_gb, - options.reserve_mem_gb)) + parser = argparse.ArgumentParser() + parser.add_argument('--mem_per_link_gb', type=int, default=8) + parser.add_argument('--reserve_mem_gb', type=int, default=0) + parser.add_argument('--secondary_mem_per_link', type=int, default=0) + options = parser.parse_args() + + primary_pool_size, secondary_pool_size, explanation = ( + _GetDefaultConcurrentLinks(options.mem_per_link_gb, + options.reserve_mem_gb, + options.secondary_mem_per_link)) + sys.stdout.write( + gn_helpers.ToGNString({ + 'primary_pool_size': primary_pool_size, + 'secondary_pool_size': secondary_pool_size, + 'explanation': explanation, + })) return 0 + if __name__ == '__main__': sys.exit(main()) diff --git a/chromium/build/toolchain/mac/OWNERS b/chromium/build/toolchain/mac/OWNERS index 0ed2e154d83..6f3324f07c8 100644 --- a/chromium/build/toolchain/mac/OWNERS +++ b/chromium/build/toolchain/mac/OWNERS @@ -1,2 +1 @@ -rsesek@chromium.org -sdefresne@chromium.org +file://build/apple/OWNERS diff --git a/chromium/build/toolchain/toolchain.gni b/chromium/build/toolchain/toolchain.gni index 80c2e7b5e4a..d556b0e0927 100644 --- a/chromium/build/toolchain/toolchain.gni +++ b/chromium/build/toolchain/toolchain.gni @@ -39,7 +39,7 @@ if (generate_linker_map) { declare_args() { # Clang compiler version. Clang files are placed at version-dependent paths. - clang_version = "11.0.0" + clang_version = "12.0.0" } # Check target_os here instead of is_ios as this file is loaded for secondary @@ -49,7 +49,7 @@ assert(!use_xcode_clang || target_os == "ios", "Using Xcode's clang is only supported in iOS builds") # Extension for shared library files (including leading dot). -if (is_mac || is_ios) { +if (is_apple) { shlib_extension = ".dylib" } else if (is_android && is_component_build) { # By appending .cr, we prevent name collisions with libraries already diff --git a/chromium/build/toolchain/win/midl.gni b/chromium/build/toolchain/win/midl.gni index 72e79ebaa35..9c107dbce1d 100644 --- a/chromium/build/toolchain/win/midl.gni +++ b/chromium/build/toolchain/win/midl.gni @@ -55,7 +55,7 @@ template("midl") { } else { # midl.py expects 'gen' to be replaced with 'midl'. generated_dir = rebase_path("//third_party/win_build_output") + "/midl/" + - rebase_path(rebase_path(out_dir, root_build_dir), "gen") + rebase_path(out_dir, root_gen_dir) } if (defined(invoker.dynamic_guid)) { diff --git a/chromium/build/toolchain/win/setup_toolchain.py b/chromium/build/toolchain/win/setup_toolchain.py index 1a7c3d74b5c..d9cd6129754 100644 --- a/chromium/build/toolchain/win/setup_toolchain.py +++ b/chromium/build/toolchain/win/setup_toolchain.py @@ -139,9 +139,16 @@ def _LoadToolchainEnv(cpu, sdk_dir, target_store): if not os.path.exists(script_path): # vcvarsall.bat for VS 2017 fails if run after running vcvarsall.bat from # VS 2013 or VS 2015. Fix this by clearing the vsinstalldir environment - # variable. + # variable. Since vcvarsall.bat appends to the INCLUDE, LIB, and LIBPATH + # environment variables we need to clear those to avoid getting double + # entries when vcvarsall.bat has been run before gn gen. vcvarsall.bat + # also adds to PATH, but there is no clean way of clearing that and it + # doesn't seem to cause problems. if 'VSINSTALLDIR' in os.environ: del os.environ['VSINSTALLDIR'] + del os.environ['INCLUDE'] + del os.environ['LIB'] + del os.environ['LIBPATH'] other_path = os.path.normpath(os.path.join( os.environ['GYP_MSVS_OVERRIDE_PATH'], 'VC/Auxiliary/Build/vcvarsall.bat')) |