# Copyright 2015 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This file is read by gitdeps.py to allow loading subsections of git repos
# through sparse checkouts.

vars = {
  "chrome_revision": "a89708a5c1bfe778ed1615f0bc92f0e9ae2e2192",
  "chrome_base_git": "https://chromium.googlesource.com/",

  "buildtools_revision": "ecc8e253abac3b6186a97573871a084f4c0ca3ae",
  "gmock_revision": "0421b6f358139f02e102c9c332ce19a33faf75be",  # r455.
  "gtest_revision": "86dec5c00225b34a0061127e5cc35b6cf1485b79",  # r746.
  "protobuf_revision": "786379af4766fa7ec22b51862ba6e84156b1f9cb",
}

deps = {
  "":(
    Var("chrome_base_git") + "chromium/src",
    [
      # Chrome base and other top-level dependencies.
      "base",
      "build",

      # third_party dependencies.
      "third_party/libxml",
      "third_party/modp_b64",
      "third_party/zlib",

      # Testing
      "testing",
    ],
    Var("chrome_revision")
  ),

  "testing/gmock": (
    Var("chrome_base_git") + "external/gmock",
    [],
    Var("gmock_revision"),
  ),

  "testing/gtest": (
    Var("chrome_base_git") + "external/gtest",
    [],
    Var("gtest_revision"),
  ),

  "buildtools": (
    Var("chrome_base_git") + "chromium/buildtools",
    [],
    Var("buildtools_revision"),
    {'recurse': True}
  ),

  # This brings in protobuf, used by SyzyASan metadata.
  "third_party/protobuf": (
    Var("chrome_base_git") + "external/github.com/google/protobuf",
    [
      "src",
    ],
    Var("protobuf_revision"),
  ),
}
