#!/bin/bash # gcc -Wall plus other important warnings not included in -Wall for arg in "$@" do case $arg in -O*) Wuninitialized=-Wuninitialized;; # only makes sense with `-O' esac done GCC="gcc${COMPILER_VERSION:+-$COMPILER_VERSION}" #PEDANTIC="-std=gnu99" #PEDANTIC="-pedantic -std=gnu99" #PEDANTIC="-pedantic -std=gnu99 -Wno-variadic-macros" #CONVERSION="-Wconversion" # -Wpacked \ # This does more than expected for gcc (mixed code with declarations) # -Wdeclaration-after-statement \ EXTRA="-Wextra \ -Wsign-compare \ -Werror-implicit-function-declaration \ -Wpointer-arith \ -Wwrite-strings \ -Wswitch \ -Wmissing-format-attribute \ -Wstrict-aliasing=3 \ -Winit-self \ -Wunsafe-loop-optimizations \ -Wold-style-definition \ -Wno-missing-field-initializers \ -Wno-unused-parameter \ -Wno-long-long \ -Wmaybe-uninitialized \ -Wvla \ -Wformat-overflow \ -Wformat-truncation" exec $GCC $PEDANTIC $CONVERSION \ -Wall $Wuninitialized \ -Wno-switch \ -Wdisabled-optimization \ -Wwrite-strings \ -Wpointer-arith \ -Wbad-function-cast \ -Wmissing-prototypes \ -Wmissing-declarations \ -Wstrict-prototypes \ -Wnested-externs \ -Wcomment \ -Winline \ -Wcast-align=strict \ -Wcast-qual \ -Wredundant-decls $EXTRA \ "$@"