# Copyright 2015 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.

# This exposes the Chrome version as GN variables for use in build files.
#
# 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 the process_version
# wrapper in build/util/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@\" " + "version_id = @VERSION_ID@ " +
    "patch_hi = @PATCH_HI@ " + "patch_lo = @PATCH_LO@ "

# The file containing the Chrome version number.
chrome_version_file = "//chrome/VERSION"

_result = exec_script("version.py",
                      [
                        "-f",
                        rebase_path(chrome_version_file, root_build_dir),
                        "-t",
                        _version_dictionary_template,
                        "-e",
                        "VERSION_ID='%s%03d00' % (BUILD, int(PATCH))",
                        "-e",
                        "PATCH_HI=int(PATCH)/256",
                        "-e",
                        "PATCH_LO=int(PATCH)%256",
                      ],
                      "scope",
                      [ chrome_version_file ])

# Full version. For example "45.0.12321.0"
chrome_version_full = _result.full

# The consituent 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
chrome_version_id = _result.version_id
chrome_version_patch_hi = _result.patch_hi
chrome_version_patch_lo = _result.patch_lo

if (is_mac) {
  chrome_dylib_version = "$chrome_version_build.$chrome_version_patch_hi" +
                         ".$chrome_version_patch_lo"
}
