Blame config/weakref.m4

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