| # Copyright 2015 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # This exposes the Chrome version as GN variables for use in build files. |
| # This also generates the various version codes used for builds of chrome for |
| # android. |
| # |
| # PREFER NOT TO USE THESE. The GYP build uses this kind of thing extensively. |
| # However, it is far better to write an action (or use |
| # //build/util/process_version.gni) to generate a file at build-time with the |
| # information you need. This allows better dependency checking and GN will |
| # run faster. |
| # |
| # These values should only be used if you REALLY need to depend on them at |
| # build-time, for example, in the computation of output file names. |
| |
| # Give version.py a pattern that will expand to a GN scope consisting of |
| # all values we need at once. |
| _version_dictionary_template = "full = \"@MAJOR@.@MINOR@.@BUILD@.@PATCH@\" " + |
| "major = \"@MAJOR@\" minor = \"@MINOR@\" " + |
| "build = \"@BUILD@\" patch = \"@PATCH@\" " |
| |
| # The file containing the Chrome version number. |
| chrome_version_file = "//chrome/VERSION" |
| |
| _script_arguments = [] |
| |
| if (is_mac) { |
| _version_dictionary_template += "patch_hi = @PATCH_HI@ patch_lo = @PATCH_LO@ " |
| |
| _script_arguments += [ |
| "-e", |
| "PATCH_HI=int(PATCH)//256", |
| "-e", |
| "PATCH_LO=int(PATCH)%256", |
| ] |
| } else if (target_os == "android") { |
| import("//build/config/android/config.gni") |
| import("//build/config/chrome_build.gni") |
| |
| _version_dictionary_template += |
| "chrome_version_code = " + "\"@CHROME_VERSION_CODE@\" " + |
| "monochrome_version_code = \"@MONOCHROME_VERSION_CODE@\" " + |
| "trichrome_version_code = \"@TRICHROME_VERSION_CODE@\" " + |
| "trichrome_beta_version_code = \"@TRICHROME_BETA_VERSION_CODE@\" " + |
| "webview_stable_version_code = \"@WEBVIEW_STABLE_VERSION_CODE@\" " + |
| "webview_beta_version_code = \"@WEBVIEW_BETA_VERSION_CODE@\" " + |
| "webview_dev_version_code = \"@WEBVIEW_DEV_VERSION_CODE@\" " |
| |
| # Generate hybrid configurations for target_cpu's that can run in hybrid configurations. |
| # i.e. "riscv64" does not show up in this list, as it's a 64-bit-only target_cpu. |
| if (target_cpu == "arm64" || target_cpu == "x64") { |
| _version_dictionary_template += |
| "monochrome_32_version_code = \"@MONOCHROME_32_VERSION_CODE@\" " |
| _version_dictionary_template += |
| "monochrome_32_64_version_code = \"@MONOCHROME_32_64_VERSION_CODE@\" " |
| _version_dictionary_template += |
| "monochrome_64_32_version_code = \"@MONOCHROME_64_32_VERSION_CODE@\" " |
| _version_dictionary_template += |
| "monochrome_64_version_code = \"@MONOCHROME_64_VERSION_CODE@\" " |
| _version_dictionary_template += |
| "trichrome_32_version_code = \"@TRICHROME_32_VERSION_CODE@\" " |
| _version_dictionary_template += |
| "trichrome_32_64_version_code = \"@TRICHROME_32_64_VERSION_CODE@\" " |
| _version_dictionary_template += |
| "trichrome_64_32_version_code = \"@TRICHROME_64_32_VERSION_CODE@\" " |
| _version_dictionary_template += "trichrome_auto_64_32_version_code = \"@TRICHROME_AUTO_64_32_VERSION_CODE@\" " |
| _version_dictionary_template += |
| "trichrome_64_version_code = \"@TRICHROME_64_VERSION_CODE@\" " |
| if (target_cpu == "arm64") { |
| _version_dictionary_template += "trichrome_64_32_high_version_code = \"@TRICHROME_64_32_HIGH_VERSION_CODE@\" " |
| } |
| _version_dictionary_template += |
| "trichrome_32_beta_version_code = \"@TRICHROME_32_BETA_VERSION_CODE@\" " |
| _version_dictionary_template += "trichrome_32_64_beta_version_code = \"@TRICHROME_32_64_BETA_VERSION_CODE@\" " |
| _version_dictionary_template += "trichrome_64_32_beta_version_code = \"@TRICHROME_64_32_BETA_VERSION_CODE@\" " |
| _version_dictionary_template += |
| "trichrome_64_beta_version_code = \"@TRICHROME_64_BETA_VERSION_CODE@\" " |
| if (target_cpu == "arm64") { |
| _version_dictionary_template += "trichrome_64_32_high_beta_version_code = \"@TRICHROME_64_32_HIGH_BETA_VERSION_CODE@\" " |
| } |
| _version_dictionary_template += |
| "webview_32_stable_version_code = \"@WEBVIEW_32_STABLE_VERSION_CODE@\" " |
| _version_dictionary_template += |
| "webview_32_beta_version_code = \"@WEBVIEW_32_BETA_VERSION_CODE@\" " |
| _version_dictionary_template += |
| "webview_32_dev_version_code = \"@WEBVIEW_32_DEV_VERSION_CODE@\" " |
| _version_dictionary_template += |
| "webview_64_stable_version_code = \"@WEBVIEW_64_STABLE_VERSION_CODE@\" " |
| _version_dictionary_template += |
| "webview_64_beta_version_code = \"@WEBVIEW_64_BETA_VERSION_CODE@\" " |
| _version_dictionary_template += |
| "webview_64_dev_version_code = \"@WEBVIEW_64_DEV_VERSION_CODE@\" " |
| } |
| |
| _script_arguments += [ |
| "-a", |
| target_cpu, |
| ] |
| |
| if (defined(final_android_sdk) && !final_android_sdk) { |
| _script_arguments += [ "--next" ] |
| } |
| } |
| |
| _script_arguments += [ |
| "-f", |
| rebase_path(chrome_version_file, root_build_dir), |
| "-t", |
| _version_dictionary_template, |
| "--os", |
| target_os, |
| ] |
| |
| _result = exec_script("//build/util/version.py", |
| _script_arguments, |
| "scope", |
| [ |
| chrome_version_file, |
| "//build/util/android_chrome_version.py", |
| ]) |
| |
| # Full version. For example "45.0.12321.0" |
| chrome_version_full = _result.full |
| |
| # The constituent parts of the full version. |
| chrome_version_major = _result.major |
| chrome_version_minor = _result.minor |
| chrome_version_build = _result.build |
| chrome_version_patch = _result.patch |
| |
| if (is_mac) { |
| chrome_version_patch_hi = _result.patch_hi |
| chrome_version_patch_lo = _result.patch_lo |
| |
| chrome_dylib_version = "$chrome_version_build.$chrome_version_patch_hi" + |
| ".$chrome_version_patch_lo" |
| } else if (target_os == "android") { |
| forward_variables_from(_result, |
| [ |
| "chrome_version_code", |
| "monochrome_version_code", |
| "monochrome_32_version_code", |
| "monochrome_32_64_version_code", |
| "monochrome_64_32_version_code", |
| "monochrome_64_version_code", |
| "trichrome_version_code", |
| "trichrome_32_version_code", |
| "trichrome_32_64_version_code", |
| "trichrome_64_32_version_code", |
| "trichrome_64_32_high_version_code", |
| "trichrome_auto_64_32_version_code", |
| "trichrome_64_version_code", |
| "trichrome_beta_version_code", |
| "trichrome_32_beta_version_code", |
| "trichrome_32_64_beta_version_code", |
| "trichrome_64_32_beta_version_code", |
| "trichrome_64_32_high_beta_version_code", |
| "trichrome_64_beta_version_code", |
| "webview_beta_version_code", |
| "webview_dev_version_code", |
| "webview_stable_version_code", |
| "webview_32_beta_version_code", |
| "webview_32_dev_version_code", |
| "webview_32_stable_version_code", |
| "webview_64_beta_version_code", |
| "webview_64_dev_version_code", |
| "webview_64_stable_version_code", |
| ]) |
| |
| chrome_version_name = chrome_version_full |
| } |
| |
| if (is_android && current_toolchain == default_toolchain) { |
| lines_to_write = [ |
| "VersionName: $chrome_version_name", |
| "Chrome: $chrome_version_code", |
| "Monochrome: $monochrome_version_code", |
| "TrichromeChrome: $trichrome_version_code", |
| "TrichromeChromeOpenBeta: $trichrome_beta_version_code", |
| "AndroidWebviewStable: $webview_stable_version_code", |
| "AndroidWebviewBeta: $webview_beta_version_code", |
| "AndroidWebviewDev: $webview_dev_version_code", |
| ] |
| |
| if (android_64bit_target_cpu && defined(android_app_secondary_abi)) { |
| lines_to_write += [ |
| "Monochrome32: $monochrome_32_version_code", |
| "Monochrome3264: $monochrome_32_64_version_code", |
| "Monochrome6432: $monochrome_64_32_version_code", |
| "Monochrome64: $monochrome_64_version_code", |
| "TrichromeChrome32: $trichrome_32_version_code", |
| "TrichromeChrome3264: $trichrome_32_64_version_code", |
| "TrichromeChrome6432: $trichrome_64_32_version_code", |
| "TrichromeChrome64: $trichrome_64_version_code", |
| "TrichromeChromeAuto6432: $trichrome_auto_64_32_version_code", |
| ] |
| if (target_cpu == "arm64") { |
| lines_to_write += |
| [ "TrichromeChrome6432High: $trichrome_64_32_high_version_code" ] |
| } |
| lines_to_write += [ |
| "TrichromeChrome32OpenBeta: $trichrome_32_beta_version_code", |
| "TrichromeChrome3264OpenBeta: $trichrome_32_64_beta_version_code", |
| "TrichromeChrome6432OpenBeta: $trichrome_64_32_beta_version_code", |
| "TrichromeChrome64OpenBeta: $trichrome_64_beta_version_code", |
| ] |
| if (target_cpu == "arm64") { |
| lines_to_write += [ "TrichromeChrome6432HighOpenBeta: $trichrome_64_32_high_beta_version_code" ] |
| } |
| lines_to_write += [ |
| "AndroidWebview32Stable: $webview_32_stable_version_code", |
| "AndroidWebview32Beta: $webview_32_beta_version_code", |
| "AndroidWebview32Dev: $webview_32_dev_version_code", |
| "AndroidWebview64Stable: $webview_64_stable_version_code", |
| "AndroidWebview64Beta: $webview_64_beta_version_code", |
| "AndroidWebview64Dev: $webview_64_dev_version_code", |
| ] |
| } |
| |
| write_file("$root_out_dir/android_chrome_versions.txt", lines_to_write) |
| } |
| |
| if (is_android) { |
| import("//build/config/android/channel.gni") |
| import("//build/config/android/config.gni") |
| import("//build/config/chrome_build.gni") |
| |
| # Lookup tables for version codes. |
| # For the list of configurations that exist, see: |
| # https://chromium.googlesource.com/chromium/src/+/main/docs/android_native_libraries.md#build-variants-eg_monochrome_64_32_apk |
| # |
| # For how version codes are computed, see: |
| # //build/util/android_chrome_version.py |
| |
| # Key: {android_64bit_target_cpu}_{is_64_bit_browser}_{include_64_bit_webview}_{include_32_bit_webview} |
| TRICHROME_VERSION_MAP = { |
| _use_stable_package_name_for_trichrome = |
| use_stable_package_name_for_trichrome && android_channel == "beta" |
| |
| # 64-bit constants are not generated by version.py on non-64-bit target_cpu. |
| if (android_64bit_target_cpu) { |
| # hybrid constants are not generated by version.py on non-64-bit-only target_cpu. |
| if (defined(android_app_secondary_abi)) { |
| if (_use_stable_package_name_for_trichrome) { |
| if (is_high_end_android) { |
| true_true_true_true = trichrome_64_32_high_beta_version_code |
| } else { |
| true_true_true_true = trichrome_64_32_beta_version_code |
| } |
| true_true_true_false = trichrome_64_beta_version_code |
| true_false_false_true = trichrome_32_beta_version_code |
| true_false_true_true = trichrome_32_64_beta_version_code |
| } else { |
| if (is_high_end_android) { |
| true_true_true_true = trichrome_64_32_high_version_code |
| } else { |
| true_true_true_true = trichrome_64_32_version_code |
| } |
| true_true_true_false = trichrome_64_version_code |
| true_false_false_true = trichrome_32_version_code |
| true_false_true_true = trichrome_32_64_version_code |
| } |
| } else { |
| if (_use_stable_package_name_for_trichrome) { |
| true_true_true_false = trichrome_beta_version_code |
| } else { |
| true_true_true_false = trichrome_version_code |
| } |
| } |
| } else { |
| # !android_64bit_target_cpu |
| if (_use_stable_package_name_for_trichrome) { |
| false_false_false_true = trichrome_beta_version_code |
| } else { |
| false_false_false_true = trichrome_version_code |
| } |
| } |
| } |
| |
| # Key: {android_64bit_target_cpu}_{is_64_bit_browser}_{include_64_bit_webview}_{include_32_bit_webview} |
| MONOCHROME_VERSION_MAP = { |
| if (android_64bit_target_cpu) { |
| if (defined(android_app_secondary_abi)) { |
| true_true_true_true = monochrome_64_32_version_code |
| true_false_true_true = monochrome_32_64_version_code |
| true_true_true_false = monochrome_64_version_code |
| true_false_false_true = monochrome_32_version_code |
| } else { |
| true_true_true_false = monochrome_version_code |
| } |
| } else { |
| false_false_false_true = monochrome_version_code |
| } |
| } |
| |
| # Key: {android_64bit_target_cpu}_{include_64_bit_webview}_{include_32_bit_webview} |
| WEBVIEW_VERSION_MAP = { |
| # 64-bit constants are not generated by version.py on non-64-bit target_cpu. |
| if (android_64bit_target_cpu) { |
| if (defined(android_app_secondary_abi)) { |
| if (android_channel == "dev") { |
| true_false_true = webview_32_dev_version_code |
| true_true_false = webview_64_dev_version_code |
| true_true_true = webview_dev_version_code |
| } else if (android_channel == "beta") { |
| true_false_true = webview_32_beta_version_code |
| true_true_false = webview_64_beta_version_code |
| true_true_true = webview_beta_version_code |
| } else { |
| true_false_true = webview_32_stable_version_code |
| true_true_false = webview_64_stable_version_code |
| true_true_true = webview_stable_version_code |
| } |
| } else { |
| if (android_channel == "dev") { |
| true_true_false = webview_dev_version_code |
| } else if (android_channel == "beta") { |
| true_true_false = webview_beta_version_code |
| } else { |
| true_true_false = webview_stable_version_code |
| } |
| } |
| } else { |
| # !android_64bit_target_cpu |
| if (android_channel == "dev") { |
| false_false_true = webview_dev_version_code |
| } else if (android_channel == "beta") { |
| false_false_true = webview_beta_version_code |
| } else { |
| false_false_true = webview_stable_version_code |
| } |
| } |
| |
| # For system_webview_no_weblayer_apk. |
| true_false_false = "1" |
| false_false_false = "1" |
| } |
| } |