[Xbubble-commits] xbubble/m4 compiler-flags.m4,NONE,1.1

Martin Quinson xbubble-devel@lists.alioth.debian.org
Wed, 27 Apr 2005 14:45:31 +0000


Update of /cvsroot/xbubble/xbubble/m4
In directory haydn:/tmp/cvs-serv14588

Added Files:
	compiler-flags.m4 
Log Message:
a macro (from simgrid) to add all fancy compiler flags we may need

--- NEW FILE: compiler-flags.m4 ---


dnl SG_COMPILE_FLAGS
dnl Turn on many useful compiler warnings
dnl For now, only sets extra flags on GCC

AC_DEFUN([SG_COMPILE_FLAGS],[
  AC_ARG_ENABLE(compile-warnings,
    AS_HELP_STRING([--enable-compile-warnings], [use compiler warnings (default=no)]),
    enable_compile_warnings=$withval,enable_compile_warnings=no)

  AC_ARG_ENABLE(compile-optimizations,
    AS_HELP_STRING([--enable-compile-optimizations], [use compiler optimizations (default=yes, unless if CFLAGS is explicitly set)]),
    enable_compile_optimizations=$enableval,enable_compile_optimizations=auto)

  if test "x$cflags_set" != "xyes" ; then 
    # if user didn't specify CFLAGS explicitely
    
    # AC PROG CC tests whether -g is accepted. 
    # Cool, but it also tries to set -O2. I don't want it with gcc
    saveCFLAGS="$CFLAGS"
    CFLAGS=
    case " $saveCFLAGS " in
    *-g*) CFLAGS="-g" ;; 
    esac
    case " $saveCFLAGS " in
    *-O2*) test "x$CC" = xgcc || CFLAGS="$CFLAGS -O2" ;; 
    esac
    
    # damn AC PROG CC, why did you set -O??
    CFLAGS="-g"
  fi

  enable_compile_warnings=yes
  AC_MSG_CHECKING(the warning flags for this compiler)
  if test "x$enable_compile_warnings" = "xyes" ; then
    warnCFLAGS=
    if test "x$CC" = "xgcc" || test "x$GCC" = "xyes" ; then
      case " $CFLAGS " in
      *-Wall*) ;;
      *) warnCFLAGS="-Wall -Wunused" ;;
      esac

      ## -W is not all that useful.  And it cannot be controlled
      ## with individual -Wno-xxx flags, unlike -Wall
      if test "x$enable_compile_warnings" = "xyes"; then
        warnCFLAGS=`echo $warnCFLAGS  -Wmissing-prototypes -Wmissing-declarations \
        -Wshadow -Wpointer-arith -Wchar-subscripts -Wcomment -Wformat -Wwrite-strings \
	-Wno-unused-variable -Wno-unused-function -Wno-unused-label \
        -Werror \
	| sed 's/ +/ /g'`
      fi
    fi
    AC_MSG_RESULT($warnCFLAGS)
    # placed before since gcc remembers the last one on conflict
    CFLAGS="$warnCFLAGS $CFLAGS"
  else 
    AC_MSG_RESULT((disabled by ./configure options. enable_compile_warnings=$enable_compile_warnings))
  fi
  
  if test "x$enable_compile_optimizations" = "xyes" ||
     test "x$enable_compile_optimizations" = "xauto" ; then
    AC_MSG_CHECKING(the optimization flags for this compiler)
    optCFLAGS=
    if test "x$CC" = "xgcc" || test "x$GCC" = "xyes" ; then
        case " $CFLAGS " in
        *-O*) ;;
        *) optCFLAGS="$optCFLAGS -O3" ;;
        esac
        optCFLAGS="$optCFLAGS -finline-functions -ffast-math -funroll-loops -fno-strict-aliasing"
      
        if test "x$target_cpu" = "xpowerpc" ; then
          # avoid gcc bug #12828, which is fixed in 3.4.0, but this version
          # isn't propagated enough to desserve an extra check
          optCFLAGS="$optCFLAGS -fno-loop-optimize"
        fi
    fi
    AC_MSG_RESULT($optCFLAGS)
    # Take it only if CFLAGS not explicitly set. Unless the flag was explicitly given
    if test "x$cflags_set" != "xyes" ; then  
      CFLAGS="$optCFLAGS $CFLAGS"
    fi
  fi
  
])