1*48fb7bfaSmrg 2*48fb7bfaSmrgdnl Check if the target supports weak. 3*48fb7bfaSmrgAC_DEFUN([GCC_CHECK_ATTRIBUTE_WEAK], [ 4*48fb7bfaSmrg AC_CACHE_CHECK([whether the target supports weak], 5*48fb7bfaSmrg ac_cv_have_attribute_weak, [ 6*48fb7bfaSmrg weakref_m4_saved_CFLAGS="$CFLAGS" 7*48fb7bfaSmrg CFLAGS="$CFLAGS -Werror" 8*48fb7bfaSmrg AC_TRY_COMPILE([void __attribute__((weak)) foo(void) { }], 9*48fb7bfaSmrg [], ac_cv_have_attribute_weak=yes, 10*48fb7bfaSmrg ac_cv_have_attribute_weak=no) 11*48fb7bfaSmrg CFLAGS="$weakref_m4_saved_CFLAGS"]) 12*48fb7bfaSmrg if test x"$ac_cv_have_attribute_weak" = xyes; then 13*48fb7bfaSmrg AC_DEFINE(HAVE_ATTRIBUTE_WEAK, 1, 14*48fb7bfaSmrg [Define to 1 if the target supports __attribute__((weak)).]) 15*48fb7bfaSmrg fi]) 16*48fb7bfaSmrg 17*48fb7bfaSmrgdnl Check whether weak refs work like the ELF ones. 18*48fb7bfaSmrgdnl This means that the weak reference works without having to satify 19*48fb7bfaSmrgdnl linkage for the item. 20*48fb7bfaSmrgdnl There are targets (at least Darwin) where we have fully functional 21*48fb7bfaSmrgdnl weakrefs at runtime, but must supply the referenced item at link time. 22*48fb7bfaSmrgAC_DEFUN([GCC_CHECK_ELF_STYLE_WEAKREF], [ 23*48fb7bfaSmrg AC_CACHE_CHECK([whether weak refs work like ELF], 24*48fb7bfaSmrg ac_cv_have_elf_style_weakref, [ 25*48fb7bfaSmrg weakref_m4_saved_CFLAGS="$CFLAGS" 26*48fb7bfaSmrg case "${host}" in 27*48fb7bfaSmrg *-apple-darwin*) CFLAGS="$CFLAGS -Wl,-undefined,dynamic_lookup" ;; 28*48fb7bfaSmrg *) ;; 29*48fb7bfaSmrg esac 30*48fb7bfaSmrg AC_RUN_IFELSE([AC_LANG_SOURCE([[ 31*48fb7bfaSmrgextern void fNotToBeFound(void) __attribute__((weak)); 32*48fb7bfaSmrgint main () 33*48fb7bfaSmrg{ 34*48fb7bfaSmrg if (fNotToBeFound) 35*48fb7bfaSmrg return 1; 36*48fb7bfaSmrg else 37*48fb7bfaSmrg return 0; 38*48fb7bfaSmrg} 39*48fb7bfaSmrg]])], ac_cv_have_elf_style_weakref=yes, ac_cv_have_elf_style_weakref=no, [ 40*48fb7bfaSmrgcase "${host}" in 41*48fb7bfaSmrg *-apple-darwin[[89]]*) ac_cv_have_elf_style_weakref=no ;; 42*48fb7bfaSmrg *) ac_cv_have_elf_style_weakref=yes;; 43*48fb7bfaSmrgesac])CFLAGS="$weakref_m4_saved_CFLAGS"]) 44*48fb7bfaSmrgif test x"$ac_cv_have_elf_style_weakref" = xyes; then 45*48fb7bfaSmrg AC_DEFINE(HAVE_ELF_STYLE_WEAKREF, 1, [Define to 1 if target has a weakref that works like the ELF one.]) 46*48fb7bfaSmrgfi]) 47*48fb7bfaSmrg 48