#! /bin/sh
# Writes a target device config file to stdout, from a default and from
# include directives therein.  Also emits Makefile dependencies.
#
# Usage: make_device_config.sh SRC DEPFILE-NAME DEPFILE-TARGET > DEST

src=$1
dep=$2
target=$3
src_dir=$(dirname $src)
all_includes=

process_includes () {
  cat $1 | grep '^include' | \
  while read include file ; do
    all_includes="$all_includes $src_dir/$file"
    process_includes $src_dir/$file
  done
}

f=$src
while [ -n "$f" ] ; do
  f=$(cat $f | tr -d '\r' | awk '/^include / {printf "'$src_dir'/%s ", $2}')
  [ $? = 0 ] || exit 1
  all_includes="$all_includes $f"
done
process_includes $src

cat $src $all_includes | grep -v '^include'
echo "$target: $all_includes" > $dep
