[go: up one dir, main page]

Menu

[897c37]: / configure.in  Maximize  Restore  History

Download this file

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