summaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2007-03-19 23:02:16 +0000
committerDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2007-03-19 23:02:16 +0000
commitfc8fdee1f919c01000b209b1bc3d201557df9bb2 (patch)
tree0c1982dd3c6ba14335b7dd98e43c21929c7a2058 /m4
parenta926bc137b195d5fa9d2fa52914c9f87eba6568a (diff)
downloadxine-lib-fc8fdee1f919c01000b209b1bc3d201557df9bb2.tar.gz
xine-lib-fc8fdee1f919c01000b209b1bc3d201557df9bb2.tar.bz2
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
Diffstat (limited to 'm4')
-rw-r--r--m4/attributes.m4103
1 files changed, 70 insertions, 33 deletions
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ò <flameeyes@gmail.com>
+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([