From fc8fdee1f919c01000b209b1bc3d201557df9bb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Mon, 19 Mar 2007 23:02:16 +0000 Subject: Rewrite the CC_CHECK_CFLAGS macro, to be more in style with Autoconf macros, and cache the value. Rewrite also CC_CHECK_WERROR, caching there too. Rename the final variable with the werror flag ($werror -> $cc_cv_werror). CVS patchset: 8714 CVS date: 2007/03/19 23:02:16 --- m4/attributes.m4 | 103 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 70 insertions(+), 33 deletions(-) (limited to 'm4') diff --git a/m4/attributes.m4 b/m4/attributes.m4 index a83390006..b6118433d 100644 --- a/m4/attributes.m4 +++ b/m4/attributes.m4 @@ -1,37 +1,74 @@ -# Functions to check for attributes support in compiler +dnl Macros to check the presence of generic (non-typed) symbols. +dnl Copyright (c) 2006-2007 Diego Pettenò +dnl Copyright (c) 2006-2007 xine project +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2, or (at your option) +dnl any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +dnl 02110-1301, USA. +dnl +dnl As a special exception, the copyright owners of the +dnl macro gives unlimited permission to copy, distribute and modify the +dnl configure scripts that are the output of Autoconf when processing the +dnl Macro. You need not follow the terms of the GNU General Public +dnl License when using or distributing such scripts, even though portions +dnl of the text of the Macro appear in them. The GNU General Public +dnl License (GPL) does govern all other use of the material that +dnl constitutes the Autoconf Macro. +dnl +dnl This special exception to the GPL applies to versions of the +dnl Autoconf Macro released by this project. When you make and +dnl distribute a modified version of the Autoconf Macro, you may extend +dnl this special exception to the GPL to apply to your modified version as +dnl well. AC_DEFUN([CC_CHECK_CFLAGS], [ - ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $1" - AC_MSG_CHECKING([if compiler supports $1]) - AC_COMPILE_IFELSE([int a;], - [cc_check_cflags=yes], - [cc_check_cflags=no]) - AC_MSG_RESULT([$cc_check_cflags]) - CFLAGS="$ac_save_CFLAGS" - - if test "x$cc_check_cflags" = "xyes"; then - true - $2 - else - true - $3 - fi + AC_CACHE_CHECK([if compiler supports $1 flag], + AS_TR_SH([cc_cv_cflags_$1]), + [ac_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $1" + AC_COMPILE_IFELSE([int a;], + [eval "AS_TR_SH([cc_cv_cflags_$1])='yes'"], + [eval "AS_TR_SH([cc_cv_cflags_$1])="]) + CFLAGS="$ac_save_CFLAGS" + ]) + + if eval test [x$]AS_TR_SH([cc_cv_cflags_$1]) = xyes; then + ifelse([$2], , [:], [$2]) + else + ifelse([$3], , [:], [$3]) + fi ]) +dnl Check for a -Werror flag or equivalent. -Werror is the GCC +dnl and ICC flag that tells the compiler to treat all the warnings +dnl as fatal. We usually need this option to make sure that some +dnl constructs (like attributes) are not simply ignored. +dnl +dnl Other compilers don't support -Werror per se, but they support +dnl an equivalent flag: +dnl - Sun Studio compiler supports -errwarn=%all AC_DEFUN([CC_CHECK_WERROR], [ - CC_CHECK_CFLAGS([-Werror], [werror=-Werror]) - - dnl This is for SUN Studio compiler - if test "x$werror" = "x"; then - CC_CHECK_CFLAGS([-errwarn=%all], [werror=-errwarn=%all]) - fi + AC_CACHE_VAL([cc_cv_werror], + [CC_CHECK_CFLAGS([-Werror], [cc_cv_werror=-Werror], + [CC_CHECK_CFLAGS([-errwarn=%all], [cc_cv_werror=-errwarn=%all])]) + ]) ]) AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [ AC_REQUIRE([CC_CHECK_WERROR]) ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $werror" + CFLAGS="$CFLAGS $cc_cv_werror" AC_CACHE_CHECK([if compiler supports __attribute__((constructor))], [cc_cv_attribute_constructor], [AC_COMPILE_IFELSE([ @@ -55,7 +92,7 @@ AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [ AC_DEFUN([CC_ATTRIBUTE_FORMAT], [ AC_REQUIRE([CC_CHECK_WERROR]) ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $werror" + CFLAGS="$CFLAGS $cc_cv_werror" AC_CACHE_CHECK([if compiler supports __attribute__((format(printf, n, n)))], [cc_cv_attribute_format], [AC_COMPILE_IFELSE([ @@ -78,7 +115,7 @@ AC_DEFUN([CC_ATTRIBUTE_FORMAT], [ AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [ AC_REQUIRE([CC_CHECK_WERROR]) ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $werror" + CFLAGS="$CFLAGS $cc_cv_werror" AC_CACHE_CHECK([if compiler supports __attribute__((format_arg(printf)))], [cc_cv_attribute_format_arg], [AC_COMPILE_IFELSE([ @@ -101,7 +138,7 @@ AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [ AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [ AC_REQUIRE([CC_CHECK_WERROR]) ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $werror" + CFLAGS="$CFLAGS $cc_cv_werror" AC_CACHE_CHECK([if compiler supports __attribute__((visibility("...")))], [cc_cv_attribute_visibility], [AC_COMPILE_IFELSE([ @@ -126,7 +163,7 @@ AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [ AC_DEFUN([CC_FLAG_VISIBILITY], [ AC_REQUIRE([CC_CHECK_WERROR]) ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $werror" + CFLAGS="$CFLAGS $cc_cv_werror" AC_CACHE_CHECK([if compiler supports -fvisibility=hidden], [cc_cv_flag_visibility], [ @@ -151,7 +188,7 @@ AC_DEFUN([CC_FLAG_VISIBILITY], [ AC_DEFUN([CC_ATTRIBUTE_NONNULL], [ AC_REQUIRE([CC_CHECK_WERROR]) ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $werror" + CFLAGS="$CFLAGS $cc_cv_werror" AC_CACHE_CHECK([if compiler supports __attribute__((nonnull()))], [cc_cv_attribute_nonnull], [AC_COMPILE_IFELSE([ @@ -175,7 +212,7 @@ AC_DEFUN([CC_ATTRIBUTE_NONNULL], [ AC_DEFUN([CC_ATTRIBUTE_UNUSED], [ AC_REQUIRE([CC_CHECK_WERROR]) ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $werror" + CFLAGS="$CFLAGS $cc_cv_werror" AC_CACHE_CHECK([if compiler supports __attribute__((unused))], [cc_cv_attribute_unused], [AC_COMPILE_IFELSE([ @@ -198,7 +235,7 @@ AC_DEFUN([CC_ATTRIBUTE_UNUSED], [ AC_DEFUN([CC_FUNC_EXPECT], [ AC_REQUIRE([CC_CHECK_WERROR]) ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $werror" + CFLAGS="$CFLAGS $cc_cv_werror" AC_CACHE_CHECK([if compiler has __builtin_expect function], [cc_cv_func_expect], [AC_COMPILE_IFELSE([ @@ -225,7 +262,7 @@ AC_DEFUN([CC_FUNC_EXPECT], [ AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [ AC_REQUIRE([CC_CHECK_WERROR]) ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $werror" + CFLAGS="$CFLAGS $cc_cv_werror" AC_CACHE_CHECK([if compiler supports __attribute__((sentinel))], [cc_cv_attribute_sentinel], [AC_COMPILE_IFELSE([ @@ -248,7 +285,7 @@ AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [ AC_DEFUN([CC_ATTRIBUTE_ALIAS], [ AC_REQUIRE([CC_CHECK_WERROR]) ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $werror" + CFLAGS="$CFLAGS $cc_cv_werror" AC_CACHE_CHECK([if compiler supports __attribute__((weak, alias))], [cc_cv_attribute_alias], [AC_COMPILE_IFELSE([ -- cgit v1.2.3