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

import("//build/config/chrome_build.gni")
import("//build/util/process_version.gni")
import("//chrome/process_version_rc_template.gni")  # For branding_file_path.

declare_args() {
  use_unofficial_version_number = !is_chrome_branded
}

static_library("version_info") {
  sources = [
    "version_info.cc",
    "version_info.h",
  ]

  deps = [
    ":generate_version_info",
    "//base",
  ]

  public_deps = [
    ":channel",
  ]
}

# Isolate the //ui/base dependency in this target.
static_library("version_string") {
  sources = [
    "version_string.cc",
    "version_string.h",
  ]

  deps = [
    ":version_info",
    "//components/strings",
  ]

  if (use_unofficial_version_number) {
    defines = [ "USE_UNOFFICIAL_VERSION_NUMBER" ]
    deps += [ "//ui/base" ]
  }
}

source_set("channel") {
  sources = [
    "channel.h",
    "channel_android.cc",
    "channel_android.h",
  ]
}

process_version("generate_version_info") {
  template_file = "version_info_values.h.version"
  sources = [
    "//build/util/LASTCHANGE",
    "//chrome/VERSION",
    branding_file_path,
  ]
  output = "$target_gen_dir/version_info_values.h"
}
