Merge pull request #505 from roji/shutdown_flow
[mono.git] / mcs / build / gensources.sh
1 #! /bin/sh
2
3 outfile=$1
4 incfile=$2
5 excfile=$3
6 extfile=$4
7
8 process_includes_1() {
9     sed -e '/^[ \t]*$/d' -e '/^[ \t]*#/d' $1 > $2
10     if cmp -s $1 $2; then
11         false
12     else
13         sed -n 's,^[ \t]*#include ,,p' $1 |
14         while read inc; do
15             cat $inc >> $2
16             echo $outfile: $inc >> $outfile.makefrag
17             echo $inc: >> $outfile.makefrag
18         done
19     fi
20 }
21
22 process_includes() {
23     i=$1; o=$2; t=${2}.tmp
24     while process_includes_1 $i $o; do
25         mv $o $t
26         i=$t
27     done
28     rm -f $t
29 }
30
31 rm -f $outfile.makefrag
32
33 process_includes $incfile $outfile.inc
34
35 if test x$extfile != x -a -f "$extfile"; then
36         cat $extfile >> $outfile.inc
37 fi
38
39 sort -u $outfile.inc > $outfile.inc_s
40 rm -f $outfile.inc
41
42 if test -z "$excfile"; then
43     mv $outfile.inc_s $outfile
44 else
45     process_includes $excfile $outfile.exc
46
47     sort -u $outfile.exc > $outfile.exc_s
48     rm -f $outfile.exc
49
50     sort -m $outfile.inc_s $outfile.exc_s | uniq -u > $outfile
51     rm -f $outfile.inc_s $outfile.exc_s
52 fi
53
54