Fix crashes on other platforms caused by interference from Darwin weak symbol support.
[asterisk/asterisk.git] / configure.ac
index f84b92d..e239e8a 100644 (file)
@@ -898,9 +898,37 @@ AST_GCC_ATTRIBUTE(always_inline)
 AST_GCC_ATTRIBUTE(deprecated)
 AST_GCC_ATTRIBUTE(sentinel)
 AST_GCC_ATTRIBUTE(warn_unused_result)
-AST_GCC_ATTRIBUTE(weak_import, [], [], PBX_WEAKREF)
-AST_GCC_ATTRIBUTE(weak, [], [], PBX_WEAKREF)
-AST_GCC_ATTRIBUTE(weakref, [weakref("foo")], static, PBX_WEAKREF)
+
+# Support weak symbols on a platform specific basis.  The Mac OS X
+# (Darwin) support must be isolated from the other platforms because
+# it has caused other platforms to fail.
+#
+case "${OSARCH}" in
+       darwin*)
+       # Allow weak symbol support on Darwin platforms only because there
+       # is active community support for it.
+       # However, Darwin seems to break weak symbols for each new version.
+       #
+       AST_GCC_ATTRIBUTE(weak_import, [], [], PBX_WEAKREF)
+
+       # Several other platforms including Linux have GCC versions that
+       # define the weak attribute.  However, this attribute is only
+       # setup for use in the code by Darwin.
+       AST_GCC_ATTRIBUTE(weak, [], [], PBX_WEAKREF)
+       ;;
+       linux-gnu)
+       # Primarily support weak symbols on Linux platforms.
+       #
+       AST_GCC_ATTRIBUTE(weakref, [weakref("foo")], static, PBX_WEAKREF)
+       ;;
+       *)
+       # Allow weak symbols on other platforms.  However, any problems
+       # with this feature on other platforms must be fixed by the
+       # community.
+       #
+       AST_GCC_ATTRIBUTE(weakref, [weakref("foo")], static, PBX_WEAKREF)
+       ;;
+esac
 
 AC_MSG_CHECKING(for -ffunction-sections support)
 saved_CFLAGS="${CFLAGS}"