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