Home | History | Annotate | Download | only in config
      1 # Autoconf include file defining macros related to compile-time warnings.
      2 
      3 # Copyright 2004, 2005, 2007, 2009, 2011 Free Software Foundation, Inc.
      4 
      5 #This file is part of GCC.
      6 
      7 #GCC is free software; you can redistribute it and/or modify it under
      8 #the terms of the GNU General Public License as published by the Free
      9 #Software Foundation; either version 3, or (at your option) any later
     10 #version.
     11 
     12 #GCC is distributed in the hope that it will be useful, but WITHOUT
     13 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     14 #FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     15 #for more details.
     16 
     17 #You should have received a copy of the GNU General Public License
     18 #along with GCC; see the file COPYING3.  If not see
     19 #<http://www.gnu.org/licenses/>.
     20 
     21 # ACX_PROG_CC_WARNING_OPTS(WARNINGS, [VARIABLE = WARN_CFLAGS)
     22 #   Sets @VARIABLE@ to the subset of the given options which the
     23 #   compiler accepts.
     24 AC_DEFUN([ACX_PROG_CC_WARNING_OPTS],
     25 [AC_REQUIRE([AC_PROG_CC])dnl
     26 m4_pushdef([acx_Var], [m4_default([$2], [WARN_CFLAGS])])dnl
     27 AC_SUBST(acx_Var)dnl
     28 m4_expand_once([acx_Var=
     29 ],m4_quote(acx_Var=))dnl
     30 save_CFLAGS="$CFLAGS"
     31 for real_option in $1; do
     32   # Do the check with the no- prefix removed since gcc silently
     33   # accepts any -Wno-* option on purpose
     34   case $real_option in
     35     -Wno-*) option=-W`expr x$real_option : 'x-Wno-\(.*\)'` ;;
     36     *) option=$real_option ;;
     37   esac
     38   AS_VAR_PUSHDEF([acx_Woption], [acx_cv_prog_cc_warning_$option])
     39   AC_CACHE_CHECK([whether $CC supports $option], acx_Woption,
     40     [CFLAGS="$option"
     41     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
     42       [AS_VAR_SET(acx_Woption, yes)],
     43       [AS_VAR_SET(acx_Woption, no)])
     44   ])
     45   AS_IF([test AS_VAR_GET(acx_Woption) = yes],
     46         [acx_Var="$acx_Var${acx_Var:+ }$real_option"])
     47   AS_VAR_POPDEF([acx_Woption])dnl
     48 done
     49 CFLAGS="$save_CFLAGS"
     50 m4_popdef([acx_Var])dnl
     51 ])# ACX_PROG_CC_WARNING_OPTS
     52 
     53 # ACX_PROG_CC_WARNING_ALMOST_PEDANTIC(WARNINGS, [VARIABLE = WARN_PEDANTIC])
     54 #   Append to VARIABLE "-pedantic" + the argument, if the compiler is GCC
     55 #   and accepts all of those options simultaneously, otherwise to nothing.
     56 AC_DEFUN([ACX_PROG_CC_WARNING_ALMOST_PEDANTIC],
     57 [AC_REQUIRE([AC_PROG_CC])dnl
     58 m4_pushdef([acx_Var], [m4_default([$2], [WARN_PEDANTIC])])dnl
     59 AC_SUBST(acx_Var)dnl
     60 m4_expand_once([acx_Var=
     61 ],m4_quote(acx_Var=))dnl
     62 # Do the check with the no- prefix removed from the warning options
     63 # since gcc silently accepts any -Wno-* option on purpose
     64 m4_pushdef([acx_Woptions], [m4_bpatsubst([$1], [-Wno-], [-W])])dnl
     65 AS_VAR_PUSHDEF([acx_Pedantic], [acx_cv_prog_cc_pedantic_]acx_Woptions)dnl
     66 AS_IF([test "$GCC" = yes],
     67 [AC_CACHE_CHECK([whether $CC supports -pedantic ]acx_Woptions, acx_Pedantic,
     68 [save_CFLAGS="$CFLAGS"
     69 CFLAGS="-pedantic acx_Woptions"
     70 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
     71    [AS_VAR_SET(acx_Pedantic, yes)],
     72    [AS_VAR_SET(acx_Pedantic, no)])
     73 CFLAGS="$save_CFLAGS"])
     74 AS_IF([test AS_VAR_GET(acx_Pedantic) = yes],
     75       [acx_Var="$acx_Var${acx_Var:+ }-pedantic $1"])
     76 ])
     77 AS_VAR_POPDEF([acx_Pedantic])dnl
     78 m4_popdef([acx_Woptions])dnl
     79 m4_popdef([acx_Var])dnl
     80 ])# ACX_PROG_CC_WARNING_ALMOST_PEDANTIC
     81 
     82 # ACX_PROG_CC_WARNINGS_ARE_ERRORS([x.y.z], [VARIABLE = WERROR])
     83 #   sets @VARIABLE@ to "-Werror" if the compiler is GCC >=x.y.z, or if
     84 #   --enable-werror-always was given on the command line, otherwise
     85 #   to nothing.
     86 #   If the argument is the word "manual" instead of a version number,
     87 #   then @VARIABLE@ will be set to -Werror only if --enable-werror-always
     88 #   appeared on the configure command line.
     89 AC_DEFUN([ACX_PROG_CC_WARNINGS_ARE_ERRORS],
     90 [AC_REQUIRE([AC_PROG_CC])dnl
     91 m4_pushdef([acx_Var], [m4_default([$2], [WERROR])])dnl
     92 AC_SUBST(acx_Var)dnl
     93 m4_expand_once([acx_Var=
     94 ],m4_quote(acx_Var=))dnl
     95 AC_ARG_ENABLE(werror-always, 
     96     AS_HELP_STRING([--enable-werror-always],
     97 		   [enable -Werror despite compiler version]),
     98 [], [enable_werror_always=no])
     99 AS_IF([test $enable_werror_always = yes],
    100       [acx_Var="$acx_Var${acx_Var:+ }-Werror"])
    101  m4_if($1, [manual],,
    102  [AS_VAR_PUSHDEF([acx_GCCvers], [acx_cv_prog_cc_gcc_$1_or_newer])dnl
    103   AC_CACHE_CHECK([whether $CC is GCC >=$1], acx_GCCvers,
    104     [set fnord `echo $1 | tr '.' ' '`
    105      shift
    106      AC_PREPROC_IFELSE(
    107 [#if __GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ \
    108   < [$]1 * 10000 + [$]2 * 100 + [$]3
    109 #error insufficient
    110 #endif],
    111    [AS_VAR_SET(acx_GCCvers, yes)],
    112    [AS_VAR_SET(acx_GCCvers, no)])])
    113  AS_IF([test AS_VAR_GET(acx_GCCvers) = yes],
    114        [acx_Var="$acx_Var${acx_Var:+ }-Werror"])
    115   AS_VAR_POPDEF([acx_GCCvers])])
    116 m4_popdef([acx_Var])dnl
    117 ])# ACX_PROG_CC_WARNINGS_ARE_ERRORS
    118