home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 November / CPNL0711.ISO / communic / email / Evolution-2.8.2-2.msi / Data1.cab / gnome_compiler_flags.m4 < prev    next >
M4 Source File  |  2007-03-07  |  4KB  |  142 lines

  1. dnl GNOME_COMPILE_WARNINGS
  2. dnl Turn on many useful compiler warnings
  3. dnl For now, only works on GCC
  4. AC_DEFUN([GNOME_COMPILE_WARNINGS],[
  5.     dnl ******************************
  6.     dnl More compiler warnings
  7.     dnl ******************************
  8.  
  9.     AC_ARG_ENABLE(compile-warnings, 
  10.                   AC_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],
  11.                                  [Turn on compiler warnings]),,
  12.                   [enable_compile_warnings="m4_default([$1],[yes])"])
  13.  
  14.     warnCFLAGS=
  15.     if test "x$GCC" != xyes; then
  16.     enable_compile_warnings=no
  17.     fi
  18.  
  19.     warning_flags=
  20.     realsave_CFLAGS="$CFLAGS"
  21.  
  22.     case "$enable_compile_warnings" in
  23.     no)
  24.     warning_flags=
  25.     ;;
  26.     minimum)
  27.     warning_flags="-Wall"
  28.     ;;
  29.     yes)
  30.     warning_flags="-Wall -Wmissing-prototypes"
  31.     ;;
  32.     maximum|error)
  33.     warning_flags="-Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
  34.     CFLAGS="$warning_flags $CFLAGS"
  35.     for option in -Wno-sign-compare; do
  36.         SAVE_CFLAGS="$CFLAGS"
  37.         CFLAGS="$CFLAGS $option"
  38.         AC_MSG_CHECKING([whether gcc understands $option])
  39.         AC_TRY_COMPILE([], [],
  40.             has_option=yes,
  41.             has_option=no,)
  42.         CFLAGS="$SAVE_CFLAGS"
  43.         AC_MSG_RESULT($has_option)
  44.         if test $has_option = yes; then
  45.           warning_flags="$warning_flags $option"
  46.         fi
  47.         unset has_option
  48.         unset SAVE_CFLAGS
  49.     done
  50.     unset option
  51.     if test "$enable_compile_warnings" = "error" ; then
  52.         warning_flags="$warning_flags -Werror"
  53.     fi
  54.     ;;
  55.     *)
  56.     AC_MSG_ERROR(Unknown argument '$enable_compile_warnings' to --enable-compile-warnings)
  57.     ;;
  58.     esac
  59.     CFLAGS="$realsave_CFLAGS"
  60.     AC_MSG_CHECKING(what warning flags to pass to the C compiler)
  61.     AC_MSG_RESULT($warning_flags)
  62.  
  63.     AC_ARG_ENABLE(iso-c,
  64.                   AC_HELP_STRING([--enable-iso-c],
  65.                                  [Try to warn if code is not ISO C ]),,
  66.                   [enable_iso_c=no])
  67.  
  68.     AC_MSG_CHECKING(what language compliance flags to pass to the C compiler)
  69.     complCFLAGS=
  70.     if test "x$enable_iso_c" != "xno"; then
  71.     if test "x$GCC" = "xyes"; then
  72.     case " $CFLAGS " in
  73.         *[\ \    ]-ansi[\ \    ]*) ;;
  74.         *) complCFLAGS="$complCFLAGS -ansi" ;;
  75.     esac
  76.     case " $CFLAGS " in
  77.         *[\ \    ]-pedantic[\ \    ]*) ;;
  78.         *) complCFLAGS="$complCFLAGS -pedantic" ;;
  79.     esac
  80.     fi
  81.     fi
  82.     AC_MSG_RESULT($complCFLAGS)
  83.  
  84.     WARN_CFLAGS="$warning_flags $complCFLAGS"
  85.     AC_SUBST(WARN_CFLAGS)
  86. ])
  87.  
  88. dnl For C++, do basically the same thing.
  89.  
  90. AC_DEFUN([GNOME_CXX_WARNINGS],[
  91.   AC_ARG_ENABLE(cxx-warnings,
  92.                 AC_HELP_STRING([--enable-cxx-warnings=@<:@no/minimum/yes@:>@]
  93.                                [Turn on compiler warnings.]),,
  94.                 [enable_cxx_warnings="m4_default([$1],[minimum])"])
  95.  
  96.   AC_MSG_CHECKING(what warning flags to pass to the C++ compiler)
  97.   warnCXXFLAGS=
  98.   if test "x$GCC" != xyes; then
  99.     enable_compile_warnings=no
  100.   fi
  101.   if test "x$enable_cxx_warnings" != "xno"; then
  102.     if test "x$GCC" = "xyes"; then
  103.       case " $CXXFLAGS " in
  104.       *[\ \    ]-Wall[\ \    ]*) ;;
  105.       *) warnCXXFLAGS="-Wall -Wno-unused" ;;
  106.       esac
  107.  
  108.       ## -W is not all that useful.  And it cannot be controlled
  109.       ## with individual -Wno-xxx flags, unlike -Wall
  110.       if test "x$enable_cxx_warnings" = "xyes"; then
  111.     warnCXXFLAGS="$warnCXXFLAGS -Wshadow -Woverloaded-virtual"
  112.       fi
  113.     fi
  114.   fi
  115.   AC_MSG_RESULT($warnCXXFLAGS)
  116.  
  117.    AC_ARG_ENABLE(iso-cxx,
  118.                  AC_HELP_STRING([--enable-iso-cxx],
  119.                                 [Try to warn if code is not ISO C++ ]),,
  120.                  [enable_iso_cxx=no])
  121.  
  122.    AC_MSG_CHECKING(what language compliance flags to pass to the C++ compiler)
  123.    complCXXFLAGS=
  124.    if test "x$enable_iso_cxx" != "xno"; then
  125.      if test "x$GCC" = "xyes"; then
  126.       case " $CXXFLAGS " in
  127.       *[\ \    ]-ansi[\ \    ]*) ;;
  128.       *) complCXXFLAGS="$complCXXFLAGS -ansi" ;;
  129.       esac
  130.  
  131.       case " $CXXFLAGS " in
  132.       *[\ \    ]-pedantic[\ \    ]*) ;;
  133.       *) complCXXFLAGS="$complCXXFLAGS -pedantic" ;;
  134.       esac
  135.      fi
  136.    fi
  137.   AC_MSG_RESULT($complCXXFLAGS)
  138.  
  139.   WARN_CXXFLAGS="$CXXFLAGS $warnCXXFLAGS $complCXXFLAGS"
  140.   AC_SUBST(WARN_CXXFLAGS)
  141. ])
  142.