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.
24AC_DEFUN([ACX_PROG_CC_WARNING_OPTS],
25[AC_REQUIRE([AC_PROG_CC])dnl
26m4_pushdef([acx_Var], [m4_default([$2], [WARN_CFLAGS])])dnl
27AC_SUBST(acx_Var)dnl
28m4_expand_once([acx_Var=
29],m4_quote(acx_Var=))dnl
30save_CFLAGS="$CFLAGS"
31for 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
48done
49CFLAGS="$save_CFLAGS"
50m4_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.
56AC_DEFUN([ACX_PROG_CC_WARNING_ALMOST_PEDANTIC],
57[AC_REQUIRE([AC_PROG_CC])dnl
58m4_pushdef([acx_Var], [m4_default([$2], [WARN_PEDANTIC])])dnl
59AC_SUBST(acx_Var)dnl
60m4_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
64m4_pushdef([acx_Woptions], [m4_bpatsubst([$1], [-Wno-], [-W])])dnl
65AS_VAR_PUSHDEF([acx_Pedantic], [acx_cv_prog_cc_pedantic_]acx_Woptions)dnl
66AS_IF([test "$GCC" = yes],
67[AC_CACHE_CHECK([whether $CC supports -pedantic ]acx_Woptions, acx_Pedantic,
68[save_CFLAGS="$CFLAGS"
69CFLAGS="-pedantic acx_Woptions"
70AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
71   [AS_VAR_SET(acx_Pedantic, yes)],
72   [AS_VAR_SET(acx_Pedantic, no)])
73CFLAGS="$save_CFLAGS"])
74AS_IF([test AS_VAR_GET(acx_Pedantic) = yes],
75      [acx_Var="$acx_Var${acx_Var:+ }-pedantic $1"])
76])
77AS_VAR_POPDEF([acx_Pedantic])dnl
78m4_popdef([acx_Woptions])dnl
79m4_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.
89AC_DEFUN([ACX_PROG_CC_WARNINGS_ARE_ERRORS],
90[AC_REQUIRE([AC_PROG_CC])dnl
91m4_pushdef([acx_Var], [m4_default([$2], [WERROR])])dnl
92AC_SUBST(acx_Var)dnl
93m4_expand_once([acx_Var=
94],m4_quote(acx_Var=))dnl
95AC_ARG_ENABLE(werror-always, 
96    AS_HELP_STRING([--enable-werror-always],
97		   [enable -Werror despite compiler version]),
98[], [enable_werror_always=no])
99AS_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])])
116m4_popdef([acx_Var])dnl
117])# ACX_PROG_CC_WARNINGS_ARE_ERRORS
118