3 # Wrapper script for edg to simulate most common gcc flags
5 # This is not perfectly exact but should be good enough for most cases in
7 # @author: Matthias Braun
10 EDGFLAGS="-b vrfy=assert -b ra-chordal-vrfy=assert --gnu=30305 --c -I/usr/lib/gcc-lib/i586-suse-linux/3.3.5/include"
16 OPT2="-fno-strength-red"
17 OPT3="-fif-conv -finline -fno-strength-red"
18 #OPT3="-finline -fno-strength-red"
38 -E ) mode=PREPROCESS;;
39 -b ) shift ; CFLAGS=("${CFLAGS[@]}" -b "$1");;
40 -b* ) CFLAGS=("${CFLAGS[@]}" "$1");;
41 -o ) shift ; OUTFILE="$1";;
42 -o* ) OUTFILE="`echo "$1" | sed -e "s/^-o//"`";;
44 --version ) echo "eccp version 0.1"; exit 0;;
48 -l ) LFLAGS=("${LFLAGS[@]}" "-l $1");;
49 -L ) LFLAGS=("${LFLAGS[@]}" "-L $1");;
50 -l* | -L* ) LFLAGS=("${LFLAGS[@]}" "$1");;
59 -MD | -MP | -MM | -MG ) ;;
60 -I ) shift; CPPFLAGS=("${CPPFLAGS[@]}" "-I $1");;
61 -D ) shift; CPPFLAGS=("${CPPFLAGS[@]}" "-D $1");;
62 -D* | -I* ) CPPFLAGS=("${CPPFLAGS[@]}" "$1");;
63 -O0 ) OPTFLAGS="$OPT0";;
64 -O | -O1 ) OPTFLAGS="$OPT1";;
65 -O2 ) OPTFLAGS="$OPT2";;
67 -O* ) OPTFLAGS="$OPT3";;
69 -* ) echo "WARNING: Unknown option $1" >& 2; exit 1;;
71 *.c ) CFILES=("${CFILES[@]}" "$1");;
72 *.s ) SFILES=("${SFILES[@]}" "$1");;
73 *.o ) OFILES=("${OFILES[@]}" "$1");;
74 * ) echo "WARNING: file format $1 not recognized" >&2;
79 CFLAGS=("${CFLAGS[@]}" $OPTFLAGS)
81 if [ "$DEBUG" == "1" ]; then
82 echo "OPTFLAGS ${OPTFLAGS}"
83 echo "CFLAGS ${CFLAGS[*]}"
84 echo "CPPFLAGS ${CPPFLAGS[*]}"
85 echo "LFLAGS ${LFLAGS[*]}"
86 echo "CFILES ${CFILES[*]}"
87 echo "SFILES ${SFILES[*]}"
88 echo "OFILES ${OFILE[*]}"
89 echo "OUTFILE $OUTFILE"
92 if [ "$mode" = "LINK" -a "$OUTFILE" = "" ] ; then
96 if [ "$mode" = "PREPROCESS" ] ; then
97 for cfile in "${CFILES[@]}"; do
99 if [ -n "$OUTFILE" ] ; then
100 OUTFLAGS="-o$OUTFILE"
103 if [ "$DEBUG" = "1" ]; then
104 echo gcc -E "${CPPFLAGS[@]}" "$cfile" "$OUTFLAGS"
106 gcc -E "${CPPFLAGS[@]}" "$cfile" "$OUTFLAGS" || exit $?
111 if [ "$mode" = "COMPILE" -o "$mode" = "ASSEMBLE" -o $mode = "LINK" ] ; then
112 for cfile in "${CFILES[@]}"; do
113 if [ -n "$OUTFILE" -a "$mode" = "COMPILE" ] ; then
116 sfile="`dirname "$cfile"`/`basename "$cfile" .c`.s"
119 if [ "$DEBUG" = "1" ]; then
120 echo edg $EDGFLAGS "${CPPFLAGS[@]}" "${CFLAGS[@]}" "$cfile" -o "$sfile"
122 edg $EDGFLAGS "${CPPFLAGS[@]}" "${CFLAGS[@]}" "$cfile" || exit $?
124 SFILES=("${SFILES[@]}" "$sfile")
128 if [ "$mode" = "ASSEMBLE" -o "$mode" = "LINK" ] ; then
129 for sfile in "${SFILES[@]}"; do
130 if [ -n "$OUTFILE" -a $mode = "ASSEMBLE" ] ; then
133 ofile="`dirname "$sfile"`/`basename "$sfile" .s`.o"
135 if [ "$DEBUG" = "1" ]; then
136 echo "$AS" $ASSEMBLEFLAGS "$sfile" -o "$ofile"
138 "$AS" $ASSEMBLEFLAGS "$sfile" -o "$ofile" || exit $?
139 OFILES=("${OFILES[@]}" "$ofile")
143 if [ $mode = "LINK" ] ; then
144 if [ "$DEBUG" = "1" ]; then
145 echo gcc ${LFLAGS[@]} ${OFILES[@]} -o "$OUTFILE"
147 gcc ${LFLAGS[@]} ${OFILES[@]} -o "$OUTFILE"