#!/bin/sh # The olsr.org Optimized Link-State Routing daemon (olsrd) # # (c) by the OLSR project # # See our Git repository to find out who worked on this file # and thus is a copyright holder on it. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of olsr.org, olsrd nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # Visit http://www.olsr.org for more information. # # If you find this software useful feel free to make a donation # to the project. For more information see the website or contact # the copyright holders. # # # We expect warning options for gcc as arguments and return the ones which are # accepted by the given gcc. # set -ue #set -vx # make sure we do not use some locale .... export LANG=C LC_ALL=C LC_COLLATE=C LC_CTYPE=C LC_MESSAGES=C LC_NUMERIC=C OPTS="" for param; do case "$param" in -[fWm]?*) OPTS="$OPTS $param";; *) echo "Ignoring $param" >&2 esac done testcompile() { $CC $OPTS -x c -o /dev/null - 2>&1 <<- EOF int main(void) { return 0; } EOF } parsetest() { while read error; do case "$error" in *:\ unrecognized\ *option\ \"*) opt="${error#*\"}" opt="${opt%\"*}" ;; *:\ unrecognized\ *option\ \‘*) opt="${error#*\‘}" opt="${opt%\‘*}" ;; *:\ unrecognized\ *option\ \'*) opt="${error#*\'}" opt="${opt%\'*}" ;; *:\ unrecognized\ *option\ \`*) opt="${error#*\`}" opt="${opt%\'*}" ;; # clang *:\ unknown\ argument:\ \'*) opt="${error#*\'}" opt="${opt%\'*}" ;; *:\ unknown\ warning\ option\ \'*) opt="${error#*\'}" opt="${opt%\'*}" ;; *:\ optimization\ flag\ *\ is\ not\ supported) opt="${error#*\'}" opt="${opt%\'*}" ;; *) continue ;; esac # if we come here, we have in $opt the option to remove. and # we remove all instances. And we save against leading "-" NEW_OPTS="" for o in $OPTS; do case "$o" in $opt) : echo "Removed $o" >&2;; *) NEW_OPTS="$NEW_OPTS $o";; esac done OPTS="$NEW_OPTS" done echo $OPTS } testcompile | parsetest exit 0