diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-06-16 16:34:03 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-06-16 16:34:03 +0000 |
commit | 017607da4b91079429239a9429ed0dc00fc55512 (patch) | |
tree | 6d30974808414b16e166ce22f5e2ca911e697f44 | |
parent | 430ad26a152ad26f600fa36649441ee8be3ab64a (diff) |
Merged revisions 200985 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
........
r200985 | kpfleming | 2009-06-16 11:32:36 -0500 (Tue, 16 Jun 2009) | 7 lines
Fix problems with new compiler attribute checking in configure script.
The last changes to ast_gcc_attribute.m4 caused some problems checking for
various attributes, because the scope of the symbol the attribute is applied
to can be important; this patch allows the scope to be specified for the check.
........
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@200986 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | autoconf/ast_gcc_attribute.m4 | 13 | ||||
-rwxr-xr-x | configure | 77 | ||||
-rw-r--r-- | configure.ac | 2 |
3 files changed, 74 insertions, 18 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.]), @@ -17398,13 +17398,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 () { @@ -17455,7 +17462,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 () { @@ -17512,13 +17519,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 () { @@ -17569,7 +17583,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 () { @@ -17626,13 +17640,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 () { @@ -17683,7 +17704,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 () { @@ -17740,13 +17761,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 () { @@ -17797,7 +17825,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 () { @@ -17854,13 +17882,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 () { @@ -17911,7 +17946,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 () { @@ -17968,13 +18003,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 () { @@ -18025,7 +18067,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 () { @@ -18080,6 +18122,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 @@ -18088,7 +18137,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 () { @@ -18139,7 +18188,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 ce3f23ea8..f1801231b 100644 --- a/configure.ac +++ b/configure.ac @@ -484,7 +484,7 @@ AST_GCC_ATTRIBUTE(const) AST_GCC_ATTRIBUTE(unused) AST_GCC_ATTRIBUTE(always_inline) AST_GCC_ATTRIBUTE(deprecated) -AST_GCC_ATTRIBUTE(weak) +AST_GCC_ATTRIBUTE(weak, , "") AC_MSG_CHECKING(for -ffunction-sections support) saved_CFLAGS="${CFLAGS}" |