# # configure.in.pre # # Author: Pekka Riikonen # # Copyright (C) 2000 - 2002 Pekka Riikonen # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # AC_INIT(includes/silcversion.h) # # Put here any platform specific stuff # AC_CANONICAL_SYSTEM case "$target" in *-*-*bsd*) check_threads=false ;; *) check_threads=true ;; esac # ./prepare script will automatically put the correct version. Do not edit! AM_INIT_AUTOMAKE(SILC_PACKAGE, SILC_VERSION) AC_PREREQ(2.52) AM_CONFIG_HEADER(includes/silcdefs.h) AC_PROG_CC AC_C_INLINE AC_C_CONST AC_PROG_LN_S AC_SUBST(LN_S) # Distribution definition. ./prepare will automatically add here a correct # value. Do not edit! silc_dist=SILC_PACKAGE SILC_DIST_SUBDIRS="SILC_DISTRIBUTION_SUBDIRS" AC_DEFINE(SILC_DIST_DEFINE) # XXX # Compiler flags if test "$GCC"; then CFLAGS="-Wall -finline-functions $CFLAGS" fi # Program checking AC_PROG_INSTALL AC_PROG_RANLIB AC_PROG_MAKE_SET AC_PROG_LIBTOOL AC_PATH_PROG(sedpath, sed) # Header checking AC_HEADER_STDC AC_HEADER_TIME AC_HEADER_STAT # More header checking AC_CHECK_HEADERS(unistd.h string.h getopt.h errno.h fcntl.h assert.h) AC_CHECK_HEADERS(sys/types.h sys/stat.h sys/time.h stddef.h) AC_CHECK_HEADERS(netinet/in.h netinet/tcp.h xti.h netdb.h) AC_CHECK_HEADERS(pwd.h grp.h termcap.h paths.h) AC_CHECK_HEADERS(ncurses.h signal.h ctype.h utime.h iconv.h) AC_CHECK_HEADERS(arpa/inet.h sys/mman.h limits.h termios.h locale.h langinfo.h) # Data type checking AC_TYPE_SIGNAL AC_TYPE_SIZE_T AC_TYPE_MODE_T AC_TYPE_UID_T AC_TYPE_PID_T AC_CHECK_SIZEOF(long long, 0) AC_DEFINE_UNQUOTED(SILC_SIZEOF_LONG_LONG, $ac_cv_sizeof_long_long) AC_CHECK_SIZEOF(long, 0) AC_DEFINE_UNQUOTED(SILC_SIZEOF_LONG, $ac_cv_sizeof_long) AC_CHECK_SIZEOF(int, 0) AC_DEFINE_UNQUOTED(SILC_SIZEOF_INT, $ac_cv_sizeof_int) AC_CHECK_SIZEOF(short, 0) AC_DEFINE_UNQUOTED(SILC_SIZEOF_SHORT, $ac_cv_sizeof_short) AC_CHECK_SIZEOF(char, 0) AC_DEFINE_UNQUOTED(SILC_SIZEOF_CHAR, $ac_cv_sizeof_char) AC_CHECK_SIZEOF(void *, 0) AC_DEFINE_UNQUOTED(SILC_SIZEOF_VOID_P, $ac_cv_sizeof_void_p) # Function and library checking AC_CHECK_FUNC(gethostbyname, ac_gethostbyname_found=1,ac_gethostbyname_found=0) if test x$ac_gethostbyname_found = x0; then AC_CHECK_LIB(nsl, gethostbyname, LIBS="$LIBS -lnsl") AC_CHECK_FUNC(res_gethostbyname, ac_res_ghbn_found=1, ac_res_ghbn_found=0) if test x$ac_res_ghbn_found = x0; then AC_CHECK_LIB(resolv, res_gethostbyname, LIBS="$LIBS -lresolv") fi fi AC_CHECK_FUNC(socket, ac_socket_found=1, ac_socket_found=0) if test x$ac_socket_found = x0; then AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket") fi AC_CHECK_FUNCS(gethostname gethostbyaddr getservbyname getservbyport) AC_CHECK_FUNCS(select listen bind shutdown close connect) AC_CHECK_FUNCS(fcntl setsockopt time) AC_CHECK_FUNCS(chmod stat fstat getenv putenv strerror ctime gettimeofday) AC_CHECK_FUNCS(getpid getgid getsid getpgid getpgrp getuid) AC_CHECK_FUNCS(setgroups initgroups) AC_CHECK_FUNCS(strchr strstr strcpy strncpy memcpy memset memmove utime iconv) AC_CHECK_FUNCS(pthread_create nl_langinfo) # SIM support checking # XXX These needs to be changed as more supported platforms appear. # XXX This probably needs to be made platform dependant check. sim_support=false AC_CHECKING(for SIM support) AC_CHECK_HEADERS(dlfcn.h, AC_CHECK_LIB(dl, dlopen, AC_DEFINE(SILC_SIM) sim_support=true LIBS="$LIBS -ldl", [AC_CHECK_LIB(c, dlopen, AC_DEFINE(SILC_SIM) sim_support=true ])) ) AM_CONDITIONAL(SILC_SIM, test x$sim_support = xtrue) if test x$sim_support = xtrue; then AC_MSG_RESULT(enabled SIM support) else AC_MSG_RESULT(no SIM support found) fi # # lib/contrib conditionals # AC_CHECK_HEADER(regex.h, have_regex=1, have_regex=0) AM_CONDITIONAL(HAVE_REGEX, test x$have_regex = x1) AC_CHECK_FUNC(getopt_long, have_getopt_long=1, have_getopt_long=0) AM_CONDITIONAL(HAVE_GETOPT_LONG, test x$have_getopt_long = x1) # # Installation # # Default installation destination AC_PREFIX_DEFAULT(/usr/local/silc) if test "x$prefix" != xNONE; then silc_prefix="$prefix" else silc_prefix="$ac_default_prefix" fi # etc directory if test "x$sysconfdir" != 'x${prefix}/etc'; then ETCDIR="$sysconfdir" else ETCDIR="$silc_prefix/etc" fi AC_ARG_WITH(etcdir, [ --with-etcdir[=PATH] Directory for system files [/etc/silc]], [ case "$withval" in no) ;; yes) ETCDIR="$withval" ;; *) ETCDIR="$withval" ;; esac ], ) AC_SUBST(ETCDIR) AC_DEFINE_UNQUOTED(SILC_ETCDIR, "$ETCDIR") # help directory HELPDIR="$silc_prefix/help" AC_ARG_WITH(helpdir, [ --with-helpdir[=PATH] Directory for SILC help files [PREFIX/help]], [ case "$withval" in no) ;; yes) HELPDIR="$withval" ;; *) HELPDIR="$withval" ;; esac ], ) AC_SUBST(HELPDIR) AC_DEFINE_UNQUOTED(SILC_HELPDIR, "$HELPDIR") # doc directory DOCDIR="$silc_prefix/doc" AC_ARG_WITH(docdir, [ --with-docdir[=PATH] Directory for SILC documentation [PREFIX/doc]], [ case "$withval" in no) ;; yes) DOCDIR="$withval" ;; *) DOCDIR="$withval" ;; esac ], ) AC_SUBST(DOCDIR) AC_DEFINE_UNQUOTED(SILC_DOCDIR, "$DOCDIR") # SIM modules directory MODULESDIR="$silc_prefix/modules" AC_ARG_WITH(simdir, [ --with-simdir[=PATH] Directory for SIM modules [PREFIX/modules]], [ case "$withval" in no) ;; yes) MODULESDIR="$withval" ;; *) MODULESDIR="$withval" ;; esac ], ) AC_SUBST(MODULESDIR) AC_DEFINE_UNQUOTED(SILC_MODULESDIR, "$MODULESDIR") # Logs directory LOGSDIR="$silc_prefix/logs" AC_ARG_WITH(logsdir, [ --with-logsdir[=PATH] Directory for Server logs [PREFIX/logs]], [ case "$withval" in no) ;; yes) LOGSDIR="$withval" ;; *) LOGSDIR="$withval" ;; esac ], ) AC_SUBST(LOGSDIR) AC_DEFINE_UNQUOTED(SILC_LOGSDIR, "$LOGSDIR") # SOCKS4 support checking AC_MSG_CHECKING(whether to support SOCKS4) AC_ARG_WITH(socks4, [ --with-socks4[=PATH] Compile with SOCKS4 support], [ case "$withval" in no) AC_MSG_RESULT(no) ;; *) AC_MSG_RESULT(yes) socks=4 if test -d "$withval/include"; then CFLAGS="$CFLAGS -I$withval/include" else CFLAGS="$CFLAGS -I$withval" fi if test -d "$withval/lib"; then withval="-L$withval/lib -lsocks" else withval="-L$withval -lsocks" fi LIBS="$withval $LIBS" AC_TRY_LINK([], [ Rconnect(); ], [], [ AC_MSG_ERROR(Could not find SOCKS4 library.)]) ;; esac ], AC_MSG_RESULT(no) ) # SOCKS5 support checking AC_MSG_CHECKING(whether to support SOCKS5) AC_ARG_WITH(socks5, [ --with-socks5[=PATH] Compile with SOCKS5 support], [ case "$withval" in no) AC_MSG_RESULT(no) ;; *) AC_MSG_RESULT(yes) socks=5 if test -d "$withval/include"; then CFLAGS="$CFLAGS -I$withval/include" else CFLAGS="$CFLAGS -I$withval" fi if test -d "$withval/lib"; then withval="-L$withval/lib -lsocks5" else withval="-L$withval -lsocks5" fi LIBS="$withval $LIBS" AC_TRY_LINK([], [ SOCKSconnect(); ], [], [ AC_MSG_ERROR(Could not find SOCKS5 library.)]) ;; esac ], AC_MSG_RESULT(no) ) if test "x$socks" = "x4"; then AC_DEFINE(SOCKS) CFLAGS="$CFLAGS -Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dbind=Rbind -Daccept=Raccept -Dlisten=Rlisten -Dselect=Rselect" fi if test "x$socks" = "x5"; then AC_DEFINE(SOCKS) AC_DEFINE(SOCKS5) AC_DEFINE(Rconnect, SOCKSconnect) AC_DEFINE(Rgetsockname, SOCKSgetsockname) AC_DEFINE(Rgetpeername, SOCKSgetpeername) AC_DEFINE(Rbind, SOCKSbind) AC_DEFINE(Raccept, SOCKSaccept) AC_DEFINE(Rlisten, SOCKSlisten) AC_DEFINE(Rselect, SOCKSselect) AC_DEFINE(Rrecvfrom, SOCKSrecvfrom) AC_DEFINE(Rsendto, SOCKSsendto) AC_DEFINE(Rrecv, SOCKSrecv) AC_DEFINE(Rsend, SOCKSsend) AC_DEFINE(Rread, SOCKSread) AC_DEFINE(Rwrite, SOCKSwrite) AC_DEFINE(Rrresvport, SOCKSrresvport) AC_DEFINE(Rshutdown, SOCKSshutdown) AC_DEFINE(Rlisten, SOCKSlisten) AC_DEFINE(Rclose, SOCKSclose) AC_DEFINE(Rdup, SOCKSdup) AC_DEFINE(Rdup2, SOCKSdup2) AC_DEFINE(Rfclose, SOCKSfclose) AC_DEFINE(Rgethostbyname, SOCKSgethostbyname) fi # # MP library checking. First check whether user wants to use GMP and use # it if found. If not or not defined then compile the MPI library in the # source tree. # AC_MSG_CHECKING(whether to support GMP) AC_ARG_WITH(gmp, [ --with-gmp[=PATH] Compile with GMP support instead of MPI], [ case "$withval" in no) AC_MSG_RESULT(no) mp_gmp=false ;; *) AC_MSG_RESULT(yes) if test -d "$withval/include"; then CFLAGS="$CFLAGS -I$withval/include" else CFLAGS="$CFLAGS -I$withval" fi if test -d "$withval/lib"; then withval="-L$withval/lib -lgmp" else withval="-L$withval -lgmp" fi LIBS="$withval $LIBS" mp_gmp=false AC_CHECK_LIB(gmp, __gmpz_init, mp_gmp=true AC_DEFINE(SILC_MP_GMP) AC_MSG_RESULT(Using GMP as MP library) ) ;; esac ], AC_MSG_RESULT(no) mp_gmp=false ) AM_CONDITIONAL(SILC_MP_GMP, test x$mp_gmp = xtrue) AM_CONDITIONAL(SILC_MP_NSS_MPI, test x$mp_gmp = xfalse) if test x$mp_gmp = xfalse; then AC_DEFINE(SILC_MP_NSS_MPI) AC_MSG_RESULT(Using NSS MPI as MP library) fi AC_ARG_WITH(silcd-config-file, [ --with-silcd-config-file[=PATH] Use PATH as default configuration file in SILC server [/etc/silc/silcd.conf]], [ AC_DEFINE_UNQUOTED(SILC_SERVER_CONFIG_FILE, "$withval") ]) if test "x$localstatedir" != 'x${prefix}/var'; then PIDFILE="$localstatedir/silcd.pid" else PIDFILE="$silc_prefix/var/silcd.pid" fi AC_ARG_WITH(silcd-pid-file, [ --with-silcd-pid-file[=PATH] Use PATH as default pid file in SILC server [/var/run/silcd.pid]], [ case "$withval" in no) ;; yes) PIDFILE="$withval" ;; *) PIDFILE="$withval" ;; esac ], ) AC_SUBST(PIDFILE) # # Native WIN32 compilation under cygwin # AC_ARG_WITH(win32, [ --with-win32 Compile native WIN32 code (-mno-cygwin)], [ AC_DEFINE(SILC_WIN32) win32_support=true CFLAGS="-mno-cygwin $CFLAGS" LIBS="$LIBS -lwsock32" ]) AM_CONDITIONAL(SILC_WIN32, test x$win32_support = xtrue) # # Native EPOC support (disabled by default) # AM_CONDITIONAL(SILC_EPOC, test xfalse = xtrue) # # Native BeOS support (disabled by default) # AM_CONDITIONAL(SILC_BEOS, test xfalse = xtrue) # # Native OS2 support (disabled by default) # AM_CONDITIONAL(SILC_OS2, test xfalse = xtrue) # # --without-irssi # without_irssi=false AC_ARG_WITH(irssi, [ --without-irssi Compile without Irssi SILC Client], [ without_irssi=true SILC_DIST_SUBDIRS=`echo $SILC_DIST_SUBDIRS | $sedpath -e 's/irssi//'` ]) # # --without-silcd # without_silcd=false AC_ARG_WITH(silcd, [ --without-silcd Compile without SILC Server], [ without_silcd=true SILC_DIST_SUBDIRS=`echo $SILC_DIST_SUBDIRS | $sedpath -e 's/silcd//'` ]) # # IPv6 support # AC_MSG_CHECKING(for IPv6 support) AC_ARG_ENABLE(ipv6, [ --enable-ipv6 Enable IPv6 support], [ case "${enableval}" in yes) want_ipv6=true check_ipv6=false AC_DEFINE(HAVE_IPV6) AC_MSG_RESULT(yes) ;; *) want_ipv6=false check_ipv6=false AC_MSG_RESULT(no) ;; esac ], check_ipv6=true) if test x$check_ipv6 = xtrue; then AC_TRY_COMPILE([#ifdef HAVE_NETINET_TCP_H #include #endif #ifdef HAVE_NETDB_H #include #endif #include #ifdef HAVE_NETDB_IN_H #include #endif], [struct sockaddr_in6 sin6; int family = AF_INET6; ], [AC_DEFINE(HAVE_IPV6) AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)]) fi # # Debug checking # AC_MSG_CHECKING(for enabled debugging) AC_ARG_ENABLE(debug, [ --enable-debug Enable debugging], [ case "${enableval}" in yes) AC_MSG_RESULT(yes) AC_DEFINE(SILC_DEBUG) CFLAGS="-O -g $CFLAGS" ;; *) AC_MSG_RESULT(no) CFLAGS="-O2 -g $CFLAGS" ;; esac ], CFLAGS="-O2 -g $CFLAGS" AC_MSG_RESULT(no)) AC_MSG_CHECKING(for enabled stack tracing) AC_ARG_ENABLE(stack-trace, [ --enable-stack-trace Enable memory stack trace], [ case "${enableval}" in yes) AC_MSG_RESULT(yes) AC_DEFINE(SILC_STACKTRACE) ;; *) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no)) # # Disable all assembler optimizations # AC_ARG_ENABLE(asm, [ --disable-asm Do not use assembler optimizations ], []) # # Threads support # AC_ARG_ENABLE(threads, [ --disable-threads Do not compile with multi-thread support], [ case "${enableval}" in yes) want_threads=true check_threads=true ;; *) want_threads=false check_threads=false ;; esac ]) if test x$check_threads = xtrue; then want_threads=false AC_CHECK_HEADERS(pthread.h, [ AC_DEFINE(SILC_HAVE_PTHREAD) want_threads=true ], [ if test -f /usr/pkg/include/pthread.h ; then AC_DEFINE(SILC_HAVE_PTHREAD) AC_MSG_RESULT(Found pthread.h in /usr/pkg/include/) CFLAGS="$CFLAGS -I/usr/pkg/include" want_threads=true elif test -f /usr/contrib/include/pthread.h ; then AC_DEFINE(SILC_HAVE_PTHREAD) AC_MSG_RESULT(Found pthread.h in /usr/contrib/include/) CFLAGS="$CFLAGS -I/usr/contrib/include" want_threads=true fi ]) fi AM_CONDITIONAL(SILC_THREADS, test x$want_threads = xtrue) if test x$want_threads = xtrue; then TMP_LIBS="$LIBS" LIBS="-lpthread" AC_TRY_LINK([#include ], [pthread_attr_t attr; pthread_attr_init(&attr);], AC_DEFINE(SILC_THREADS), LIBS="-L/usr/pkg/lib -lpthread" AC_TRY_LINK([#include ], [pthread_attr_t attr; pthread_attr_init(&attr);], AC_DEFINE(SILC_THREADS), LIBS="-L/usr/contrib/lib -lpthread" AC_TRY_LINK([#include ], [pthread_attr_t attr; pthread_attr_init(&attr);], AC_DEFINE(SILC_THREADS), LIBS="" ))) CFLAGS="$CFLAGS -D_REENTRANT" case $host in *-aix*) CFLAGS="$CFLAGS -D_THREAD_SAFE" if test x"$GCC" = xyes; then CFLAGS="$CFLAGS -mthreads" fi ;; *-freebsd2.2*) CFLAGS="$CFLAGS -D_THREAD_SAFE" ;; *-sysv5uw7*) # UnixWare 7 if test "$GCC" != "yes"; then CFLAGS="$CFLAGS -Kthread" else CFLAGS="$CFLAGS -pthread" fi ;; *-dg-dgux*) # DG/UX CFLAGS="$CFLAGS -D_POSIX4A_DRAFT10_SOURCE" ;; esac LIBS="$TMP_LIBS $LIBS" fi # # Other configure scripts # if test x$without_irssi = xfalse; then if test "x$silc_dist" = "xsilc-client" || test "x$silc_dist" = "xsilc-toolkit"; then AC_CONFIG_SUBDIRS(irssi) fi fi AC_CONFIG_SUBDIRS(lib/silcmath/mpi) #AC_CONFIG_SUBDIRS(lib/zlib) SILC_TOP_SRCDIR=`pwd` AC_SUBST(SILC_TOP_SRCDIR) #SILC_INSTALL_PREFIX=$ac_default_prefix #AC_SUBST(SILC_INSTALL_PREFIX) AC_SUBST(LIBS) INCLUDE_DEFINES_INT="include \$(top_srcdir)/Makefile.defines_int" AC_SUBST(INCLUDE_DEFINES_INT) AC_SUBST(SILC_DIST_SUBDIRS) # # Makefile outputs # AC_CONFIG_FILES( Makefile Makefile.defines Makefile.defines_int doc/Makefile includes/Makefile lib/Makefile lib/contrib/Makefile lib/silccore/Makefile lib/silccrypt/Makefile lib/silcmath/Makefile lib/silcmath/mpi/Makefile.defines lib/silcmath/mpi/Makefile.defines_int lib/silcsim/Makefile lib/silcske/Makefile lib/silcutil/Makefile lib/silcutil/unix/Makefile lib/silcutil/win32/Makefile lib/silcutil/beos/Makefile lib/silcutil/os2/Makefile lib/silcutil/epoc/Makefile lib/silcsftp/Makefile lib/silcsftp/tests/Makefile doc/example_silcd.conf ) if test "x$silc_dist" = "xsilc-client" || test "x$silc_dist" = "xsilc-toolkit"; then AC_CONFIG_FILES(lib/silcclient/Makefile) fi if test x$without_irssi = xfalse ; then if test "x$silc_dist" = "xsilc-client" || test "x$silc_dist" = "xsilc-toolkit"; then AC_CONFIG_FILES( irssi/Makefile.defines irssi/Makefile.defines_int ) fi fi if test x$without_silcd = xfalse ; then if test "x$silc_dist" = "xsilc-server" || test "x$silc_dist" = "xsilc-toolkit"; then AC_CONFIG_FILES( silcd/Makefile ) fi fi if test "x$silc_dist" = "xsilc-toolkit"; then AC_CONFIG_FILES( silc/Makefile win32/Makefile win32/libsilc/Makefile win32/libsilcclient/Makefile ) fi AC_OUTPUT