diff options
author | Lorenzo Tilve <ltilve@igalia.com> | 2020-12-22 12:13:14 +0100 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2021-01-08 11:56:40 +0000 |
commit | 3ec6b8b20636befeb458c2118fc45b6aef66530f (patch) | |
tree | ef180b54aef9b9380a0f884863f9dd40d90e8aa7 /recipes-wam/chromium/gn-utils.inc | |
parent | 8bd9af16b19faf19c5ec86043fc734ef27688bd8 (diff) |
web-runtime: Update from chromium68 to chromium79
This patch contains all the squashed changes needed
to bump WAM and Chromium to M79, including all the
ported changes from both upstream Chromium, webOSE and
and the former chromium 68 version.
It includes the needed changes on the recipes, and bumps
the versions to the new commits/branches of the
Chromium and Wam repositories.
The split of the ongoing changes merged is available here:
https://github.com/Igalia/meta-agl-html5-dev/commits/chromium79
Bug-AGL: SPEC-3576
Change-Id: Ia0de6f11001189789d4ffbf01ed81929c57bc7c5
Signed-off-by: Lorenzo Tilve <ltilve@igalia.com>
Diffstat (limited to 'recipes-wam/chromium/gn-utils.inc')
-rw-r--r-- | recipes-wam/chromium/gn-utils.inc | 151 |
1 files changed, 13 insertions, 138 deletions
diff --git a/recipes-wam/chromium/gn-utils.inc b/recipes-wam/chromium/gn-utils.inc index 0fd55a638..156b56d2d 100644 --- a/recipes-wam/chromium/gn-utils.inc +++ b/recipes-wam/chromium/gn-utils.inc @@ -16,142 +16,17 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -# GN host architecture helpers. -# -# BUILD_ARCH's value corresponds to what uname returns as the machine name. -# The mapping in gn_host_arch_name() tries to match several possible values -# returned by the Linux kernel in uname(2) into the corresponding values GN -# understands. -def gn_host_arch_name(d): - """Returns a GN architecture name corresponding to the build host's machine - architecture.""" - import re - arch_translations = { - r'aarch64.*': 'arm64', - r'arm.*': 'arm', - r'i[3456]86$': 'x86', - r'x86_64$': 'x64', - } - build_arch = d.getVar("BUILD_ARCH") - for arch_regexp, gn_arch_name in arch_translations.items(): - if re.match(arch_regexp, build_arch): - return gn_arch_name - bb.fatal('Unsuported BUILD_ARCH value: "%s"' % build_arch) - -# GN target architecture helpers. -# -# Determining the target architecture is more difficult, as there are many -# different values we can use on the Yocto side (e.g. TUNE_ARCH, TARGET_ARCH, -# MACHINEOVERRIDES etc). What we do is define the mapping with regular, -# non-Python variables with overrides that are generic enough (i.e. "x86" -# instead of "i586") and then use gn_target_arch_name() to return the right -# value with some validation. -GN_TARGET_ARCH_NAME_aarch64 = "arm64" -GN_TARGET_ARCH_NAME_arm = "arm" -GN_TARGET_ARCH_NAME_x86 = "x86" -GN_TARGET_ARCH_NAME_x86-64 = "x64" - -BUILD_CC_toolchain-clang = "clang" -BUILD_CXX_toolchain-clang = "clang++" -BUILD_LD_toolchain-clang = "clang" - -# knob for clang, when using meta-clang to provide clang and case where -# clang happens to be default compiler for OE we should let it use clang -def is_default_cc_clang(d): - """Return true if clang is default cross compiler.""" - toolchain = d.getVar("TOOLCHAIN") - overrides = d.getVar("OVERRIDES") - if toolchain == "clang" and "toolchain-clang" in overrides.split(":"): - return "true" - return "false" - -def clang_install_path(d): - """Return clang compiler install path.""" - return d.getVar("STAGING_BINDIR_NATIVE") - -def gn_target_arch_name(d): - """Returns a GN architecture name corresponding to the target machine's - architecture.""" - name = d.getVar("GN_TARGET_ARCH_NAME") - if name is None: - bb.fatal('Unsupported target architecture. A valid override for the ' - 'GN_TARGET_ARCH_NAME variable could not be found.') - return name - -def write_toolchain_file(d, file_path): - """Creates a complete GN toolchain file in |file_path|.""" - import string - gcc_toolchain_tmpl = string.Template( - 'gcc_toolchain("${toolchain_name}") {\n' - ' cc = "${cc}"\n' - ' cxx = "${cxx}"\n' - ' ar = "${ar}"\n' - ' ld = cxx # GN expects a compiler, not a linker.\n' - ' nm = "${nm}"\n' - ' readelf = "${readelf}"\n' - ' extra_cflags = "${extra_cflags}"\n' - ' extra_cppflags = "${extra_cppflags}"\n' - ' extra_cxxflags = "${extra_cxxflags}"\n' - ' extra_ldflags = "${extra_ldflags}"\n' - ' toolchain_args = {\n' - ' current_cpu = "${current_cpu}"\n' - ' current_os = "linux"\n' - ' is_clang = false\n' - ' }\n' - '}\n' - ) - clang_toolchain_tmpl = string.Template( - 'clang_toolchain("clang_${toolchain_name}") {\n' - ' extra_cflags = "${extra_cflags}"\n' - ' extra_cppflags = "${extra_cppflags}"\n' - ' extra_cxxflags = "${extra_cxxflags}"\n' - ' extra_ldflags = "${extra_ldflags}"\n' - ' toolchain_args = {\n' - ' current_cpu = "${current_cpu}"\n' - ' current_os = "linux"\n' - ' is_clang = true\n' - ' use_gold = true\n' - ' }\n' - '}\n' - ) - - native_toolchain = { - 'toolchain_name': 'yocto_native', - 'current_cpu': gn_host_arch_name(d), - 'cc': d.expand('${BUILD_CC}'), - 'cxx': d.expand('${BUILD_CXX}'), - 'ar': d.expand('${BUILD_AR}'), - 'nm': d.expand('${BUILD_NM}'), - 'readelf': d.expand('${BUILD_PREFIX}readelf'), - 'extra_cflags': d.expand('${BUILD_CFLAGS}'), - 'extra_cppflags': d.expand('${BUILD_CPPFLAGS}'), - 'extra_cxxflags': d.expand('${BUILD_CXXFLAGS}'), - 'extra_ldflags': d.expand('${BUILD_LDFLAGS}'), - } - target_toolchain = { - 'toolchain_name': 'yocto_target', - 'current_cpu': gn_target_arch_name(d), - 'cc': d.expand('${CC}'), - 'cxx': d.expand('${CXX}'), - 'ar': d.expand('${AR}'), - 'nm': d.expand('${NM}'), - 'readelf': d.expand('${TARGET_PREFIX}readelf'), - 'extra_cflags': d.expand('${TARGET_CFLAGS}'), - 'extra_cppflags': d.expand('${TARGET_CPPFLAGS}'), - 'extra_cxxflags': d.expand('${TARGET_CXXFLAGS}'), - 'extra_ldflags': d.expand('${TARGET_LDFLAGS}'), - 'strip': '', +def gn_arch_name(yocto_arch): + """Translates between Yocto's architecture values and the corresponding + ones used by GN.""" + translation_table = { + 'aarch64': 'arm64', + 'arm': 'arm', + 'i586': 'x86', + 'i686': 'x86', + 'x86_64': 'x64', } - - with open(file_path, 'w') as toolchain_file: - toolchain_file.write( - '# This file has been generated automatically.\n' - '\n' - 'import("//build/config/sysroot.gni")\n' - 'import("//build/toolchain/gcc_toolchain.gni")\n' - '\n' - ) - toolchain_file.write(gcc_toolchain_tmpl.substitute(native_toolchain)) - toolchain_file.write(gcc_toolchain_tmpl.substitute(target_toolchain)) - toolchain_file.write(clang_toolchain_tmpl.substitute(native_toolchain)) - toolchain_file.write(clang_toolchain_tmpl.substitute(target_toolchain)) + try: + return translation_table[yocto_arch] + except KeyError: + bb.fatal('"%s" is not a supported architecture.' % yocto_arch) |