X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=configure.in.pre;h=671dac894b0f2fabe6e7c1f8ce2c30b203f3873e;hp=ef6b11a0a4d4165b73c4dc69ad874016d9299186;hb=382d15d447b7a95390decfa783836ae4fe255b3d;hpb=c787ae8b85f3f0a272cf306b6e35c3c601d1d5cd diff --git a/configure.in.pre b/configure.in.pre index ef6b11a0..671dac89 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,118 @@ # 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 +# +# Library versioning. +# +# Do the releases and library versioning according to following rules: +# +# - If any code has changed in library, increment [LIB]_REVISION +# - If functions were added, set [LIB]_REVISION to 0 +# - If functions were added, removed or changed, increment [LIB]_CURRENT +# - If functions were added, increment [LIB]_AGE +# - If functions were removed, set [LIB]_AGE to 0 +# +# where [LIB] is LIBSILC and LIBSILCCLIENT, and where "functions" means +# functions public interfaces. +# +# The LIB_BASE_VERSION defines the SILC software major.minor version and +# it is increment only when these version numbers actually change. +# + +# Base version for libraries. Do not change this unless SILC version +# changes too. +LIB_BASE_VERSION=1.0 + +# libsilc versions +LIBSILC_CURRENT=1 +LIBSILC_REVISION=0 +LIBSILC_AGE=1 + +# libsilcclient versions +LIBSILCCLIENT_CURRENT=1 +LIBSILCCLIENT_REVISION=1 +LIBSILCCLIENT_AGE=0 + +# Substitute the version numbers +AC_SUBST(LIB_BASE_VERSION) +AC_SUBST(LIBSILC_CURRENT) +AC_SUBST(LIBSILC_REVISION) +AC_SUBST(LIBSILC_AGE) +AC_SUBST(LIBSILCCLIENT_CURRENT) +AC_SUBST(LIBSILCCLIENT_REVISION) +AC_SUBST(LIBSILCCLIENT_AGE) + +# # Program checking +# AC_PROG_INSTALL AC_PROG_RANLIB AC_PROG_MAKE_SET +AC_DISABLE_SHARED +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,125 +135,421 @@ 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 +# +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(for enabled debugging) +# +AC_MSG_CHECKING(whether to enable debugging) +summary_debug="no" 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) + [ --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" - ;; -esac ], CFLAGS="-O2 -g $CFLAGS" - AC_MSG_RESULT(no)) + AC_MSG_RESULT(no) + ]) -# 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) +# 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) - socks=4 + summary_asm="yes" + ]) + + +## +## 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=DIR directory for system files [/etc/silc]]], + [ + case "$withval" in + no|yes) + ;; + *) + ETCDIR="$withval" + ;; + esac + ]) +AC_SUBST(ETCDIR) +AC_DEFINE_UNQUOTED(SILC_ETCDIR, "$ETCDIR") + +# help directory +# +HELPDIR="$silc_prefix/help" +AC_ARG_WITH(helpdir, + [[ --with-helpdir=DIR directory for SILC help files [PREFIX/help]]], + [ + case "$withval" in + no|yes) + ;; + *) + HELPDIR="$withval" + ;; + esac + ]) +AC_SUBST(HELPDIR) +AC_DEFINE_UNQUOTED(SILC_HELPDIR, "$HELPDIR") + +# doc directory +# +DOCDIR="$silc_prefix/doc" +AC_ARG_WITH(docdir, + [[ --with-docdir=DIR directory for SILC documentation [PREFIX/doc]]], + [ + case "$withval" in + no|yes) + ;; + *) + 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=DIR directory for SIM modules [PREFIX/modules]]], + [ + case "$withval" in + no|yes) + ;; + *) + MODULESDIR="$withval" + ;; + esac + ]) +AC_SUBST(MODULESDIR) +AC_DEFINE_UNQUOTED(SILC_MODULESDIR, "$MODULESDIR") + +# Logs directory +# +LOGSDIR="$silc_prefix/logs" +AC_ARG_WITH(logsdir, + [[ --with-logsdir=DIR directory for SILC Server logs [PREFIX/logs]]], + [ + case "$withval" in + no|yes) + ;; + *) + LOGSDIR="$withval" + ;; + esac + ]) +AC_SUBST(LOGSDIR) +AC_DEFINE_UNQUOTED(SILC_LOGSDIR, "$LOGSDIR") - 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 +# 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 - LIBS="$withval $LIBS" +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|yes) + ;; + *) + PIDFILE="$withval" + ;; + esac + ]) +AC_SUBST(PIDFILE) + + +## +## With/without checkings +## + +# SOCKS4 support checking +# +SAVE_LIBS="$LIBS" +SAVE_CFLAGS="$CFLAGS" +SAVE_LDFLAGS="$LDFLAGS" +AC_MSG_CHECKING(whether to support SOCKS4) +AC_ARG_WITH(socks4, + [[ --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" + fi + if test -d "$withval/lib"; then + LDFLAGS="$LDFLAGS -L$withval/lib" + fi + + LIBS="-lsocks $LIBS" + ;; + esac AC_TRY_LINK([], - [ Rconnect(); ], - [], - [ AC_MSG_ERROR(Could not find SOCKS4 library.)]) - ;; - esac ], - AC_MSG_RESULT(no) -) + [ + Rconnect(); + ], [], + [ + AC_MSG_ERROR(Could not find SOCKS4 library.) + LIBS="$SAVE_LIBS" + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + ]) + ], + AC_MSG_RESULT(no) + ) # SOCKS5 support checking +# +SAVE_LIBS="$LIBS" +SAVE_CFLAGS="$CFLAGS" +SAVE_LDFLAGS="$LDFLAGS" 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 + [[ --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 + if test -d "$withval/include"; then + CFLAGS="$CFLAGS -I$withval/include" + fi + if test -d "$withval/lib"; then + LDFLAGS="$LDFLAGS -L$withval/lib" + fi - LIBS="$withval $LIBS" + LIBS="-lsocks5 $LIBS" + ;; + esac AC_TRY_LINK([], - [ SOCKSconnect(); ], - [], - [ AC_MSG_ERROR(Could not find SOCKS5 library.)]) - ;; - esac ], - AC_MSG_RESULT(no) -) + [ + SOCKSconnect(); + ], [], + [ + AC_MSG_ERROR(Could not find SOCKS5 library.) + LIBS="$SAVE_LIBS" + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + ]) + ], + AC_MSG_RESULT(no) + ) if test "x$socks" = "x4"; then AC_DEFINE(SOCKS) @@ -232,71 +582,618 @@ 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 +SAVE_LIBS="$LIBS" +SAVE_CFLAGS="$CFLAGS" +SAVE_LDFLAGS="$LDFLAGS" +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, + [[ --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" + fi + if test -d "$withval/lib"; then + LDFLAGS="$LDFLAGS -L$withval/lib" + fi + + LIBS="-lgmp $LIBS" + ;; + esac + 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) + [ + mp_gmp=true + AC_DEFINE(SILC_MP_GMP) + AC_MSG_RESULT(Using GMP as a MP library.) + ], + [ + LIBS="$SAVE_LIBS" + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + ]) + ], + 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 +SAVE_LIBS="$LIBS" +SAVE_CFLAGS="$CFLAGS" +SAVE_LDFLAGS="$LDFLAGS" +SAVE_CPPFLAGS="$CPPFLAGS" +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" + LIBS="$SAVE_LIBS" + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + CPPFLAGS="$SAVE_CPPFLAGS" + ]) + ]) +fi + +if test x$check_iconv = xtrue; then + # search for iconv library.. + SAVE_LIBS="$LIBS" + SAVE_CFLAGS="$CFLAGS" + SAVE_LDFLAGS="$LDFLAGS" + SAVE_CPPFLAGS="$CPPFLAGS" + + for dir in `echo "/usr/local /usr/pkg /usr/contrib"`; do + if test x$has_iconv = xfalse; then + AC_MSG_RESULT(searching in $dir...) + + 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 + + LIBS="$SAVE_LIBS" + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + CPPFLAGS="$SAVE_CPPFLAGS" + ]) + ], + [ + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + CPPFLAGS="$SAVE_CPPFLAGS" + ]) + 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 + SAVE_LIBS="$LIBS" + SAVE_CFLAGS="$CFLAGS" + SAVE_LDFLAGS="$LDFLAGS" + SAVE_CPPFLAGS="$CPPFLAGS" + + AC_MSG_RESULT(yes) + AC_CHECK_HEADERS(pthread.h, + [ + 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, LIBS="$SAVE_LIBS") + ;; + *) + LIBS="$SAVE_LIBS" + ;; + esac + ]) + ], + [ + # search for pthread library.. + 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...) + + 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 + + LIBS="$SAVE_LIBS" + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + CPPFLAGS="$SAVE_CPPFLAGS" + ]) + ], + [ + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + CPPFLAGS="$SAVE_CPPFLAGS" + ]) + 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) + ]) + +libtoolfix=true +AC_MSG_CHECKING(whether to do libtoolfix) +AC_ARG_WITH(libtoolfix, + [ --without-libtoolfix Do not fix libtool, for package builders], + [ + AC_MSG_RESULT(no) + libtoolfix=false + ], + [ + AC_MSG_RESULT(yes) + ]) + +AC_SUBST(ETCDIR) +AC_DEFINE_UNQUOTED(SILC_ETCDIR, "$ETCDIR") + + + +## +## 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) + +# +# Fix the libtool to support run-time configuration. This allows us +# to in run-time specify when to compile shared/static libraries without +# need to reconfigure the entire libtool. +# +if test x$libtoolfix = xtrue; then + ./libtoolfix $SILC_TOP_SRCDIR/ltmain.sh +fi +AM_CONDITIONAL(SILC_LIBTOOLFIX, test x$libtoolfix = xtrue) + + +# +# 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/silccore/tests/Makefile lib/silccrypt/Makefile +lib/silccrypt/tests/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_mandir=`eval echo $mandir`;s_mandir=`eval echo $s_mandir` +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 .................: $s_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 + 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 " Assembler 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