#!/bin/bash
#
# Copyright 2019 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 script is used by c_utils.gni, which see.
#
# Usage: toolchain_utils_action.sh OUTPUT DEPFILE PROGRAM ARG...
#
# This runs PROGRAM ARG... with some special handling.
# It always writes DEPFILE with OUTPUT as its target.
#
# For each ARG that is "@RSPFILE", RSPFILE should contain nothing
# but file names, one per line.  Each such file will be added as
# an input in the depfile.
#
# Most toolchain utilities handle "@RSPFILE" syntax themselves, so we let them
# do so after scanning RSPFILE to collect dependencies.  However, for certain
# named tools known to be lacking the support, this script will splice the
# file contents into the argument list directly.

set -e

OUTPUT="$1"
DEPFILE="$2"
PROGRAM="$3"
shift 3

trap 'rm -f "$OUTPUT" "$DEPFILE"' ERR HUP INT TERM

if [ "${PROGRAM##*/}" = llvm-objcopy ]; then
  expand_rspfile=true
else
  expand_rspfile=false
fi

INPUTS=()
ARGS=()

read_rspfile() {
  local file
  while read file; do
    INPUTS+=("$file")
    if $expand_rspfile; then
      ARGS+=("$file")
    fi
  done
}

for arg; do
  if [[ "$arg" == @* ]]; then
    rspfile="${arg#@}"
    INPUTS+=("$rspfile")
    read_rspfile < "$rspfile"
    if $expand_rspfile; then
      # Don't add $arg since its contents were already added.
      continue
    fi
  fi
  ARGS+=("$arg")
done

echo "$OUTPUT: ${INPUTS[*]}" > "$DEPFILE"

exec "$PROGRAM" "${ARGS[@]}"
