# Compile warning arguments to ./configure
# by Christian Stimming <stimming@tuhh.de> 2003-11-19

dnl ACX_COMPILE_WARN()
dnl Add arguments for compile warnings and debug options to ./configure.
dnl
AC_DEFUN([ACX_COMPILE_WARN],
[
dnl Add compile arguments for debugging and warnings. Macro argument
dnl $1 is the default argument if --enable-debug is not specified.

dnl If no Macro argument is given, enable the debugging code.
if test -z "$1"; then 
  default_debug_arg="-g"; else 
  default_debug_arg="$1"; 
fi

AC_MSG_CHECKING([for compiler arguments])

dnl For enabling of debugging flags/code
AC_ARG_ENABLE(debug,
  [  --enable-debug          enable compile arguments for debugging code],
  [case "${enableval}" in
     yes)   CXXFLAGS="${CXXFLAGS} -g"
	    # Remove -O2
	    CXXFLAGS=`echo "${CXXFLAGS}" | sed -e 's/-O2//'`
	    CFLAGS="${CFLAGS} -g"
	    LDFLAGS="${LDFLAGS} -g"
	    AC_DEFINE(DEBUG,1,[Define if you want debugging code enabled.]) ;;
     no) ;;
     *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
   esac
  ], [
	# Default value if the argument was not given
	CXXFLAGS="${CXXFLAGS} ${default_debug_arg}"
	CFLAGS="${CFLAGS} ${default_debug_arg}"
	LDFLAGS="${LDFLAGS} ${default_debug_arg}"
])

dnl If this is gcc, then ...
if test ${GCC}x = yesx; then

  dnl Enable all warnings
  AC_ARG_ENABLE(warnings,
    [  --enable-warnings       enable compilation warnings, default=yes],
    [case "${enableval}" in
       yes) CXXFLAGS="${CXXFLAGS} -Wall -pedantic -ansi"
	    CFLAGS="${CFLAGS} -Wall -pedantic" ;;
       all) CXXFLAGS="${CXXFLAGS} -Wall -pedantic -ansi"
	    CFLAGS="${CFLAGS} -Wall -pedantic -ansi" ;;
       no) ;;
       *) AC_MSG_ERROR(bad value ${enableval} for --enable-warnings) ;;
     esac
  ], [ 
     # Default value if the argument was not given
     CXXFLAGS="${CXXFLAGS} -Wall" 
     CFLAGS="${CFLAGS} -Wall" 
  ])

  dnl For gcc >= 3.4.x, specifically enable the new warning switch
  dnl -Wdeclaration-after-statement in order to preserve source code
  dnl compatibility to gcc 2.95 and other compilers.
  GCC_VERSION=`${CC} -dumpversion`
  if test `echo ${GCC_VERSION} | cut -d. -f1` -ge 3; then
     # This is gcc >= 3.x.x
     if test `echo ${GCC_VERSION} | cut -d. -f2` -ge 4; then
	# This is gcc >= 3.4.x
	CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
     fi
  fi

  dnl For enabling error on warnings
  AC_ARG_ENABLE(error-on-warning,
    [  --enable-error-on-warning treat all compile warnings as errors, default=no],
    [case "${enableval}" in
       yes) CXXFLAGS="${CXXFLAGS} -Werror" 
	    CFLAGS="${CFLAGS} -Werror" ;;
       no) ;;
       *) AC_MSG_ERROR(bad value ${enableval} for --enable-error-on-warning) ;;
     esac
  ], [ 
     # Default value if the argument was not given
     CXXFLAGS="${CXXFLAGS}" 
     CFLAGS="${CFLAGS}" 
  ])
fi

# Beautify the CXXFLAGS: remove extra spaces, remove double -g
CXXFLAGS=`echo "${CXXFLAGS}" | sed -e 's/   */ /g' | sed -e 's/-g -g/-g/'`

# Print the result
AC_MSG_RESULT($CXXFLAGS)

])


syntax highlighted by Code2HTML, v. 0.9.1