# 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:fdfe4498af7bab15cc7716a6110f60f280bc415b

# GCC
@Subdir gcc
fuchsia/gcc/${os}-${arch=amd64} git_revision:fb02152947d8ef666961e3b8b6527ed39de18334,653a4ab26cb08800c45b8c3446c3753d6f2102df

# sysroot
@Subdir sysroot
fuchsia/sysroot/${os=linux}-${arch} git_revision:a96053c799a0f1ad0b7e8ab8199edbfa18adcbb6

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

# QEMU
@Subdir qemu
fuchsia/qemu/${platform} git_revision:0f0027d617976b4cbb7b937d5836f8ef0ac25ba1
