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