Browse files

Use ax_check_compiler_flags.m4 from autoconf-archive

The macro AX_CHECK_COMPILER_FLAG provided by this file is more robust
than the currently used macro CHECK_CFLAG.

Signed-off-by: Ali Polatel <polatel@gmail.com>
  • Loading branch information...
1 parent 58198f2 commit fb9b325745a749ee203d2c7cef0c3b53a6c8d75b @alip alip committed with MaxKellermann Aug 14, 2009
Showing with 78 additions and 26 deletions.
  1. +4 −11 configure.ac
  2. +74 −0 m4/ax_check_compiler_flags.m4
  3. +0 −15 m4/cflags.m4
View
15 configure.ac
@@ -77,17 +77,10 @@ dnl
AC_SUBST(AM_CFLAGS)
AC_SUBST(AM_CPPFLAGS)
-CHECK_CFLAG([-Wall])
-CHECK_CFLAG([-Wextra])
-CHECK_CFLAG([-Wno-deprecated-declarations])
-CHECK_CFLAG([-Wmissing-prototypes])
-CHECK_CFLAG([-Wdeclaration-after-statement])
-CHECK_CFLAG([-Wshadow])
-CHECK_CFLAG([-Wpointer-arith])
-CHECK_CFLAG([-Wstrict-prototypes])
-CHECK_CFLAG([-Wcast-qual])
-CHECK_CFLAG([-Wwrite-strings])
-
+WANTED_CFLAGS="-Wall -W -Wextra -Wno-deprecated-declarations -Wmissing-prototypes -Wdeclaration-after-statement -Wshadow -Wpointer-arith -Wstrict-prototypes -Wcast-qual -Wwrite-strings"
+for flag in $WANTED_CFLAGS ; do
+ AX_CHECK_COMPILER_FLAGS([$flag], [CFLAGS="$CFLAGS $flag"],)
+done
dnl
dnl Compile-time options
View
74 m4/ax_check_compiler_flags.m4
@@ -0,0 +1,74 @@
+# ===========================================================================
+# http://www.nongnu.org/autoconf-archive/ax_check_compiler_flags.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_CHECK_COMPILER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE])
+#
+# DESCRIPTION
+#
+# Check whether the given compiler FLAGS work with the current language's
+# compiler, or whether they give an error. (Warnings, however, are
+# ignored.)
+#
+# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+# success/failure.
+#
+# LICENSE
+#
+# Copyright (c) 2009 Steven G. Johnson <stevenj@alum.mit.edu>
+# Copyright (c) 2009 Matteo Frigo
+#
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# all other use of the material that constitutes the Autoconf Macro.
+#
+# This special exception to the GPL applies to versions of the Autoconf
+# Macro released by the Autoconf Archive. When you make and distribute a
+# modified version of the Autoconf Macro, you may extend this special
+# exception to the GPL to apply to your modified version as well.
+
+AC_DEFUN([AX_CHECK_COMPILER_FLAGS],
+[AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX
+AC_MSG_CHECKING([whether _AC_LANG compiler accepts $1])
+dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname:
+AS_LITERAL_IF([$1],
+ [AC_CACHE_VAL(AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1]), [
+ ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
+ _AC_LANG_PREFIX[]FLAGS="$1"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
+ AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=yes,
+ AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=no)
+ _AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS])],
+ [ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
+ _AC_LANG_PREFIX[]FLAGS="$1"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
+ eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=yes,
+ eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=no)
+ _AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS])
+eval ax_check_compiler_flags=$AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])
+AC_MSG_RESULT($ax_check_compiler_flags)
+if test "x$ax_check_compiler_flags" = xyes; then
+ m4_default([$2], :)
+else
+ m4_default([$3], :)
+fi
+])dnl AX_CHECK_COMPILER_FLAGS
View
15 m4/cflags.m4
@@ -1,15 +0,0 @@
-AC_DEFUN([CHECK_CFLAG], [
- var=`echo "$1" | tr "=-" "__"`
- AC_CACHE_CHECK([whether the C compiler accepts $1],[check_cflag_$var],[
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $1"
- AC_COMPILE_IFELSE([int main(void) { return 0; }],
- [eval "check_cflag_$var=yes"],
- [eval "check_cflag_$var=no"])
- CFLAGS="$save_CFLAGS"
- ])
- if eval "test x`echo '$check_cflag_'$var` = xyes"; then
- AM_CFLAGS="$AM_CFLAGS $1"
- fi
- ])
-])

0 comments on commit fb9b325

Please sign in to comment.