pud: use the correct field for padding
[olsrd.git] / gcc-warnings
1 #!/bin/sh
2
3 # The olsr.org Optimized Link-State Routing daemon (olsrd)
4 #
5 # (c) by the OLSR project
6 #
7 # See our Git repository to find out who worked on this file
8 # and thus is a copyright holder on it.
9 #
10 # All rights reserved.
11 #
12 # Redistribution and use in source and binary forms, with or without
13 # modification, are permitted provided that the following conditions
14 # are met:
15 #
16 # * Redistributions of source code must retain the above copyright
17 #   notice, this list of conditions and the following disclaimer.
18 # * Redistributions in binary form must reproduce the above copyright
19 #   notice, this list of conditions and the following disclaimer in
20 #   the documentation and/or other materials provided with the
21 #   distribution.
22 # * Neither the name of olsr.org, olsrd nor the names of its
23 #   contributors may be used to endorse or promote products derived
24 #   from this software without specific prior written permission.
25 #
26 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
29 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
30 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
31 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
32 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
36 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37 # POSSIBILITY OF SUCH DAMAGE.
38 #
39 # Visit http://www.olsr.org for more information.
40 #
41 # If you find this software useful feel free to make a donation
42 # to the project. For more information see the website or contact
43 # the copyright holders.
44 #
45
46 #
47 # We expect warning options for gcc as arguments and return the ones which are
48 # accepted by the given gcc.
49 #
50
51 set -ue
52 #set -vx
53
54 # make sure we do not use some locale ....
55 export LANG=C LC_ALL=C LC_COLLATE=C LC_CTYPE=C LC_MESSAGES=C LC_NUMERIC=C
56
57 OPTS=""
58 for param; do
59     case "$param" in
60     -[fWm]?*) OPTS="$OPTS $param";;
61     *)        echo "Ignoring $param" >&2
62     esac
63 done
64
65 testcompile() {
66     $CC $OPTS -x c -o /dev/null - 2>&1 <<- EOF
67        int main(void) {
68            return 0;
69        }
70 EOF
71 }
72
73 parsetest() {
74     while read error; do
75         case "$error" in
76         *:\ unrecognized\ *option\ \"*)
77             opt="${error#*\"}"
78             opt="${opt%\"*}"
79             ;;
80         *:\ unrecognized\ *option\ \‘*)
81             opt="${error#*\‘}"
82             opt="${opt%\‘*}"
83             ;;
84         *:\ unrecognized\ *option\ \'*)
85             opt="${error#*\'}"
86             opt="${opt%\'*}"
87             ;;
88         *:\ unrecognized\ *option\ \`*)
89             opt="${error#*\`}"
90             opt="${opt%\'*}"
91             ;;
92
93         # clang
94         *:\ unknown\ argument:\ \'*)
95             opt="${error#*\'}"
96             opt="${opt%\'*}"
97             ;;
98         *:\ unknown\ warning\ option\ \'*)
99             opt="${error#*\'}"
100             opt="${opt%\'*}"
101             ;;
102         *:\ optimization\ flag\ *\ is\ not\ supported)
103             opt="${error#*\'}"
104             opt="${opt%\'*}"
105             ;;
106
107         *)
108             continue
109             ;;
110        esac
111        # if we come here, we have in $opt the option to remove. and
112        # we remove all instances. And we save against leading "-"
113        NEW_OPTS=""
114        for o in $OPTS; do
115            case "$o" in
116                $opt) : echo "Removed $o" >&2;;
117                *)    NEW_OPTS="$NEW_OPTS $o";;
118            esac
119        done
120        OPTS="$NEW_OPTS"
121     done
122     echo $OPTS
123 }
124
125 testcompile | parsetest
126
127 exit 0