X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=configure.in.pre;h=671dac894b0f2fabe6e7c1f8ce2c30b203f3873e;hp=dd91ea9b3ead387bd28607326487ea8de5e1aecd;hb=382d15d447b7a95390decfa783836ae4fe255b3d;hpb=c412626b72ef25544ccbfa91d7aa1bff737c2155 diff --git a/configure.in.pre b/configure.in.pre index dd91ea9b..671dac89 100644 --- a/configure.in.pre +++ b/configure.in.pre @@ -18,11 +18,13 @@ AC_INIT(includes/silcversion.h) -# # Put here any platform specific stuff # AC_CANONICAL_SYSTEM case "$target" in + *-*-freebsd*) + check_threads=true + ;; *-*-*bsd*) check_threads=false ;; @@ -32,9 +34,10 @@ case "$target" in 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_CONFIG_HEADERS(includes/silcdefs.h) AC_PROG_CC AC_C_INLINE @@ -45,37 +48,86 @@ 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 +# +# 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 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(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 @@ -83,57 +135,69 @@ 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 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_FUNC(gethostbyname, [], + [ 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_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) -AC_CHECK_FUNCS(fcntl setsockopt time) -AC_CHECK_FUNCS(chmod stat fstat getenv putenv strerror ctime gettimeofday) +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) -AC_CHECK_FUNCS(strchr strstr strcpy strncpy memcpy memset memmove utime iconv) -AC_CHECK_FUNCS(pthread_create nl_langinfo) +AC_CHECK_FUNCS(setgroups initgroups nl_langinfo) +AC_CHECK_FUNCS(strchr strstr strcpy strncpy memcpy memset memmove) # 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_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) -AC_CHECKING(for SIM support) -AC_CHECK_HEADERS(dlfcn.h, - AC_CHECK_LIB(dl, dlopen, - AC_DEFINE(SILC_SIM) - sim_support=true - AM_CONDITIONAL(SILC_SIM, test x$sim_support = xtrue) - AC_MSG_RESULT(enabled SIM support) - LIBS="$LIBS -ldl", - AC_MSG_RESULT(no SIM support found)), - AC_MSG_RESULT(no SIM support found)) +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) @@ -141,180 +205,351 @@ 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 # -# Installation +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) - if test "x$prefix" != xNONE; then - silc_prefix="$prefix" + silc_prefix="$prefix" else - silc_prefix="$ac_default_prefix" + silc_prefix="$ac_default_prefix" fi # etc directory +# if test "x$sysconfdir" != 'x${prefix}/etc'; then - ETCDIR="$sysconfdir" + ETCDIR="$sysconfdir" else - ETCDIR="$silc_prefix/etc" + 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 ], -) + [[ --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[=PATH] Directory for SILC help files [PREFIX/help]], -[ case "$withval" in - no) - ;; - yes) - HELPDIR="$withval" - ;; - *) - HELPDIR="$withval" - ;; - esac ], -) + [[ --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[=PATH] Directory for SILC documentation [PREFIX/doc]], -[ case "$withval" in - no) - ;; - yes) - DOCDIR="$withval" - ;; - *) - DOCDIR="$withval" - ;; - esac ], -) + [[ --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[=PATH] Directory for SIM modules [PREFIX/modules]], -[ case "$withval" in - no) - ;; - yes) - MODULESDIR="$withval" - ;; - *) - MODULESDIR="$withval" - ;; - esac ], -) + [[ --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[=PATH] Directory for Server logs [PREFIX/logs]], -[ case "$withval" in - no) - ;; - yes) - LOGSDIR="$withval" - ;; - *) - LOGSDIR="$withval" - ;; - esac ], -) + [[ --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") +# 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|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[=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" + [[ --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 - - 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" + [[ --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" + fi + if test -d "$withval/lib"; then + LDFLAGS="$LDFLAGS -L$withval/lib" + fi + + 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) @@ -347,294 +582,455 @@ if test "x$socks" = "x5"; then 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) +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[=PATH] Compile with GMP support instead of MPI], -[ case "$withval" in - no) - AC_MSG_RESULT(no) - mp_gmp=false - ;; - *) - AC_MSG_RESULT(yes) + [[ --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 - 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 -) + [ + 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) + ) 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) + AC_MSG_RESULT(Using NSS MPI as a 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") ]) +# 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$localstatedir" != 'x${prefix}/var'; then - PIDFILE="$localstatedir/silcd.pid" -else - PIDFILE="$silc_prefix/var/silcd.pid" +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 -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) +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_DEFINE(SILC_WIN32) - win32_support=true - CFLAGS="-mno-cygwin $CFLAGS" - LIBS="$LIBS -lwsock32" ]) - + [ --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], -[ without_irssi=true - SILC_DIST_SUBDIRS=`echo $SILC_DIST_SUBDIRS | $sedpath -e 's/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], -[ 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 + [ --without-silcd compile without SILC Server], + [ 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) + without_silcd=true + SILC_DIST_SUBDIRS=`echo $SILC_DIST_SUBDIRS | $sedpath -e 's/silcd//'` + ], + [ 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) - ;; - *) +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) - ;; -esac ], AC_MSG_RESULT(no)) - -# -# Disable all assembler optimizations -# -AC_ARG_ENABLE(asm, -[ --disable-asm Do not use assembler optimizations ], -[]) + libtoolfix=false + ], + [ + AC_MSG_RESULT(yes) + ]) -# -# 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 ]) +AC_SUBST(ETCDIR) +AC_DEFINE_UNQUOTED(SILC_ETCDIR, "$ETCDIR") -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 +## +## Misc +## - LIBS="$TMP_LIBS $LIBS" -fi - -# # Other configure scripts # if test x$without_irssi = xfalse; then - if test "x$silc_dist" = "xsilc-client" || + if test "x$silc_dist" = "xsilc-client" || test "x$silc_dist" = "xsilc-toolkit"; then - AC_CONFIG_SUBDIRS(irssi) + AC_CONFIG_SUBDIRS(irssi) fi fi -AC_CONFIG_SUBDIRS(lib/silcmath/mpi) +if test x$mp_gmp = xfalse; then + AC_CONFIG_SUBDIRS(lib/silcmath/mpi) +fi + #AC_CONFIG_SUBDIRS(lib/zlib) SILC_TOP_SRCDIR=`pwd` @@ -646,19 +1042,32 @@ 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( \ +AC_CONFIG_FILES( Makefile Makefile.defines Makefile.defines_int -doc/Makefile +doc/Makefile includes/Makefile lib/Makefile lib/contrib/Makefile lib/silccore/Makefile -lib/silccrypt/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 @@ -673,39 +1082,118 @@ 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" || +if test "x$silc_dist" = "xsilc-client" || test "x$silc_dist" = "xsilc-toolkit"; then -AC_CONFIG_FILES(lib/silcclient/Makefile) + 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( \ + 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 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( \ + if test "x$silc_dist" = "xsilc-server" || + test "x$silc_dist" = "xsilc-toolkit"; then + AC_CONFIG_FILES( silcd/Makefile ) -fi + fi fi if test "x$silc_dist" = "xsilc-toolkit"; then -AC_CONFIG_FILES( \ + AC_CONFIG_FILES( silc/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