|  |  | 
|  | 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]) | 
|  |  |