Paul Brook | bd9141b | 2010-11-26 18:47:45 +0000 | [diff] [blame] | 1 | #! /bin/sh |
Paolo Bonzini | 15564d8 | 2015-03-12 16:00:05 +0100 | [diff] [blame] | 2 | # Writes a target device config file to stdout, from a default and from |
| 3 | # include directives therein. Also emits Makefile dependencies. |
| 4 | # |
| 5 | # Usage: make_device_config.sh SRC DEPFILE-NAME DEPFILE-TARGET > DEST |
Paul Brook | bd9141b | 2010-11-26 18:47:45 +0000 | [diff] [blame] | 6 | |
Paolo Bonzini | 15564d8 | 2015-03-12 16:00:05 +0100 | [diff] [blame] | 7 | src=$1 |
| 8 | dep=$2 |
| 9 | target=$3 |
Paul Brook | bd9141b | 2010-11-26 18:47:45 +0000 | [diff] [blame] | 10 | src_dir=`dirname $src` |
| 11 | all_includes= |
| 12 | |
| 13 | process_includes () { |
| 14 | cat $1 | grep '^include' | \ |
| 15 | while read include file ; do |
| 16 | all_includes="$all_includes $src_dir/$file" |
| 17 | process_includes $src_dir/$file |
| 18 | done |
| 19 | } |
| 20 | |
| 21 | f=$src |
| 22 | while [ -n "$f" ] ; do |
Gerd Hoffmann | f4ece40 | 2013-02-01 10:48:34 +0100 | [diff] [blame] | 23 | f=`cat $f | tr -d '\r' | awk '/^include / {printf "'$src_dir'/%s ", $2}'` |
Paul Brook | cf66924 | 2010-11-27 00:43:04 +0000 | [diff] [blame] | 24 | [ $? = 0 ] || exit 1 |
Paul Brook | bd9141b | 2010-11-26 18:47:45 +0000 | [diff] [blame] | 25 | all_includes="$all_includes $f" |
| 26 | done |
Paolo Bonzini | 15564d8 | 2015-03-12 16:00:05 +0100 | [diff] [blame] | 27 | process_includes $src |
Paul Brook | bd9141b | 2010-11-26 18:47:45 +0000 | [diff] [blame] | 28 | |
Paolo Bonzini | 15564d8 | 2015-03-12 16:00:05 +0100 | [diff] [blame] | 29 | cat $src $all_includes | grep -v '^include' |
| 30 | echo "$target: $all_includes" > $dep |