Commit | Line | Data |
---|---|---|
1110793a | 1 | dnl Common configure.ac fragment |
5bf135a7 | 2 | dnl |
82704155 | 3 | dnl Copyright (C) 2012-2019 Free Software Foundation, Inc. |
5bf135a7 NC |
4 | dnl |
5 | dnl This file is free software; you can redistribute it and/or modify | |
6 | dnl it under the terms of the GNU General Public License as published by | |
7 | dnl the Free Software Foundation; either version 3 of the License, or | |
8 | dnl (at your option) any later version. | |
1b786873 | 9 | dnl |
5bf135a7 NC |
10 | dnl This program is distributed in the hope that it will be useful, |
11 | dnl but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | dnl GNU General Public License for more details. | |
1b786873 | 14 | dnl |
5bf135a7 NC |
15 | dnl You should have received a copy of the GNU General Public License |
16 | dnl along with this program; see the file COPYING3. If not see | |
17 | dnl <http://www.gnu.org/licenses/>. | |
18 | dnl | |
9e9b66a9 | 19 | |
c5da1932 VZ |
20 | # AC_EGREP_CPP_FOR_BUILD(PATTERN, PROGRAM, |
21 | # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) | |
22 | # ------------------------------------------------------ | |
23 | AC_DEFUN([AC_EGREP_CPP_FOR_BUILD], | |
24 | [AC_LANG_PREPROC_REQUIRE()dnl | |
25 | AC_REQUIRE([AC_PROG_EGREP])dnl | |
26 | AC_LANG_CONFTEST([AC_LANG_SOURCE([[$2]])]) | |
27 | AS_IF([dnl eval is necessary to expand ac_cpp. | |
28 | dnl Ultrix and Pyramid sh refuse to redirect output of eval, so use subshell. | |
29 | (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | | |
30 | dnl Quote $1 to prevent m4 from eating character classes | |
31 | $EGREP "[$1]" >/dev/null 2>&1], | |
32 | [$3], | |
33 | [$4]) | |
34 | rm -f conftest* | |
35 | ])# AC_EGREP_CPP_FOR_BUILD | |
36 | ||
37 | ||
9e9b66a9 | 38 | AC_DEFUN([AM_BINUTILS_WARNINGS],[ |
270c9937 JB |
39 | # Set the 'development' global. |
40 | . $srcdir/../bfd/development.sh | |
41 | ||
c5da1932 VZ |
42 | # Set acp_cpp_for_build variable |
43 | ac_cpp_for_build="$CC_FOR_BUILD -E $CPPFLAGS_FOR_BUILD" | |
44 | ||
9780e045 | 45 | # Default set of GCC warnings to enable. |
d1a98e0c | 46 | GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" |
c5da1932 | 47 | GCC_WARN_CFLAGS_FOR_BUILD="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" |
9780e045 NC |
48 | |
49 | # Add -Wshadow if the compiler is a sufficiently recent version of GCC. | |
3107326d | 50 | AC_EGREP_CPP([(^[0-3]$|^__GNUC__$)],[__GNUC__],,GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wshadow") |
9e9b66a9 | 51 | |
9780e045 | 52 | # Add -Wstack-usage if the compiler is a sufficiently recent version of GCC. |
3107326d | 53 | AC_EGREP_CPP([(^[0-4]$|^__GNUC__$)],[__GNUC__],,GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wstack-usage=262144") |
9780e045 | 54 | |
6757cf57 TS |
55 | # Set WARN_WRITE_STRINGS if the compiler supports -Wwrite-strings. |
56 | WARN_WRITE_STRINGS="" | |
3107326d | 57 | AC_EGREP_CPP([(^[0-3]$|^__GNUC__$)],[__GNUC__],,WARN_WRITE_STRINGS="-Wwrite-strings") |
9780e045 | 58 | |
96fe4562 | 59 | # Verify CC_FOR_BUILD to be compatible with warning flags |
c5da1932 VZ |
60 | |
61 | # Add -Wshadow if the compiler is a sufficiently recent version of GCC. | |
3107326d | 62 | AC_EGREP_CPP_FOR_BUILD([(^[0-3]$|^__GNUC__$)],[__GNUC__],,GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wshadow") |
c5da1932 VZ |
63 | |
64 | # Add -Wstack-usage if the compiler is a sufficiently recent version of GCC. | |
3107326d | 65 | AC_EGREP_CPP_FOR_BUILD([(^[0-4]$|^__GNUC__$)],[__GNUC__],,GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144") |
c5da1932 | 66 | |
9e9b66a9 | 67 | AC_ARG_ENABLE(werror, |
241a6c40 | 68 | [ --enable-werror treat compile warnings as errors], |
9e9b66a9 AM |
69 | [case "${enableval}" in |
70 | yes | y) ERROR_ON_WARNING="yes" ;; | |
71 | no | n) ERROR_ON_WARNING="no" ;; | |
72 | *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;; | |
73 | esac]) | |
74 | ||
d1a98e0c | 75 | # Disable -Wformat by default when using gcc on mingw |
bb8541b9 L |
76 | case "${host}" in |
77 | *-*-mingw32*) | |
78 | if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then | |
79 | GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wno-format" | |
c5da1932 | 80 | GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wno-format" |
bb8541b9 L |
81 | fi |
82 | ;; | |
83 | *) ;; | |
84 | esac | |
85 | ||
270c9937 JB |
86 | # Enable -Werror by default when using gcc. Turn it off for releases. |
87 | if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" -a "$development" = true ; then | |
9e9b66a9 AM |
88 | ERROR_ON_WARNING=yes |
89 | fi | |
90 | ||
91 | NO_WERROR= | |
92 | if test "${ERROR_ON_WARNING}" = yes ; then | |
9780e045 | 93 | GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror" |
c5da1932 | 94 | GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Werror" |
9e9b66a9 AM |
95 | NO_WERROR="-Wno-error" |
96 | fi | |
1b786873 | 97 | |
49c96104 SE |
98 | if test "${GCC}" = yes ; then |
99 | WARN_CFLAGS="${GCC_WARN_CFLAGS}" | |
c5da1932 | 100 | WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}" |
49c96104 SE |
101 | fi |
102 | ||
9e9b66a9 | 103 | AC_ARG_ENABLE(build-warnings, |
241a6c40 | 104 | [ --enable-build-warnings enable build-time compiler warnings], |
9e9b66a9 | 105 | [case "${enableval}" in |
c5da1932 VZ |
106 | yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}" |
107 | WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}";; | |
49c96104 SE |
108 | no) if test "${GCC}" = yes ; then |
109 | WARN_CFLAGS="-w" | |
c5da1932 | 110 | WARN_CFLAGS_FOR_BUILD="-w" |
49c96104 | 111 | fi;; |
9e9b66a9 | 112 | ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` |
c5da1932 VZ |
113 | WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}" |
114 | WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD} ${t}";; | |
9e9b66a9 | 115 | *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` |
c5da1932 VZ |
116 | WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}" |
117 | WARN_CFLAGS_FOR_BUILD="${t} ${GCC_WARN_CFLAGS_FOR_BUILD}";; | |
118 | *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"` | |
119 | WARN_CFLAGS_FOR_BUILD=`echo "${enableval}" | sed -e "s/,/ /g"`;; | |
9e9b66a9 AM |
120 | esac]) |
121 | ||
122 | if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then | |
123 | echo "Setting warning flags = $WARN_CFLAGS" 6>&1 | |
124 | fi | |
125 | ||
126 | AC_SUBST(WARN_CFLAGS) | |
c5da1932 | 127 | AC_SUBST(WARN_CFLAGS_FOR_BUILD) |
9e9b66a9 | 128 | AC_SUBST(NO_WERROR) |
6757cf57 | 129 | AC_SUBST(WARN_WRITE_STRINGS) |
9e9b66a9 | 130 | ]) |