Macro: ac_prog_cc_warnings

Back to the Main Page. | Download the M4 Source.

# ac_prog_cc_warnings

## Synopsis

`AC_PROG_CC_WARNINGS([ANSI])`

## Version

1.1.1.1 (2001/07/26) C_Support @ ac-archive-0.5.32

## Author

Ville Laurikari <vl@iki.fi>

## Description

Enables a reasonable set of warnings for the C compiler. Optionally, if the first argument is nonempty, turns on flags which enforce and/or enable proper ANSI C if such flags are known to the compiler used.

Currently this macro knows about GCC, Solaris C compiler, Digital Unix C compiler, C for AIX Compiler, HP-UX C compiler, and IRIX C compiler.

## M4 Source Code

    AC_DEFUN([AC_PROG_CC_WARNINGS], [
      ansi=$1
      if test -z "$ansi"; then
        msg="for C compiler warning flags"
      else
        msg="for C compiler warning and ANSI conformance flags"
      fi
      AC_CACHE_CHECK($msg, ac_cv_prog_cc_warnings, [
        if test -n "$CC"; then
          cat > conftest.c <<EOF
    int main(int argc, char **argv) { return 0; }
    EOF

          dnl GCC
          if test "$GCC" = "yes"; then
            if test -z "$ansi"; then
              ac_cv_prog_cc_warnings="-Wall"
            else
              ac_cv_prog_cc_warnings="-Wall -ansi -pedantic"
            fi

          dnl Solaris C compiler
          elif $CC -flags 2>&1 | grep "Xc.*strict ANSI C" > /dev/null 2>&1 &&
               $CC -c -v -Xc conftest.c > /dev/null 2>&1 &&
               test -f conftest.o; then
            if test -z "$ansi"; then
              ac_cv_prog_cc_warnings="-v"
            else
              ac_cv_prog_cc_warnings="-v -Xc"
            fi

          dnl HP-UX C compiler
          elif $CC > /dev/null 2>&1 &&
               $CC -c -Aa +w1 conftest.c > /dev/null 2>&1 &&
               test -f conftest.o; then
            if test -z "$ansi"; then
              ac_cv_prog_cc_warnings="+w1"
            else
              ac_cv_prog_cc_warnings="+w1 -Aa"
            fi

          dnl Digital Unix C compiler
          elif ! $CC > /dev/null 2>&1 &&
               $CC -c -verbose -w0 -warnprotos -std1 conftest.c > /dev/null 2>&1 &&
               test -f conftest.o; then
            if test -z "$ansi"; then
              ac_cv_prog_cc_warnings="-verbose -w0 -warnprotos"
            else
              ac_cv_prog_cc_warnings="-verbose -w0 -warnprotos -std1"
            fi

          dnl C for AIX Compiler
          elif $CC > /dev/null 2>&1 | grep AIX > /dev/null 2>&1 &&
               $CC -c -qlanglvl=ansi -qinfo=all conftest.c > /dev/null 2>&1 &&
               test -f conftest.o; then
            if test -z "$ansi"; then
              ac_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd"
            else
              ac_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd -qlanglvl=ansi"
            fi

          dnl IRIX C compiler
          elif $CC -fullwarn -ansi -ansiE > /dev/null 2>&1 &&
               test -f conftest.o; then
            if test -z "$ansi"; then
              ac_cv_prog_cc_warnings="-fullwarn"
            else
              ac_cv_prog_cc_warnings="-fullwarn -ansi -ansiE"
            fi

          fi
          rm -f conftest.*
        fi
        if test -n "$ac_cv_prog_cc_warnings"; then
          CFLAGS="$CFLAGS $ac_cv_prog_cc_warnings"
        else
          ac_cv_prog_cc_warnings="unknown"
        fi
      ])
    ])