- Replaced "which" with a /bin/sh script snippet.
[olsrd.git] / gcc-warnings
1 #!/bin/sh
2 #
3 # We expect warning options for gcc as arguments and return the ones which are
4 # accepted by the given gcc.
5 #
6 # $Id: gcc-warnings,v 1.9 2007/12/11 17:16:03 bernd67 Exp $
7
8 set -ue
9 #set -vx
10
11 # make sure we do not use some locale ....
12 export LANG=C LC_ALL=C LC_COLLATE=C LC_CTYPE=C LC_MESSAGES=C LC_NUMERIC=C
13
14 OPTS=""
15 for param; do
16     case "$param" in
17     -[fWm]?*) OPTS="$OPTS $param";;
18     *)        echo "Ignoring $param" >&2
19     esac
20 done
21
22 testcompile() {
23     $CC $OPTS -x c -o /dev/null - 2>&1 <<- EOF
24        int main(void) {
25            return 0;
26        }
27 EOF
28 }
29
30 parsetest() {
31     while read error; do 
32         case "$error" in
33         *:\ unrecognized\ *option\ \"*)
34             opt="${error#*\"}"
35             opt="${opt%\"*}"
36             ;;
37         *:\ unrecognized\ *option\ \`*)
38             opt="${error#*\`}"
39             opt="${opt%\'*}"
40             ;;
41         *) continue
42             ;;
43        esac
44        # if we come here, we have in $opt the option to remove. and
45        # we remove all instances. And we save agoinst leading "-"
46        NEW_OPTS=""
47        for o in $OPTS; do
48            case "$o" in
49                $opt) : echo "Removed $o" >&2;;
50                *)    NEW_OPTS="$NEW_OPTS $o";;
51            esac
52        done
53        OPTS="$NEW_OPTS"
54     done
55     echo $OPTS
56 }
57
58 testcompile | parsetest
59
60 exit 0