# 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.
#
# This file is the source of truth and the bits in CIPD are the canonical
# bits.  They're also copied to Google Storage with URLs derived from the
# CIPD package name (shown below, with $ substituions for platform) and
# instance ID (which is the SHA1 of the file).  zircon.versions is
# generated from this file by querying CIPD to gather the instance IDs.
#
# NOTE! NOTE! NOTE!  After changing this file in any way, always run
# scripts/update-prebuilt-versions to update the zircon.versions file with
# specific instance IDs for each version listed here.  The two files must
# be kept in lock-step so that scripts/download-prebuilt gets the same
# contents whether it uses cipd or direct downloads.
#
# When adding new packages that are constructed by hand rather than by
# automated bot builds (e.g. firmware), the CIPD packages must be copied to
# Google Storage by running scripts/update-prebuilt-versions --upload with
# appropriate credentials.

# These lines tell scripts/update-prebuilt-versions what to look for.
$VerifiedPlatform linux-amd64
$VerifiedPlatform mac-amd64
#MatchedPlatform linux-arm64

# Clang
@Subdir clang
fuchsia/clang/${platform} git_revision:6b2da8b3f95f7e20331a1de4d9f93eb5fb4862a9

# GCC
@Subdir gcc
fuchsia/gcc/${platform} git_revision:4c9ce848d0459c3d872c88f897c40e09f0831122,6ce348a507d0bd3308f8a131023de49576692c37

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

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

# ADSP SST Firmware
@Subdir firmware/intel-adsp-sst
fuchsia/firmware/intel-adsp-sst git_revision:8fc2d4e55685bf73b6f7752383da9067404a74bb
