#!/usr/bin/env bash
# Copyright 2022 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Regenerate all bindgen-generated Rust bindings in the crosvm tree.
#
# This script expects to be executed from a full ChromeOS checkout so it has access to the kernel
# and other repositories. Note that it must be run from OUTSIDE the chroot.

set -e
cd "$(dirname "${BASH_SOURCE[0]}")/.."

source tools/impl/bindgen-common.sh

die() {
    echo "$@"
    exit 1
}

dirs=(
    io_uring
    kernel_loader
    kvm_sys
    media/libvda
    net_sys
    vfio_sys
    virtio_sys
    vm_memory
)

for d in "${dirs[@]}"; do
    echo "bindgen ${d}"
    "${d}"/bindgen.sh || die "Failed to generate bindings for ${d}"
done

echo "Done!"
