# Copyright (c) 2015, Google Inc.
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

vars = {
  'chromium_git': 'https://chromium.googlesource.com',

  'checkout_clang': False,
  'checkout_sde': False,
  'checkout_nasm': False,
  'checkout_libcxx': False,
  'vs_version': '2015',

  # Run the following command to see the latest builds in CIPD:
  #  cipd describe PACKAGE_NAME -version latest

  # infra/3pp/tools/cmake/linux-amd64
  #
  # TODO(https://crbug.com/1176531): Update to a newer CMake when available
  # from CIPD. This is currently blocked on the linked bug.
  'cmake_version': 'version:3.13.5',
  # infra/3pp/tools/go/linux-amd64
  'go_version': 'version:1.16',

  # Update the following from
  # https://chromium.googlesource.com/chromium/src/+/master/DEPS
  'android_sdk_platform-tools_version': 'Jxtur3_L9RzY4q79K-AwIahwFW4oi5uYVD5URx9h62wC',
  # TODO(davidben): Before updating this, update the builders to specify
  # ANDROID_ARM_NEON=0. The NDK now defaults armeabi-v7a to assuming NEON, but
  # we wish to retain test coverage for non-NEON code. (Perhaps worth having
  # both configurations.)
  'android_ndk_revision': '27c0a8d090c666a50e40fceb4ee5b40b1a2d3f87',
  'libfuzzer_revision': 'debe7d2d1982e540fbd6bd78604bf001753f9e74',

  # Update the following from
  # https://chromium.googlesource.com/chromium/src/+/master/buildtools/DEPS
  'libcxx_revision': 'd9040c75cfea5928c804ab7c235fed06a63f743a',
  'libcxxabi_revision': '196ba1aaa8ac285d94f4ea8d9836390a45360533',
}

deps = {
  'boringssl/util/bot/android_ndk': {
    'url': Var('chromium_git') + '/android_ndk.git' + '@' + Var('android_ndk_revision'),
    'condition': 'checkout_android',
  },

  'boringssl/util/bot/android_sdk/public': {
    'packages': [{
      'package': 'chromium/third_party/android_sdk/public/platform-tools',
      'version': Var('android_sdk_platform-tools_version'),
    }],
    'condition': 'checkout_android',
    'dep_type': 'cipd',
  },

  'boringssl/util/bot/cmake-linux64': {
    'packages': [{
      'package': 'infra/3pp/tools/cmake/linux-amd64',
      'version': Var('cmake_version'),
    }],
    'condition': 'host_os == "linux"',
    'dep_type': 'cipd',
  },

  'boringssl/util/bot/cmake-mac': {
    'packages': [{
      'package': 'infra/3pp/tools/cmake/mac-amd64',
      'version': Var('cmake_version'),
    }],
    'condition': 'host_os == "mac"',
    'dep_type': 'cipd',
  },

  'boringssl/util/bot/golang': {
    'packages': [{
      'package': 'infra/3pp/tools/go/${{platform}}',
      'version': Var('go_version'),
    }],
    'dep_type': 'cipd',
  },

  'boringssl/util/bot/libFuzzer': {
    'url': Var('chromium_git') + '/chromium/llvm-project/compiler-rt/lib/fuzzer.git' +'@' + Var('libfuzzer_revision'),
    'condition': 'checkout_fuzzer',
  },

  'boringssl/util/bot/libcxx': {
    'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + Var('libcxx_revision'),
    'condition': 'checkout_libcxx',
  },
  'boringssl/util/bot/libcxxabi': {
    'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + Var('libcxxabi_revision'),
    'condition': 'checkout_libcxx',
  },
}

recursedeps = [
  # android_tools pulls in the NDK from a separate repository.
  'boringssl/util/bot/android_tools',
]

hooks = [
  # TODO(https://crbug.com/1180257): Use CIPD for CMake on Windows.
  {
    'name': 'cmake_win32',
    'pattern': '.',
    'condition': 'host_os == "win"',
    'action': [ 'download_from_google_storage',
                '--no_resume',
                '--platform=win32',
                '--no_auth',
                '--bucket', 'chromium-tools',
                '-s', 'boringssl/util/bot/cmake-win32.zip.sha1',
    ],
  },
  {
    'name': 'cmake_win32_extract',
    'pattern': '.',
    'condition': 'host_os == "win"',
    'action': [ 'python',
                'boringssl/util/bot/extract.py',
                'boringssl/util/bot/cmake-win32.zip',
                'boringssl/util/bot/cmake-win32/',
    ],
  },
  {
    'name': 'perl_win32',
    'pattern': '.',
    'condition': 'host_os == "win"',
    'action': [ 'download_from_google_storage',
                '--no_resume',
                '--platform=win32',
                '--no_auth',
                '--bucket', 'chromium-tools',
                '-s', 'boringssl/util/bot/perl-win32.zip.sha1',
    ],
  },
  {
    'name': 'perl_win32_extract',
    'pattern': '.',
    'condition': 'host_os == "win"',
    'action': [ 'python',
                'boringssl/util/bot/extract.py',
                '--no-prefix',
                'boringssl/util/bot/perl-win32.zip',
                'boringssl/util/bot/perl-win32/',
    ],
  },
  {
    'name': 'nasm_win32',
    'pattern': '.',
    'condition': 'host_os == "win" and checkout_nasm',
    'action': [ 'download_from_google_storage',
                '--no_resume',
                '--platform=win32',
                '--no_auth',
                '--bucket', 'chromium-tools',
                '-s', 'boringssl/util/bot/nasm-win32.exe.sha1',
    ],
  },
  {
    'name': 'win_toolchain',
    'pattern': '.',
    'condition': 'host_os == "win"',
    'action': [ 'python',
                'boringssl/util/bot/vs_toolchain.py',
                'update',
                Var('vs_version'),
    ],
  },
  {
    'name': 'clang',
    'pattern': '.',
    'condition': 'checkout_clang',
    'action': [ 'python',
                'boringssl/util/bot/update_clang.py',
    ],
  },
  {
    'name': 'sde_linux64',
    'pattern': '.',
    'condition': 'checkout_sde and host_os == "linux"',
    'action': [ 'download_from_google_storage',
                '--no_resume',
                '--bucket', 'chrome-boringssl-sde',
                '-s', 'boringssl/util/bot/sde-linux64.tar.bz2.sha1'
    ],
  },
  {
    'name': 'sde_linux64_extract',
    'pattern': '.',
    'condition': 'checkout_sde and host_os == "linux"',
    'action': [ 'python',
                'boringssl/util/bot/extract.py',
                'boringssl/util/bot/sde-linux64.tar.bz2',
                'boringssl/util/bot/sde-linux64/',
    ],
  },
  {
    'name': 'sde_win32',
    'pattern': '.',
    'condition': 'checkout_sde and host_os == "win"',
    'action': [ 'download_from_google_storage',
                '--no_resume',
                '--bucket', 'chrome-boringssl-sde',
                '-s', 'boringssl/util/bot/sde-win32.tar.bz2.sha1'
    ],
  },
  {
    'name': 'sde_win32_extract',
    'pattern': '.',
    'condition': 'checkout_sde and host_os == "win"',
    'action': [ 'python',
                'boringssl/util/bot/extract.py',
                'boringssl/util/bot/sde-win32.tar.bz2',
                'boringssl/util/bot/sde-win32/',
    ],
  },
]
