testzebra: pragma weak: detect systems with weak alias and provide alternative

LLVM clang does not support #pragma weak (bug 3679) on OS X. There are
other systems where the #pragma weak has varying syntax.

Added m4 file from the autoconf archives:
http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html

Fix up zebra/*_null.c files to use #pragma weak alias or stub functions
if not available. It's incomplete in that the different format #pragma
enable easier fixes on need.

Tested on 64bit OS X 10.7, FreeBSD 9.0 amd64 & i386 (32bit) using
gcc & clang. Tested on linux 64bit.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
diff --git a/configure.ac b/configure.ac
index 405693c..c51a0d3 100755
--- a/configure.ac
+++ b/configure.ac
@@ -1540,6 +1540,22 @@
 fi
 AC_SUBST(LIBCAP)
 
+dnl ---------------------------------------------------------------------------
+dnl http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html
+dnl Check for and set one of the following = 1
+dnl   HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
+dnl   HAVE_SYS_WEAK_ALIAS_PRAGMA
+dnl   HAVE_SYS_WEAK_ALIAS_HPSECONDARY
+dnl   HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE
+dnl If any scheme is found, set
+dnl   HAVE_SYS_WEAK_ALIAS=1
+dnl The following variable is set to text value
+dnl   WEAK_ALIAS = "attribute" || "pragma" || "hpsecondary" || "criduplicate" || "no"
+dnl If weak alias can cross object file boundaries
+dnl   WEAK_ALIAS_CROSSFILE = "yes" || "no"
+dnl ---------------------------------------------------------------------------
+AX_SYS_WEAK_ALIAS
+
 dnl ---------------------------
 dnl check for glibc 'backtrace'
 dnl ---------------------------