247 lines (220 with data), 7.3 kB
dnl $id $
dnl Shattered World Support
dnl Process this file with autoconf to produce a configure script.
AC_REVISION($Revision: 1.10 $)dnl
AC_INIT()
AC_CONFIG_HEADER(config.h)
AC_CANONICAL_SYSTEM
AC_PROG_GCC_TRADITIONAL
AC_PROG_YACC
dnl first of all; check for gmake
AC_PATH_PROG(ac_cv_gmake, gmake, no, $PATH:/bin:/usr/bin:/usr/local/bin)
if test $ac_cv_gmake = no ; then
MAKE=make
AC_SUBST(MAKE)
AC_MSG_WARN([gmake not found, will try to use: make])
else
MAKE=gmake
AC_SUBST(MAKE)
fi
dnl work out who the cpu, vendor and OS are
AC_DEFINE_UNQUOTED(TARGET_CPU, "$target_cpu")
AC_DEFINE_UNQUOTED(TARGET_VENDOR, "$target_vendor")
AC_DEFINE_UNQUOTED(TARGET_OS, "$target_os")
AC_DEFINE_UNQUOTED(CPU_VENDOR_OS, "$target")
dnl System properties
STATIC=
case "$target_os" in
*bsd*)
AC_DEFINE(BSD)
AC_DEFINE(USE_BPF)
TARGET_OS=Bsd
AC_SUBST(TARGET_OS)
;;
*mingw*)
AC_DEFINE(LINUX)
AC_DEFINE(USE_IFALIAS)
AC_DEFINE(USE_SOCKET)
LIBS="$LIBS -lwsock32"
dnl SHOULD DO A BETTER TEST FOR THIS !!
AC_DEFINE(BROKEN_CMSG_FIELDS)
TARGET_OS=Win32
AC_SUBST(TARGET_OS)
STATIC=static
;;
*linux*)
AC_DEFINE(LINUX)
AC_DEFINE(USE_IFALIAS)
AC_DEFINE(USE_SOCKET)
dnl SHOULD DO A BETTER TEST FOR THIS !!
AC_DEFINE(BROKEN_CMSG_FIELDS)
TARGET_OS=Linux
AC_SUBST(TARGET_OS)
;;
*solaris*)
AC_DEFINE(SOLARIS)
AC_DEFINE(USE_IFALIAS)
AC_DEFINE(USE_DLPI)
TARGET_OS=Sunos
AC_SUBST(TARGET_OS)
;;
*cygwin*)
TARGET_OS=Cygwin
AC_SUBST(TARGET_OS)
;;
*)
AC_MSG_ERROR("Unable to determine if separate interfaces required for alias")
;;
esac
dnl static build preferable?
AC_SUBST(STATIC)
AC_PATH_PROG(ac_cv_route, route, no, $PATH:/sbin:/usr/sbin:/usr/local/sbin)
if test $ac_cv_route = no ; then
AC_MSG_ERROR("route not found")
else
AC_DEFINE_UNQUOTED(ROUTE, "$ac_cv_route")
fi
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(malloc.h sys/ioctl.h unistd.h varargs.h strings.h fcntl.h)
AC_CHECK_HEADERS(sys/fcntl.h net/if_packet.h net/if_arp.h net/bpf.h)
AC_CHECK_HEADERS(netinet/if_ether.h sys/dlpi.h)
AC_CHECK_HEADERS(crypt.h fcntl.h zlib.h winsock.h ltdl.h)
dnl Checks for libraries.
AC_CHECK_LIB(nsl, t_open)
AC_CHECK_LIB(socket, socket)
dnl AC_CHECK_LIB(wsock32, socket)
AC_CHECK_LIB(crypt, crypt)
AC_CHECK_LIB(dl, dlopen)
AC_CHECK_LIB(ltdl, lt_dlopen)
AC_CHECK_LIB(z, compress)
dnl Check for functions in header files
AC_CACHE_CHECK(for stdlib_malloc{}, ac_cv_have_stdlib_malloc,
AC_EGREP_HEADER(malloc, stdlib.h, ac_cv_have_stdlib_malloc=yes, ac_cv_have_stdlib_malloc=no))
if test $ac_cv_have_stdlib_malloc = yes ; then
AC_DEFINE(STDLIB_MALLOC)
fi
dnl Check if we have sys_errlist declared
AC_CACHE_CHECK(for sys_errlist{}, ac_cv_have_sys_errlist,
AC_EGREP_HEADER(sys_errlist, stdio.h, ac_cv_have_sys_errlist=yes, ac_cv_have_sys_errlist=no))
if test $ac_cv_have_sys_errlist = yes ; then
AC_DEFINE(HAVE_SYS_ERRLIST)
fi
dnl Check for srandom()/random() in stdlib.h
AC_CACHE_CHECK(for stdlib_srandom{}, ac_cv_have_stdlib_srandom,
AC_EGREP_HEADER(srandom, stdlib.h, ac_cv_have_stdlib_srandom=yes, ac_cv_have_stdlib_srandom=no))
if test $ac_cv_have_stdlib_srandom = yes ; then
AC_DEFINE(HAVE_SRANDOM)
fi
dnl Check for strcspn in string.h
AC_CACHE_CHECK(for string_strcspn{}, ac_cv_have_string_strcspn,
AC_EGREP_HEADER(strcspn, string.h, ac_cv_have_string_strcspn=yes, ac_cv_have_string_strcspn=no))
if test $ac_cv_have_string_strcspn = yes ; then
AC_DEFINE(HAVE_STRING_STRCSPN)
fi
dnl Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_T_CHECK(int8_t, sys/types.h, SYS_TYPES_H) dnl
AC_TYPE_T_CHECK(u_int8_t, sys/types.h, SYS_TYPES_H) dnl
AC_TYPE_T_CHECK(int16_t, sys/types.h, SYS_TYPES_H) dnl
AC_TYPE_T_CHECK(u_int16_t, sys/types.h, SYS_TYPES_H) dnl
AC_TYPE_T_CHECK(int32_t, sys/types.h, SYS_TYPES_H) dnl
AC_TYPE_T_CHECK(u_int32_t, sys/types.h, SYS_TYPES_H) dnl
AC_TYPE_T_CHECK(int64_t, sys/types.h, SYS_TYPES_H) dnl
AC_TYPE_T_CHECK(u_int64_t, sys/types.h, SYS_TYPES_H) dnl
AC_TYPE_T_CHECK(caddr_t, sys/types.h, SYS_TYPES_H) dnl
dnl Steven's suggests you check here on SunOS 4.1.x
AC_TYPE_T_CHECK(int8_t, sys/bitypes.h, SYS_BITYPES_H) dnl
AC_TYPE_BASE(BIT8, '1') dnl
AC_TYPE_BASE(BIT16, '2') dnl
AC_TYPE_BASE(BIT32, '4') dnl
AC_TYPE_BASE(BIT64, '8') dnl
dnl structures
AC_STRUCT_CHECK(sockaddr, sys/socket.h, SYS_SOCKET_H)
AC_STRUCT_CHECK(in_addr, netinet/in.h, NETINET_IN_H)
AC_STRUCT_CHECK(sockaddr_in, netinet/in.h, NETINET_IN_H)
AC_STRUCT_CHECK(arpreq, net/if_arp.h, NET_IF_ARP_H)
AC_STRUCT_CHECK(ether_header, net/ethernet.h, NET_ETHERNET_H)
AC_STRUCT_CHECK(ether_header, sys/ethernet.h, SYS_ETHERNET_H)
AC_STRUCT_CHECK(ethhdr, net/ethernet.h, NET_ETHERNET_H)
dnl Solaris 2.6 lies ... it doesn't really support sockaddr_dl and if_ether is
dnl broken
case "$target_os" in
*solaris*)
;;
*)
AC_STRUCT_CHECK(sockaddr_dl, net/if_dl.h, NET_IF_DL_H)
AC_STRUCT_CHECK(sockaddr_dl, net/if_dl.h, HAVE_sockaddr_dl)
AC_STRUCT_CHECK(ether_header, netinet/if_ether.h, NETINET_IF_ETHER_H)
;;
esac
dnl defines
AC_DEFINE_CHECK(ETHER_ADDR_LEN, net/ethernet.h, NET_ETHERNET_H)
AC_DEFINE_CHECK(ETHERADDRL, sys/ethernet.h, SYS_ETHERNET_H)
AC_DEFINE_CHECK(SIOCGIFCONF, sys/sockio.h, SYS_SOCKIO_H)
AC_DEFINE_CHECK(SIOCGIFHWADDR, sys/sockio.h, SYS_SOCKIO_H)
AC_DEFINE_CHECK(SIOCGIFHWADDR, sys/socketio.h, SYS_SOCKETIO_H)
AC_DEFINE_CHECK(SIOCGIFHWADDR, linux/sockios.h, LINUX_SOCKIOS_H)
AC_DEFINE_CHECK(SIOCGARP, sys/sockio.h, SYS_SOCKIO_H)
AC_DEFINE_CHECK(DLIOCRAW, sys/dlpi.h, SYS_DLPI_H)
dnl fields in structures
dnl Check if sockaddr{} has sa_len member.
dnl
AC_CACHE_CHECK(if sa_len_in_sockaddr{}, ac_cv_sockaddr_has_sa_len,
AC_TRY_COMPILE([
# include <sys/types.h>
# include <sys/socket.h>],
[unsigned int i = sizeof(((struct sockaddr *)0)->sa_len)],
ac_cv_sockaddr_has_sa_len=yes,
ac_cv_sockaddr_has_sa_len=no))
if test $ac_cv_sockaddr_has_sa_len = yes ; then
AC_DEFINE(SA_LEN_IN_SOCKADDR)
AC_DEFINE(NEED_SYS_TYPES_H)
AC_DEFINE(NEED_SYS_SOCKET_H)
fi
dnl Check if ether_header{} uses ether_addr{}.
dnl
AC_CACHE_CHECK(if ether_header_uses_ether_addr{}, ac_cv_ether_header_uses_ether_addr,
AC_TRY_COMPILE([
# include <sys/types.h>
# include <sys/ethernet.h>],
[struct ether_addr a; struct ether_header b; a = b.ether_dhost;],
ac_cv_ether_header_uses_ether_addr=yes,
ac_cv_ether_header_uses_ether_addr=no))
if test $ac_cv_ether_header_uses_ether_addr = yes ; then
AC_DEFINE(ETHER_HEADER_USES_ETHER_ADDR)
fi
dnl CPU_SUP (kernel statistics support) stuff
AC_CHECK_HEADER(kstat.h, ac_cv_kstat=yes, ac_cv_kstat=no)
if test $ac_cv_kstat = yes ; then
CPU_SUP=true
AC_SUBST(CPU_SUP)
else
CPU_SUP=false
AC_SUBST(CPU_SUP)
fi
dnl use pthreads? Processes is better for SMP machines.
AC_ARG_WITH(gc, --with-gc=yes/no include Boehms GC for garbage collection (default: no), ac_cv_gc=yes, ac_cv_gc=no)
if test $ac_cv_gc = yes ; then
AC_DEFINE(USE_GC)
AC_MSG_RESULT([Using Boehms GC])
MALLOC=GCmalloc
AC_SUBST(MALLOC)
GCLIB=-lgc
AC_SUBST(GCLIB)
else
AC_MSG_RESULT([Ref counting GC only])
MALLOC=NOmalloc
AC_SUBST(MALLOC)
fi
dnl Checks for library functions.
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(socket)
AC_OUTPUT(Makefile swlpc.mk)
case $target_os in
*cygwin*)
sed -e 's/\/\/\([[a-zA-Z]]\)/\1:/' < swlpc.mk > swlpc.mk.tmp
mv swlpc.mk.tmp swlpc.mk
sed -e 's/\/\/\([[a-zA-Z]]\)/\1:/' < makefile > makefile.tmp
mv makefile.tmp makefile
;;
esac