| Index: config/weakref.m4
|
| diff --git a/config/weakref.m4 b/config/weakref.m4
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ecb85672805882b330cac43e0fc12e7fe96aeec9
|
| --- /dev/null
|
| +++ b/config/weakref.m4
|
| @@ -0,0 +1,47 @@
|
| +
|
| +dnl Check if the target supports weak.
|
| +AC_DEFUN([GCC_CHECK_ATTRIBUTE_WEAK], [
|
| + AC_CACHE_CHECK([whether the target supports weak],
|
| + ac_cv_have_attribute_weak, [
|
| + weakref_m4_saved_CFLAGS="$CFLAGS"
|
| + CFLAGS="$CFLAGS -Werror"
|
| + AC_TRY_COMPILE([void __attribute__((weak)) foo(void) { }],
|
| + [], ac_cv_have_attribute_weak=yes,
|
| + ac_cv_have_attribute_weak=no)
|
| + CFLAGS="$weakref_m4_saved_CFLAGS"])
|
| + if test x"$ac_cv_have_attribute_weak" = xyes; then
|
| + AC_DEFINE(HAVE_ATTRIBUTE_WEAK, 1,
|
| + [Define to 1 if the target supports __attribute__((weak)).])
|
| + fi])
|
| +
|
| +dnl Check whether weak refs work like the ELF ones.
|
| +dnl This means that the weak reference works without having to satify
|
| +dnl linkage for the item.
|
| +dnl There are targets (at least Darwin) where we have fully functional
|
| +dnl weakrefs at runtime, but must supply the referenced item at link time.
|
| +AC_DEFUN([GCC_CHECK_ELF_STYLE_WEAKREF], [
|
| + AC_CACHE_CHECK([whether weak refs work like ELF],
|
| + ac_cv_have_elf_style_weakref, [
|
| + weakref_m4_saved_CFLAGS="$CFLAGS"
|
| + case "${host}" in
|
| + *-apple-darwin*) CFLAGS="$CFLAGS -Wl,-undefined,dynamic_lookup" ;;
|
| + *) ;;
|
| + esac
|
| + AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
| +extern void fNotToBeFound(void) __attribute__((weak));
|
| +int main ()
|
| +{
|
| + if (fNotToBeFound)
|
| + return 1;
|
| + else
|
| + return 0;
|
| +}
|
| +]])], ac_cv_have_elf_style_weakref=yes, ac_cv_have_elf_style_weakref=no, [
|
| +case "${host}" in
|
| + *-apple-darwin[[89]]*) ac_cv_have_elf_style_weakref=no ;;
|
| + *) ac_cv_have_elf_style_weakref=yes;;
|
| +esac])CFLAGS="$weakref_m4_saved_CFLAGS"])
|
| +if test x"$ac_cv_have_elf_style_weakref" = xyes; then
|
| + AC_DEFINE(HAVE_ELF_STYLE_WEAKREF, 1, [Define to 1 if target has a weakref that works like the ELF one.])
|
| +fi])
|
| +
|
|
|