1*63d4abf0Sagcdnl @synopsis VL_PROG_CC_WARNINGS([ANSI]) 2*63d4abf0Sagcdnl 3*63d4abf0Sagcdnl Enables a high level of warnings for the C compiler. Optionally, 4*63d4abf0Sagcdnl if the first argument is nonempty, turns on flags which enforce and/or 5*63d4abf0Sagcdnl enable proper ANSI C if such are known with the compiler used. 6*63d4abf0Sagcdnl 7*63d4abf0Sagcdnl Currently this macro knows about GCC, Solaris C compiler, 8*63d4abf0Sagcdnl Digital Unix C compiler, C for AIX Compiler, HP-UX C compiler, 9*63d4abf0Sagcdnl IRIX C compiler, NEC SX-5 (Super-UX 10) C compiler, and Cray J90 10*63d4abf0Sagcdnl (Unicos 10.0.0.8) C compiler. 11*63d4abf0Sagcdnl 12*63d4abf0Sagcdnl @version 1.2 13*63d4abf0Sagcdnl @author Ville Laurikari <vl@iki.fi> 14*63d4abf0Sagcdnl 15*63d4abf0SagcAC_DEFUN([VL_PROG_CC_WARNINGS], [ 16*63d4abf0Sagc # Don't override if CFLAGS was already set. 17*63d4abf0Sagc if test -z "$ac_env_CFLAGS_set"; then 18*63d4abf0Sagc ansi=$1 19*63d4abf0Sagc if test -z "$ansi"; then 20*63d4abf0Sagc msg="for C compiler warning flags" 21*63d4abf0Sagc else 22*63d4abf0Sagc msg="for C compiler warning and ANSI conformance flags" 23*63d4abf0Sagc fi 24*63d4abf0Sagc AC_CACHE_CHECK($msg, vl_cv_prog_cc_warnings, [ 25*63d4abf0Sagc if test -n "$CC"; then 26*63d4abf0Sagc cat > conftest.c <<EOF 27*63d4abf0Sagcint main(int argc, char **argv) { return 0; } 28*63d4abf0SagcEOF 29*63d4abf0Sagc 30*63d4abf0Sagc dnl GCC 31*63d4abf0Sagc if test "$GCC" = "yes"; then 32*63d4abf0Sagc if test -z "$ansi"; then 33*63d4abf0Sagc vl_cv_prog_cc_warnings="-Wall" 34*63d4abf0Sagc else 35*63d4abf0Sagc vl_cv_prog_cc_warnings="-Wall -ansi -pedantic" 36*63d4abf0Sagc fi 37*63d4abf0Sagc 38*63d4abf0Sagc dnl Most compilers print some kind of a version string with some command 39*63d4abf0Sagc dnl line options (often "-V"). The version string should be checked 40*63d4abf0Sagc dnl before doing a test compilation run with compiler-specific flags. 41*63d4abf0Sagc dnl This is because some compilers (like the Cray compiler) only 42*63d4abf0Sagc dnl produce a warning message for unknown flags instead of returning 43*63d4abf0Sagc dnl an error, resulting in a false positive. Also, compilers may do 44*63d4abf0Sagc dnl erratic things when invoked with flags meant for a different 45*63d4abf0Sagc dnl compiler. 46*63d4abf0Sagc 47*63d4abf0Sagc dnl Solaris C compiler 48*63d4abf0Sagc elif $CC -V 2>&1 | grep -i "WorkShop" > /dev/null 2>&1 && 49*63d4abf0Sagc $CC -c -v -Xc conftest.c > /dev/null 2>&1 && 50*63d4abf0Sagc test -f conftest.o; then 51*63d4abf0Sagc if test -z "$ansi"; then 52*63d4abf0Sagc vl_cv_prog_cc_warnings="-v" 53*63d4abf0Sagc else 54*63d4abf0Sagc vl_cv_prog_cc_warnings="-v -Xc" 55*63d4abf0Sagc fi 56*63d4abf0Sagc 57*63d4abf0Sagc dnl Compaq (formerly Digital Unix) C compiler 58*63d4abf0Sagc elif ($CC -V 2>&1 | grep -i "Digital UNIX Compiler" > /dev/null 2>&1 || 59*63d4abf0Sagc $CC -V 2>&1 | grep -i "Compaq C" > /dev/null 2>&1) && 60*63d4abf0Sagc $CC -c -verbose -w0 -warnprotos -std1 conftest.c > /dev/null 2>&1 && 61*63d4abf0Sagc test -f conftest.o; then 62*63d4abf0Sagc if test -z "$ansi"; then 63*63d4abf0Sagc vl_cv_prog_cc_warnings="-verbose -w0 -warnprotos" 64*63d4abf0Sagc else 65*63d4abf0Sagc vl_cv_prog_cc_warnings="-verbose -w0 -warnprotos -std1" 66*63d4abf0Sagc fi 67*63d4abf0Sagc 68*63d4abf0Sagc dnl C for AIX Compiler 69*63d4abf0Sagc elif $CC 2>&1 | grep -i "C for AIX Compiler" > /dev/null 2>&1 && 70*63d4abf0Sagc $CC -c -qlanglvl=ansi -qinfo=all conftest.c > /dev/null 2>&1 && 71*63d4abf0Sagc test -f conftest.o; then 72*63d4abf0Sagc if test -z "$ansi"; then 73*63d4abf0Sagc vl_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd:nouni:nocnv" 74*63d4abf0Sagc else 75*63d4abf0Sagc vl_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd:nouni:nocnv -qlanglvl=ansi" 76*63d4abf0Sagc fi 77*63d4abf0Sagc 78*63d4abf0Sagc dnl IRIX C compiler 79*63d4abf0Sagc elif $CC -version 2>&1 | grep -i "MIPSpro Compilers" > /dev/null 2>&1 && 80*63d4abf0Sagc $CC -c -fullwarn -ansi -ansiE conftest.c > /dev/null 2>&1 && 81*63d4abf0Sagc test -f conftest.o; then 82*63d4abf0Sagc if test -z "$ansi"; then 83*63d4abf0Sagc vl_cv_prog_cc_warnings="-fullwarn" 84*63d4abf0Sagc else 85*63d4abf0Sagc vl_cv_prog_cc_warnings="-fullwarn -ansi -ansiE" 86*63d4abf0Sagc fi 87*63d4abf0Sagc 88*63d4abf0Sagc dnl HP-UX C compiler 89*63d4abf0Sagc elif what $CC 2>&1 | grep -i "HP C Compiler" > /dev/null 2>&1 && 90*63d4abf0Sagc $CC -c -Aa +w1 conftest.c > /dev/null 2>&1 && 91*63d4abf0Sagc test -f conftest.o; then 92*63d4abf0Sagc if test -z "$ansi"; then 93*63d4abf0Sagc vl_cv_prog_cc_warnings="+w1" 94*63d4abf0Sagc else 95*63d4abf0Sagc vl_cv_prog_cc_warnings="+w1 -Aa" 96*63d4abf0Sagc fi 97*63d4abf0Sagc 98*63d4abf0Sagc dnl The NEC SX-5 (Super-UX 10) C compiler 99*63d4abf0Sagc elif $CC -V 2>&1 | grep "/SX" > /dev/null 2>&1 && 100*63d4abf0Sagc $CC -c -pvctl[,]fullmsg -Xc conftest.c > /dev/null 2>&1 && 101*63d4abf0Sagc test -f conftest.o; then 102*63d4abf0Sagc if test -z "$ansi"; then 103*63d4abf0Sagc vl_cv_prog_cc_warnings="-pvctl[,]fullmsg" 104*63d4abf0Sagc else 105*63d4abf0Sagc vl_cv_prog_cc_warnings="-pvctl[,]fullmsg -Xc" 106*63d4abf0Sagc fi 107*63d4abf0Sagc 108*63d4abf0Sagc dnl The Cray C compiler (Unicos) 109*63d4abf0Sagc elif $CC -V 2>&1 | grep -i "Cray" > /dev/null 2>&1 && 110*63d4abf0Sagc $CC -c -h msglevel 2 conftest.c > /dev/null 2>&1 && 111*63d4abf0Sagc test -f conftest.o; then 112*63d4abf0Sagc if test -z "$ansi"; then 113*63d4abf0Sagc vl_cv_prog_cc_warnings="-h msglevel 2" 114*63d4abf0Sagc else 115*63d4abf0Sagc vl_cv_prog_cc_warnings="-h msglevel 2 -h conform" 116*63d4abf0Sagc fi 117*63d4abf0Sagc 118*63d4abf0Sagc fi 119*63d4abf0Sagc rm -f conftest.* 120*63d4abf0Sagc fi 121*63d4abf0Sagc if test -n "$vl_cv_prog_cc_warnings"; then 122*63d4abf0Sagc CFLAGS="$CFLAGS $vl_cv_prog_cc_warnings" 123*63d4abf0Sagc else 124*63d4abf0Sagc vl_cv_prog_cc_warnings="unknown" 125*63d4abf0Sagc fi 126*63d4abf0Sagc ]) 127*63d4abf0Sagc fi 128*63d4abf0Sagc])dnl 129