# Copyright 2018 The Fuchsia 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 file is used by scripts/download-prebuilt to control cipd.  When
# cipd is not available, it uses zircon.versions instead to deduce URLs to
# download directly from Google Storage.
#
# NOTE! NOTE! NOTE!  After changing this file in any way, always run
# `scripts/download-prebuilt --resolve` to update the zircon.versions file
# with specific instance IDs for each version listed here.  CIPD and
# scripts/download-prebuilt both rely on the generated zircon.versions file
# for exactly what to download and for content signatures to verify.

$ResolvedVersions zircon.versions

# This tells CIPD to fix up manually deleted files.
$ParanoidMode CheckPresence

# This tells CIPD to complain if ${...} references can't cover all of these.
$VerifiedPlatform linux-amd64
$VerifiedPlatform linux-arm64
$VerifiedPlatform mac-amd64

# Clang
@Subdir clang
fuchsia/clang/${platform} git_revision:1558731607cb2aef361d02be9973d4e374475254

# GCC
@Subdir gcc
fuchsia/gcc/${os}-${arch=amd64} git_revision:9fb89fa845c1b2e0a18d85ada0b077c84508ab78,9163eacc1840f8db0523e21d4e7bc4239608c564,1

# sysroot/linux-arm64
@Subdir sysroot/linux-arm64
fuchsia/sysroot/linux-arm64 git_revision:a4aaacde9d37ccf91a0f8dc8267cb7ad5d9be283

# sysroot/linux-x64
@Subdir sysroot/linux-x64
fuchsia/sysroot/linux-amd64 git_revision:a4aaacde9d37ccf91a0f8dc8267cb7ad5d9be283

# Symbolizer tool.  This is a standalone executable, not a subdirectory.
@Subdir
fuchsia/tools/symbolize/${platform} git_revision:0f30b84316f88db873708d291138ef5638b19270

# QEMU
@Subdir qemu
fuchsia/third_party/qemu/${platform} git_revision:533bf2563d0213a7e002d9fcde75519d30ffa70f,1

# GN
# TODO(BLD-341): replace ${os}-${arch=amd64} with ${platform}
@Subdir
gn/gn/${os}-${arch=amd64} git_revision:d409ab897d648b80e8b97fe04ced3fb013b6f39d

# Ninja
# TODO(BLD-341): replace ${os}-${arch=amd64} with ${platform}
@Subdir
infra/ninja/${os}-${arch=amd64} version:1.8.2

# Banjo compiler
@Subdir banjo
# TODO(BLD-341): replace ${os}-${arch=amd64} with ${platform}
fuchsia/tools/banjo_bin/${os}-${arch=amd64} git_revision:94f2f30368242960dd4e6ef5c384b840bbe20248

# AEMU
@Subdir aemu
fuchsia/third_party/aemu/${os}-${arch=amd64} git_revision:2da1707469c501168757c820cf5459c64a2ca128
