AC_DEFUN(DC_DO_WIN32, [
AC_CHECK_HEADERS(windows.h windowsx.h winsock2.h)
AC_CHECK_LIB(wsock32, main, [
AC_DEFINE(HAVE_LIBWSOCK32, [], [Have libwsock32])
LIBS="${LIBS} -lwsock32"
])
])
AC_DEFUN(DC_DO_NETSET, [
AC_SEARCH_LIBS(socket, socket nsl ws2_32 wsock32, AC_DEFINE(HAVE_SOCKET, [], [Have socket()]))
AC_SEARCH_LIBS(gethostbyname, nsl ws2_32 wsock32, AC_DEFINE(HAVE_GETHOSTBYNAME, [], [Have gethostbyname()]))
AC_SEARCH_LIBS(inet_aton, xnet ws2_32 wsock32, AC_DEFINE(HAVE_INET_ATON, [], [Have inet_aton()]), AC_SEARCH_LIBS(inet_addr, nsl ws2_32 wsock32, AC_DEFINE(HAVE_INET_ADDR, [], [Have inet_addr()])))
])
AC_DEFUN(DC_DO_TYPE, [
if test -z "$ac_cv_sizeof_long"; then
AC_C_INLINE
AC_CHECK_SIZEOF(long long, 8)
AC_CHECK_SIZEOF(long, 4)
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(short, 2)
fi
FOUND=0
for dc_cv_loop in \$ac_cv_sizeof_long_long \$ac_cv_sizeof_int \$ac_cv_sizeof_long \$ac_cv_sizeof_short; do
dc_cv_size=`eval echo $dc_cv_loop`
dc_cv_name=`echo $dc_cv_loop | sed s/\\\$ac_cv_sizeof_//`
if test "$dc_cv_size" = "$3"; then
if test "$dc_cv_name" = "int"; then
AC_CHECK_TYPE($1, $2 int)
fi
if test "$dc_cv_name" = "long"; then
AC_CHECK_TYPE($1, $2 long)
fi
if test "$dc_cv_name" = "long_long"; then
AC_CHECK_TYPE($1, $2 long long)
fi
if test "$dc_cv_name" = "short"; then
AC_CHECK_TYPE($1, $2 short)
fi
FOUND=1
break
fi
done
])
dnl Usage:
dnl DC_SETLDRUNPATH(path)
AC_DEFUN(DC_SETLDRUNPATH, [
AC_SUBST(LDRUNPATH)
OLD_LDFLAGS="$LDFLAGS"
for testldflags in "-Wl,-rpath -Wl,$1" "-Wl,-R -Wl,$1"; do
LDFLAGS="$OLD_LDFLAGS $testldflags"
AC_TRY_LINK([#include <stdio.h>],
[ return(0); ], [ LDRUNPATH="$LDRUNPATH $testldflags"; break ]);
done
LDFLAGS="$OLD_LDFLAGS"
])
dnl Usage:
dnl DC_TEST_SHOBJFLAGS(shobjflags, shobjldflags, action-if-not-found)
dnl
AC_DEFUN(DC_TEST_SHOBJFLAGS, [
AC_SUBST(SHOBJFLAGS)
AC_SUBST(SHOBJLDFLAGS)
OLD_LDFLAGS="$LDFLAGS"
SHOBJFLAGS=""
LDFLAGS="$OLD_LDFLAGS $1 $2"
AC_TRY_LINK([#include <stdio.h>
int unrestst(void);], [ printf("okay\n"); unrestst(); return(0); ], [ SHOBJFLAGS="$1"; SHOBJLDFLAGS="$2" ], [
LDFLAGS="$OLD_LDFLAGS"
$3
])
LDFLAGS="$OLD_LDFLAGS"
])
AC_DEFUN(DC_GET_SHOBJFLAGS, [
AC_SUBST(SHOBJFLAGS)
AC_SUBST(SHOBJLDFLAGS)
AC_MSG_CHECKING(how to create shared objects)
if test -z "$SHOBJFLAGS" -a -z "$SHOBJLDFLAGS"; then
DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic], [
DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared], [
DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -mimpure-text], [
DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -mimpure-text], [
DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -Wl,-G,-z,textoff], [
DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -Wl,-G,-z,textoff], [
DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -dynamiclib -flat_namespace -undefined suppress -bind_at_load], [
DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress -bind_at_load], [
DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-Wl,-dynamiclib -Wl,-flat_namespace -Wl,-undefined,suppress -Wl,-bind_at_load], [
DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress], [
DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib], [
AC_MSG_RESULT(cant)
AC_MSG_ERROR([We are unable to make shared objects.])
])
])
])
])
])
])
])
])
])
])
])
fi
AC_MSG_RESULT($SHOBJLDFLAGS $SHOBJFLAGS)
DC_SYNC_SHLIBOBJS
])
AC_DEFUN(DC_SYNC_SHLIBOBJS, [
AC_SUBST(SHLIBOBJS)
SHLIBOBJS=""
for obj in $LIB@&t@OBJS; do
SHLIBOBJS="$SHLIBOBJS `echo $obj | sed 's/\.o$/_shr.o/g'`"
done
])
AC_DEFUN(DC_CHK_OS_INFO, [
AC_CANONICAL_HOST
AC_SUBST(SHOBJEXT)
AC_SUBST(AREXT)
AC_SUBST(SHOBJFLAGS)
AC_SUBST(SHOBJLDFLAGS)
AC_MSG_CHECKING(host operating system)
AC_MSG_RESULT($host_os)
SHOBJEXT="so"
AREXT="a"
case $host_os in
darwin*)
SHOBJEXT="dylib"
;;
hpux*)
SHOBJEXT="sl"
;;
mingw32msvc*)
SHOBJEXT="dll"
SHOBJFLAGS="-mno-cygwin -mms-bitfields -DPIC"
SHOBJLDFLAGS='-shared -Wl,--dll -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a'
;;
esac
])
syntax highlighted by Code2HTML, v. 0.9.1