aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--autoconf/ast_gcc_attribute.m413
-rwxr-xr-xconfigure99
-rw-r--r--configure.ac2
3 files changed, 92 insertions, 22 deletions
diff --git a/autoconf/ast_gcc_attribute.m4 b/autoconf/ast_gcc_attribute.m4
index 806b39019..f08b2545b 100644
--- a/autoconf/ast_gcc_attribute.m4
+++ b/autoconf/ast_gcc_attribute.m4
@@ -1,5 +1,5 @@
# Helper function to check for gcc attributes.
-# AST_GCC_ATTRIBUTE([attribute name], [attribute syntax])
+# AST_GCC_ATTRIBUTE([attribute name], [attribute syntax], [attribute scope])
AC_DEFUN([AST_GCC_ATTRIBUTE],
[
@@ -7,10 +7,17 @@ AC_MSG_CHECKING(for compiler 'attribute $1' support)
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
+if test "x$3" = "x"
+then
+attribute_scope="static"
+else
+attribute_scope="$3"
+fi
+
if test "x$2" = "x"
then
AC_COMPILE_IFELSE(
- AC_LANG_PROGRAM([static void __attribute__(($1)) *test(void *muffin, ...) {return (void *) 0;}],
+ AC_LANG_PROGRAM([$attribute_scope void __attribute__(($1)) *test(void *muffin, ...) {return (void *) 0;}],
[]),
AC_MSG_RESULT(yes)
AC_DEFINE_UNQUOTED([HAVE_ATTRIBUTE_$1], 1, [Define to 1 if your GCC C compiler supports the '$1' attribute.]),
@@ -18,7 +25,7 @@ AC_COMPILE_IFELSE(
)
else
AC_COMPILE_IFELSE(
- AC_LANG_PROGRAM([static void __attribute__(($2)) *test(void *muffin, ...) {return (void *) 0;}],
+ AC_LANG_PROGRAM([$attribute_scope void __attribute__(($2)) *test(void *muffin, ...) {return (void *) 0;}],
[]),
AC_MSG_RESULT(yes)
AC_DEFINE_UNQUOTED([HAVE_ATTRIBUTE_$1], 1, [Define to 1 if your GCC C compiler supports the '$1' attribute.]),
diff --git a/configure b/configure
index 3ba512bad..2149fa1da 100755
--- a/configure
+++ b/configure
@@ -17472,13 +17472,20 @@ CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
if test "x" = "x"
then
+attribute_scope="static"
+else
+attribute_scope=""
+fi
+
+if test "x" = "x"
+then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__((pure)) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__((pure)) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -17529,7 +17536,7 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -17586,13 +17593,20 @@ CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
if test "x" = "x"
then
+attribute_scope="static"
+else
+attribute_scope=""
+fi
+
+if test "x" = "x"
+then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__((malloc)) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__((malloc)) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -17643,7 +17657,7 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -17700,13 +17714,20 @@ CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
if test "x" = "x"
then
+attribute_scope="static"
+else
+attribute_scope=""
+fi
+
+if test "x" = "x"
+then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__((const)) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__((const)) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -17757,7 +17778,7 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -17814,13 +17835,20 @@ CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
if test "x" = "x"
then
+attribute_scope="static"
+else
+attribute_scope=""
+fi
+
+if test "x" = "x"
+then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__((unused)) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__((unused)) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -17871,7 +17899,7 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -17928,13 +17956,20 @@ CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
if test "x" = "x"
then
+attribute_scope="static"
+else
+attribute_scope=""
+fi
+
+if test "x" = "x"
+then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__((always_inline)) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__((always_inline)) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -17985,7 +18020,7 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -18042,13 +18077,20 @@ CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
if test "x" = "x"
then
+attribute_scope="static"
+else
+attribute_scope=""
+fi
+
+if test "x" = "x"
+then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__((deprecated)) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__((deprecated)) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -18099,7 +18141,7 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -18156,13 +18198,20 @@ CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
if test "x" = "x"
then
+attribute_scope="static"
+else
+attribute_scope=""
+fi
+
+if test "x" = "x"
+then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__((sentinel)) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__((sentinel)) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -18213,7 +18262,7 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -18270,13 +18319,20 @@ CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
if test "x" = "x"
then
+attribute_scope="static"
+else
+attribute_scope=""
+fi
+
+if test "x" = "x"
+then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__((warn_unused_result)) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__((warn_unused_result)) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -18327,7 +18383,7 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -18382,6 +18438,13 @@ $as_echo_n "checking for compiler 'attribute weak' support... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
+if test "x""" = "x"
+then
+attribute_scope="static"
+else
+attribute_scope=""""
+fi
+
if test "x" = "x"
then
cat >conftest.$ac_ext <<_ACEOF
@@ -18390,7 +18453,7 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__((weak)) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__((weak)) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
@@ -18441,7 +18504,7 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
+$attribute_scope void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
int
main ()
{
diff --git a/configure.ac b/configure.ac
index b388df28f..43a14fb2b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -488,7 +488,7 @@ AST_GCC_ATTRIBUTE(always_inline)
AST_GCC_ATTRIBUTE(deprecated)
AST_GCC_ATTRIBUTE(sentinel)
AST_GCC_ATTRIBUTE(warn_unused_result)
-AST_GCC_ATTRIBUTE(weak)
+AST_GCC_ATTRIBUTE(weak, , "")
AC_MSG_CHECKING(for -ffunction-sections support)
saved_CFLAGS="${CFLAGS}"