# Copyright 2018 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.
#
# Defines the build_timestamp variable.

import("//build/util/lastchange.gni")

declare_args() {
  # This should be the filename of a script that prints a single line
  # containing an integer that's a unix timestamp in UTC.
  # This timestamp is used as build time and will be compiled into
  # other code.
  #
  # This argument may look unused. Before removing please check with the
  # chromecast team to see if they still use it internally.
  compute_build_timestamp = "compute_build_timestamp.py"
}

if (is_official_build) {
  official_name = "official"
} else {
  official_name = "default"
}

# This will return a timestamp that's different each day (official builds)
# or each month (regular builds).  Just rely on gn rerunning due to other
# changes to keep this up to date.  (Bots run gn on each build, and for devs
# the timestamp being 100% accurate doesn't matter.)
# See compute_build_timestamp.py for tradeoffs for picking the timestamp.
build_timestamp = exec_script(compute_build_timestamp,
                              [ official_name ],
                              "trim string",
                              [ lastchange_file ])
