X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=configure.in.pre;h=2766a7ce4c8821acfba9b38969045fa41070f30f;hp=2f764855f29a778bc79e3dae5fb2fe658799a0f2;hb=025fc27fe998393c10f74e21be32f70f4626640d;hpb=868d15d9fad7749930b0b43f618801f70e4bd406 diff --git a/configure.in.pre b/configure.in.pre index 2f764855..2766a7ce 100644 --- a/configure.in.pre +++ b/configure.in.pre @@ -1,9 +1,9 @@ # -# configure.in +# configure.in.pre # -# Author: Pekka Riikonen +# Author: Pekka Riikonen # -# Copyright (C) 2000 - 2001 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 @@ -16,64 +16,75 @@ # GNU General Public License for more details. # -AC_INIT(includes/version.h) +AC_INIT(includes/silcversion.h) -# Compiler settings -CFLAGS="-Wall $CFLAGS" - -# # Put here any platform specific stuff # AC_CANONICAL_SYSTEM case "$target" in - *-*-linux*|*-*-mklinux*) - CFLAGS="-D_GNU_SOURCE $CFLAGS" + *-*-freebsd*) + check_threads=true + ;; + *-*-*bsd*) + check_threads=false ;; *) + check_threads=true ;; esac -# ./prepare script will automatically put the correct date. Do not edit! -AM_INIT_AUTOMAKE(silc, YYYYMMDD) -AC_PREREQ(2.3) -AM_CONFIG_HEADER(includes/silcdefs.h) +# ./prepare script will automatically put the correct version. Do not edit! +# +AM_INIT_AUTOMAKE(SILC_PACKAGE, SILC_VERSION) +AC_PREREQ(2.52) +AC_CONFIG_HEADERS(includes/silcdefs.h) AC_PROG_CC AC_C_INLINE AC_C_CONST -AC_ARG_PROGRAM 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="-finline-functions $CFLAGS" -else - # Currently GCC is only supported compiler - AC_MSG_ERROR(GCC is only supported compiler currently) + 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) -AC_CHECK_HEADERS(netinet/in.h netinet/tcp.h netdb.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 regex.h) -AC_CHECK_HEADERS(arpa/inet.h sys/mman.h) +AC_CHECK_HEADERS(ncurses.h signal.h ctype.h utime.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 @@ -81,196 +92,431 @@ 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_SUBST(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_SUBST(SILC_SIZEOF_LONG, $ac_cv_sizeof_long) AC_CHECK_SIZEOF(int, 0) -AC_DEFINE_UNQUOTED(SILC_SIZEOF_INT, $ac_cv_sizeof_int) +AC_SUBST(SILC_SIZEOF_INT, $ac_cv_sizeof_int) AC_CHECK_SIZEOF(short, 0) -AC_DEFINE_UNQUOTED(SILC_SIZEOF_SHORT, $ac_cv_sizeof_short) +AC_SUBST(SILC_SIZEOF_SHORT, $ac_cv_sizeof_short) AC_CHECK_SIZEOF(char, 0) -AC_DEFINE_UNQUOTED(SILC_SIZEOF_CHAR, $ac_cv_sizeof_char) +AC_SUBST(SILC_SIZEOF_CHAR, $ac_cv_sizeof_char) AC_CHECK_SIZEOF(void *, 0) -AC_DEFINE_UNQUOTED(SILC_SIZEOF_VOID_P, $ac_cv_sizeof_void_p) +AC_SUBST(SILC_SIZEOF_VOID_P, $ac_cv_sizeof_void_p) -# Function checking -AC_CHECK_FUNCS(chmod stat fstat getenv putenv strerror ctime gettimeofday) +# Function and library checking +# +AC_CHECK_FUNC(gethostbyname, [], + [ + AC_CHECK_LIB(nsl, gethostbyname, LIBS="$LIBS -lnsl") + AC_CHECK_FUNC(res_gethostbyname, [], + AC_CHECK_LIB(resolv, res_gethostbyname, LIBS="$LIBS -lresolv") + ) + ]) +AC_CHECK_FUNC(socket, [], + AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket") +) +AC_CHECK_FUNCS(gethostname gethostbyaddr getservbyname getservbyport) +AC_CHECK_FUNCS(select listen bind shutdown close connect setsockopt) +AC_CHECK_FUNCS(time ctime utime gettimeofday) +AC_CHECK_FUNCS(chmod fcntl stat fstat getenv putenv strerror) AC_CHECK_FUNCS(getpid getgid getsid getpgid getpgrp getuid) +AC_CHECK_FUNCS(setgroups initgroups nl_langinfo) AC_CHECK_FUNCS(strchr strstr strcpy strncpy memcpy memset memmove) -AC_CHECK_FUNCS(gethostname gethostbyname gethostbyaddr) -AC_CHECK_FUNCS(select socket listen bind shutdown close connect) -AC_CHECK_FUNCS(fcntl setsockopt) -AC_CHECK_FUNCS(getservbyname getservbyport) -AC_CHECK_FUNCS(getopt_long time) -AC_CHECK_FUNCS(mlock munlock) # SIM support checking # XXX These needs to be changed as more supported platforms appear. # XXX This probably needs to be made platform dependant check. -AC_CHECKING(for SIM support) -AC_CHECK_HEADERS(dlfcn.h, - AC_CHECK_LIB(dl, dlopen, - AC_DEFINE(SILC_SIM) - AC_MSG_RESULT(enabled SIM support) - LIBS="$LIBS -ldl", - AC_MSG_RESULT(no SIM support found)), - AC_MSG_RESULT(no SIM support found)) +# +sim_support=false +AC_MSG_CHECKING(for SIM support) +AC_MSG_RESULT() +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 # -# Installation +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) + + +## +## Enable/disable checking +## + +# IPv6 support # +AC_MSG_CHECKING(whether to enable IPv6 support) +AC_ARG_ENABLE(ipv6, + [ --enable-ipv6 enable IPv6 support], + [ + case "${enableval}" in + yes) + want_ipv6=true + check_ipv6=false + summary_ipv6="yes" + AC_DEFINE(HAVE_IPV6) + AC_MSG_RESULT(yes) + ;; + *) + want_ipv6=false + check_ipv6=false + summary_ipv6="no" + AC_MSG_RESULT(no) + ;; + esac + ], + check_ipv6=true + ) + +if test x$check_ipv6 = xtrue; then + summary_ipv6="no" + AC_TRY_COMPILE( + [ + #ifdef HAVE_SYS_TYPES_H + #include + #endif + #ifdef HAVE_NETINET_TCP_H + #include + #endif + #ifdef HAVE_NETDB_H + #include + #endif + #include + #ifdef HAVE_NETINET_IN_H + #include + #endif + ], + [ + struct sockaddr_in6 sin6; + int family = AF_INET6; + ], + [ + AC_DEFINE(HAVE_IPV6) + AC_MSG_RESULT(yes) + summary_ipv6="yes" + ], + AC_MSG_RESULT(no) + ) +fi + +# Debug checking +# +AC_MSG_CHECKING(whether to enable debugging) +summary_debug="no" +AC_ARG_ENABLE(debug, + [ --enable-debug enable debugging], + [ + case "${enableval}" in + yes) + AC_MSG_RESULT(yes) + AC_DEFINE(SILC_DEBUG) + CFLAGS="-O -g $CFLAGS" + summary_debug="yes" + ;; + *) + AC_MSG_RESULT(no) + CFLAGS="-O2 -g $CFLAGS" + ;; + esac + ], + [ + CFLAGS="-O2 -g $CFLAGS" + AC_MSG_RESULT(no) + ]) + +# Stack trace checking +# +AC_MSG_CHECKING(whether to enable stack tracing) +summary_stacktrace="no" +AC_ARG_ENABLE(stack-trace, + [ --enable-stack-trace enable memory stack trace], + [ + case "${enableval}" in + yes) + AC_MSG_RESULT(yes) + AC_DEFINE(SILC_STACKTRACE) + summary_stacktrace="yes" + ;; + *) + AC_MSG_RESULT(no) + ;; + esac + ], + AC_MSG_RESULT(no) + ) + +# Disable all assembler optimizations +# +AC_MSG_CHECKING(whether to enable assembler optimizations) +summary_asm="no" +AC_ARG_ENABLE(asm, + [ --disable-asm do not use assembler optimizations], + [ + AC_MSG_RESULT(no) + ], + [ + AC_MSG_RESULT(yes) + summary_asm="yes" + ]) + + +## +## Installation +## # Default installation destination -AC_PREFIX_DEFAULT(/usr/local/silc/) +# +AC_PREFIX_DEFAULT(/usr/local/silc) +if test "x$prefix" != xNONE; then + silc_prefix="$prefix" +else + silc_prefix="$ac_default_prefix" +fi # etc directory -ETCDIR="/etc/silc" +# +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="$withwal" - ;; - esac ], -) + [[ --with-etcdir=DIR directory for system files [/etc/silc]]], + [ + case "$withval" in + no) + ;; + *) + ETCDIR="$withval" + ;; + esac + ]) AC_SUBST(ETCDIR) +AC_DEFINE_UNQUOTED(SILC_ETCDIR, "$ETCDIR") # help directory -HELPDIR="help" +# +HELPDIR="$silc_prefix/help" AC_ARG_WITH(helpdir, -[ --with-helpdir[=PATH] Directory for SILC help files [PREFIX/help]], -[ case "$withval" in - no) - ;; - yes) - ;; - *) - HELPDIR="$withwal" - ;; - esac ], -) + [[ --with-helpdir=DIR directory for SILC help files [PREFIX/help]]], + [ + case "$withval" in + no) + ;; + *) + HELPDIR="$withval" + ;; + esac + ]) AC_SUBST(HELPDIR) +AC_DEFINE_UNQUOTED(SILC_HELPDIR, "$HELPDIR") # doc directory -DOCDIR="doc" +# +DOCDIR="$silc_prefix/doc" AC_ARG_WITH(docdir, -[ --with-docdir[=PATH] Directory for SILC documentation [PREFIX/doc]], -[ case "$withval" in - no) - ;; - yes) - ;; - *) - DOCDIR="$withwal" - ;; - esac ], -) + [[ --with-docdir=DIR directory for SILC documentation [PREFIX/doc]]], + [ + case "$withval" in + no) + ;; + *) + DOCDIR="$withval" + ;; + esac + ]) AC_SUBST(DOCDIR) +AC_DEFINE_UNQUOTED(SILC_DOCDIR, "$DOCDIR") # SIM modules directory -MODULESDIR="modules" +# +MODULESDIR="$silc_prefix/modules" AC_ARG_WITH(simdir, -[ --with-simdir[=PATH] Directory for SIM modules [PREFIX/modules]], -[ case "$withval" in - no) - ;; - yes) - ;; - *) - MODULESDIR="$withwal" - ;; - esac ], -) + [[ --with-simdir=DIR directory for SIM modules [PREFIX/modules]]], + [ + case "$withval" in + no) + ;; + *) + MODULESDIR="$withval" + ;; + esac + ]) AC_SUBST(MODULESDIR) +AC_DEFINE_UNQUOTED(SILC_MODULESDIR, "$MODULESDIR") -# Debug checking -AC_MSG_CHECKING(for enabled debugging) -AC_ARG_ENABLE(debug, -[ --enable-debug Enable debugging (warning: it is heavy!)], -[ 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)) +# Logs directory +# +LOGSDIR="$silc_prefix/logs" +AC_ARG_WITH(logsdir, + [[ --with-logsdir=DIR directory for SILC Server logs [PREFIX/logs]]], + [ + case "$withval" in + no) + ;; + *) + LOGSDIR="$withval" + ;; + esac + ]) +AC_SUBST(LOGSDIR) +AC_DEFINE_UNQUOTED(SILC_LOGSDIR, "$LOGSDIR") + +# Manual directory +# +MANDIR="$silc_prefix/man" +AC_ARG_WITH(mandir, + [[ --with-mandir=DIR directory for SILC manual pages [PREFIX/man]]], + [ + case "$withval" in + no) + ;; + *) + MANDIR="$withval" + ;; + esac + ]) +AC_SUBST(MANDIR) +AC_DEFINE_UNQUOTED(SILC_MANDIR, "$MANDIR") + +# silcd config file checking +# +summary_silcd_configfile="/etc/silc/silcd.conf" +AC_ARG_WITH(silcd-config-file, + [[ --with-silcd-config-file=FILE use FILE as default configuration file + for SILC Server [/etc/silc/silcd.conf]]], + AC_DEFINE_UNQUOTED(SILC_SERVER_CONFIG_FILE, "$withval") + summary_silcd_configfile="$withval" + ) + +# silcd pid file checking +# +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=FILE use FILE as default pid file for SILC + Server [/var/run/silcd.pid]]], + [ + case "$withval" in + no) + ;; + *) + PIDFILE="$withval" + ;; + esac + ]) +AC_SUBST(PIDFILE) + + +## +## With/without checkings +## # 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) + [[ --with-socks4[=DIR] with SOCKS4 support [search in DIR/lib and DIR/include]]], + [ + 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) - ;; - *) - 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) + [[ --with-socks5[=DIR] with SOCKS5 support [search in DIR/lib and DIR/include]]], + [ + 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) - ;; - *) - 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) @@ -303,71 +549,552 @@ if test "x$socks" = "x5"; then AC_DEFINE(Rgethostbyname, SOCKSgethostbyname) fi -# GMP Library checking -AC_MSG_CHECKING(whether to compile GMP) +# 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. +# +mp_gmp=false +AC_MSG_CHECKING(whether to search for GMP) AC_ARG_WITH(gmp, -[ --with-gmp Build the GMP in the SILC source tree], -[ case "${withval}" in - yes) - AM_CONDITIONAL(SILC_BUILD_GMP, test x$withval = xyes) - AC_MSG_RESULT(yes) - ;; - *) - AC_CHECK_HEADER(gmp.h, - AC_CHECK_LIB(gmp, __gmpz_init, - AM_CONDITIONAL(SILC_BUILD_GMP, test x$withval = yes) - AC_MSG_RESULT(GMP will not be compiled), - AM_CONDITIONAL(SILC_BUILD_GMP, test x$withval != yes) - AC_MSG_RESULT(GMP will be compiled) - ), - AM_CONDITIONAL(SILC_BUILD_GMP, test x$withval != yes) - AC_MSG_RESULT(GMP will be compiled) - ) - ;; -esac ], [ - AC_CHECK_HEADER(gmp.h, - AC_CHECK_LIB(gmp, __gmpz_init, - build_gmp=false - AM_CONDITIONAL(SILC_BUILD_GMP, test x$build_gmp = xtrue) - AC_MSG_RESULT(GMP will not be compiled), - build_gmp=true - AM_CONDITIONAL(SILC_BUILD_GMP, test x$build_gmp = xtrue) - AC_MSG_RESULT(GMP will be compiled) - ), - build_gmp=true - AM_CONDITIONAL(SILC_BUILD_GMP, test x$build_gmp = xtrue) - AC_MSG_RESULT(GMP will be compiled) + [[ --with-gmp[=DIR] use GMP instead of MPI [search in DIR/lib and DIR/include]]], + [ + case "$withval" in + no) + AC_MSG_RESULT(no) + ;; + *) + 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" + AC_CHECK_LIB(gmp, __gmpz_init, + [ + mp_gmp=true + AC_DEFINE(SILC_MP_GMP) + AC_MSG_RESULT(Using GMP as a MP library.) + ]) + ;; + esac + ], + AC_MSG_RESULT(no) ) -]) -AC_ARG_WITH(silcd-config-file, -[ --with-silcd-config-file[=PATH] - Use PATH as default configuration file in SILC - server.], -[ AC_DEFINE_UNQUOTED(SILC_SERVER_CONFIG_FILE, "$withval") ]) +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 a MP library.) +fi -# XXX -#LIBS="$LIBS -lefence" +# iconv support +# +check_iconv=true +has_iconv=false +AC_MSG_CHECKING(whether to implicit search for libiconv) +AC_ARG_WITH(iconv, + [[ --with-iconv[=DIR] use libiconv [search in DIR/include and DIR/lib]]], + [ + case "${withval}" in + no) + AC_MSG_RESULT(no) + + AC_CHECK_HEADERS(iconv.h, AC_CHECK_FUNC(iconv, has_iconv=true)) + check_iconv=false + ;; + *) + AC_MSG_RESULT(yes) + + if test -d $withval/include; then + CPPFLAGS="$CPPFLAGS -I$withval/include" + CFLAGS="$CFLAGS -I$withval/include" + fi + if test -d $withval/lib; then + LDFLAGS="$LDFLAGS -L$withval/lib" + fi + esac + ], + [ + AC_MSG_RESULT(no) + + AC_CHECK_HEADERS(iconv.h, AC_CHECK_FUNCS(iconv, + [ + has_iconv=true + check_iconv=false + ])) + ]) + +if test x$check_iconv = xtrue; then + AC_MSG_RESULT(starting search...) + + # XXX + unset ac_cv_header__iconv_h_ ac_cv_header_iconv_h || true + + AC_CHECK_HEADERS(iconv.h, + [ + LIBS="$LIBS -liconv" + AC_MSG_CHECKING(for iconv in -liconv) + AC_TRY_LINK( + [ + #include + #include + ], + [ + iconv_t cd = iconv_open("", ""); + iconv(cd, NULL, NULL, NULL, NULL); + iconv_close(cd); + ], + [ + echo "yes" + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + has_iconv=true + check_iconv=false + ], + [ + echo "no" + ]) + ]) +fi + +if test x$check_iconv = xtrue; then + # search for iconv library.. + SAVE_CPPFLAGS="$CPPFLAGS" + SAVE_CFLAGS="$CFLAGS" + SAVE_LDFLAGS="$LDFLAGS" + + for dir in `echo "/usr/local /usr/pkg /usr/contrib"`; do + if test x$has_iconv = xfalse; then + AC_MSG_RESULT(searching in $dir...) + + CPPFLAGS="$SAVE_CPPFLAGS" + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + + if test -d $dir/include; then + CPPFLAGS="$CPPFLAGS -I$dir/include" + CFLAGS="$CFLAGS -I$dir/include" + fi + if test -d $dir/lib; then + LDFLAGS="$LDFLAGS -L$dir/lib" + fi + + # XXX + unset ac_cv_header__iconv_h_ ac_cv_header_iconv_h || true + + AC_CHECK_HEADERS(iconv.h, + [ + LIBS="$LIBS -liconv" + AC_MSG_CHECKING(for iconv in -liconv) + AC_TRY_LINK( + [ + #include + #include + ], + [ + iconv_t cd = iconv_open("", ""); + iconv(cd, NULL, NULL, NULL, NULL); + iconv_close(cd); + ], + [ + echo "yes" + has_iconv=true + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + ], + [ + echo "no" + has_iconv=false + ]) + ]) + fi + done +fi + +if test x$has_iconv = xtrue; then + # (1) Some implementations of iconv won't convert from UTF-8 to UTF-8. + # (2) In glibc-2.1.2 and earlier there is a bug that messes up ob and + # obl when args 2 and 3 are 0 (fixed in glibc-2.1.3). + # + AC_CACHE_CHECK([whether this iconv is good enough], ac_iconv_good, + AC_TRY_RUN( + [ + #include + int main() { + iconv_t cd; + changequote(, )dnl + char buf[4]; + changequote([, ])dnl + char *ob; + size_t obl; + ob = buf, obl = sizeof(buf); + return ((cd = iconv_open("UTF-8", "UTF-8")) != (iconv_t)(-1) && + (iconv(cd, 0, 0, &ob, &obl) || + !(ob == buf && obl == sizeof(buf)) || + iconv_close(cd))); + } + ], + [ + ac_iconv_good=yes + ], + [ + ac_iconv_good=no + ], + [ + ac_iconv_good=yes + ]) + ) + + if test x$ac_iconv_good = xno; then + AC_MSG_RESULT(Try using libiconv instead.) + fi +fi + +# POSIX threads support +# +has_threads=false +AC_MSG_CHECKING(whether to search for POSIX threads) +AC_ARG_WITH(pthreads, + [[ --with-pthreads[=DIR] use POSIX threads [search in DIR/include and DIR/lib]]], + [ + case "${withval}" in + no) + check_threads=false + ;; + *) + if test -d $withval/include; then + CPPFLAGS="$CPPFLAGS -I$withval/include" + CFLAGS="$CFLAGS -I$withval/include" + fi + if test -d $withval/lib; then + LDFLAGS="$LDFLAGS -L$withval/lib" + fi + + check_threads=true + ;; + esac + ]) + +if test x$check_threads = xtrue; then + AC_MSG_RESULT(yes) + AC_CHECK_HEADERS(pthread.h, + [ + SAVE_LIBS="$LIBS" + LIBS="$LIBS -lpthread" + AC_CHECK_LIB(pthread, pthread_attr_init, has_threads=true, + [ + # FreeBSD + case "${target}" in + *-*-freebsd*) + LIBS="$SAVE_LIBS -pthread" + AC_CHECK_LIB(c_r, pthread_attr_init, has_threads=true) + ;; + esac + ]) + ], + [ + # search for pthread library.. + SAVE_CPPFLAGS="$CPPFLAGS" + SAVE_CFLAGS="$CFLAGS" + SAVE_LDFLAGS="$LDFLAGS" + + for dir in `echo "/usr/local /usr/pkg /usr/contrib /usr/pkg/pthreads /usr/local/pthreads"`; do + if test x$has_threads = xfalse; then + AC_MSG_RESULT(searching in $dir...) + + CPPFLAGS="$SAVE_CPPFLAGS" + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + + if test -d $dir/include; then + CPPFLAGS="$CPPFLAGS -I$dir/include" + CFLAGS="$CFLAGS -I$dir/include" + fi + if test -d $dir/lib; then + LDFLAGS="$LDFLAGS -L$dir/lib" + fi + + # XXX + unset ac_cv_header__pthread_h_ ac_cv_header_pthread_h || true + + AC_CHECK_HEADERS(pthread.h, + [ + LIBS="$LIBS -lpthread" + AC_CHECK_LIB(pthread, pthread_attr_init, has_threads=true, + has_threads=false) + ]) + fi + done + ]) +else + AC_MSG_RESULT(no) + has_threads=false +fi + +AM_CONDITIONAL(SILC_THREADS, test x$has_threads = xtrue) +if test x$has_threads = xtrue; then + CFLAGS="$CFLAGS -D_REENTRANT" + + # XXX possibly incomplete + case "${target}" in + *-*-aix*) + CFLAGS="$CFLAGS -D_THREAD_SAFE" + if test x"$GCC" = xyes; then + CFLAGS="$CFLAGS -mthreads" + fi + ;; + *-*-freebsd*) + 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 + + AC_CHECK_FUNC(pthread_create) + AC_DEFINE(SILC_HAVE_PTHREAD) + AC_DEFINE(SILC_THREADS) +fi + +# Native WIN32 compilation under cygwin +# +AC_MSG_CHECKING(whether to compile native WIN32 code) +AC_ARG_WITH(win32, + [ --with-win32 compile native WIN32 code (-mno-cygwin)], + [ + AC_MSG_RESULT(yes) + AC_DEFINE(SILC_WIN32) + win32_support=true + CFLAGS="-mno-cygwin $CFLAGS" + LIBS="$LIBS -lwsock32" + ], + [ + AC_MSG_RESULT(no) + ]) +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_MSG_CHECKING(whether to compile Irssi SILC Client) +AC_ARG_WITH(irssi, + [ --without-irssi compile without Irssi SILC Client], + [ + AC_MSG_RESULT(no) + without_irssi=true + SILC_DIST_SUBDIRS=`echo $SILC_DIST_SUBDIRS | $sedpath -e 's/irssi//'` + ], + [ + AC_MSG_RESULT(yes) + ]) + +# --without-silcd +# +without_silcd=false +AC_MSG_CHECKING(whether to compile SILC Server) +AC_ARG_WITH(silcd, + [ --without-silcd compile without SILC Server], + [ + AC_MSG_RESULT(no) + without_silcd=true + SILC_DIST_SUBDIRS=`echo $SILC_DIST_SUBDIRS | $sedpath -e 's/silcd//'` + ], + [ + AC_MSG_RESULT(yes) + ]) + + +## +## Misc +## # 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 + +if test x$mp_gmp = xfalse; then + AC_CONFIG_SUBDIRS(lib/silcmath/mpi) +fi + #AC_CONFIG_SUBDIRS(lib/zlib) -AC_CONFIG_SUBDIRS(lib/dotconf) -AC_CONFIG_SUBDIRS(lib/silcmath/gmp) -AC_CONFIG_SUBDIRS(lib/trq) -AC_OUTPUT( \ +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/silcclient/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/silcsim/modules/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 +includes/silcincludes.h +) + +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 -silcd/Makefile) +win32/Makefile +win32/libsilc/Makefile +win32/libsilcclient/Makefile +tutorial/Makefile +tutorial/Makefile.defines +tutorial/Makefile.defines_int +) +fi + +AC_OUTPUT + +s_bindir=`eval echo $bindir`;s_bindir=`eval echo $s_bindir` +s_sbindir=`eval echo $sbindir`;s_sbindir=`eval echo $s_sbindir` +s_includedir=`eval echo $includedir`;s_includedir=`eval echo $s_includedir` + +echo "" +echo "SILC Configuration Summary:" +echo "---------------------------" +echo " Target host ...................: $target" +echo " Compiler ......................: $CC" +echo " CFLAGS ........................: $CFLAGS" +echo " CPPFLAGS ......................: $CPPFLAGS" +echo " LDFLAGS .......................: $LDFLAGS" +echo " LIBS ..........................: $LIBS" +echo "" +echo " Installation prefix ...........: $prefix" +echo " bin directory .................: $s_bindir" +echo " sbin directory ................: $s_sbindir" +echo " man directory .................: $MANDIR" +echo " help directory ................: $HELPDIR" +echo " doc directory .................: $DOCDIR" +echo " logs directory ................: $LOGSDIR" +echo " SIM directory .................: $MODULESDIR" +echo " include directory .............: $s_includedir" +echo "" + +if test "x$silc_dist" = "xsilc-client" || + test "x$silc_dist" = "xsilc-toolkit"; then + irssi="yes" + if test x$without_irssi = xtrue; then + irssi="no" + fi +echo " Compile SILC Client ...........: $irssi" +fi + +if test "x$silc_dist" = "xsilc-server" || + test "x$silc_dist" = "xsilc-toolkit"; then + silcd="yes" + if test x$without_silcd = xtrue; then + without_silcd="no" + fi +echo " Compile SILC Server ...........: $silcd" +echo " Server configuration file .....: $summary_silcd_configfile" +echo " Server PID file ...............: $PIDFILE" +fi + +if test x$sim_support = xfalse; then + sim_support="no" +else + sim_support="yes" +fi +echo " SIM support ...................: $sim_support" +echo " IPv6 support ..................: $summary_ipv6" +echo " Assmebler optimizations .......: $summary_asm" + +mp="MPI" +if test x$mp_gmp = xtrue; then + mp="GMP" +fi +echo " Arithmetic library ............: $mp" + +threads="no" +if test x$has_threads = xtrue; then + threads="yes" +fi +echo " Multi-threads support .........: $threads" +echo " Debugging enabled .............: $summary_debug" +echo " Stack-trace enabled ...........: $summary_stacktrace" +echo "" +if test "x$silc_dist" = "xsilc-client"; then + echo "Compile the sources with 'make' or 'gmake' command (GNU make is required)." +else + echo "Compile the sources with 'make' or 'gmake' command." +fi