48 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
 | 
						|
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])
 | 
						|
 |