X-Git-Url: http://git.silcnet.org/gitweb/?p=runtime.git;a=blobdiff_plain;f=configure.ad;h=fd047ab08a69e5fdf278853ede6571c0b51cb83e;hp=90c55578620cb88cc25988ab15659cf0f00cc8f7;hb=HEAD;hpb=41bcc98509b09f99a13da723ad27d8953232e898 diff --git a/configure.ad b/configure.ad index 90c55578..fd047ab0 100644 --- a/configure.ad +++ b/configure.ad @@ -3,7 +3,7 @@ # # Author: Pekka Riikonen # -# Copyright (C) 2000 - 2006 Pekka Riikonen +# Copyright (C) 2000 - 2008 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 @@ -19,7 +19,7 @@ AD_INIT AC_CANONICAL_SYSTEM AM_INIT_AUTOMAKE AC_PREREQ(2.52) -AC_CONFIG_HEADERS(silcdefs.h) +AC_CONFIG_HEADERS(runtimedefs.h) AC_PROG_INSTALL AC_PROG_MAKE_SET @@ -29,100 +29,265 @@ AC_PROG_EGREP AC_SUBST(LN_S) AC_PATH_PROG(sedpath, sed) -#ifdef SILC_DIST_COMPILER -# Put here any platform specific stuff +AC_PROG_CC +AM_PROG_AS +AC_C_INLINE +AC_C_CONST + +AC_PROG_RANLIB +#ifdef SILC_DIST_INPLACE +AC_DISABLE_SHARED +#endif SILC_DIST_INPLACE +AC_PROG_LIBTOOL + +SILC_TOP_SRCDIR=`pwd` + +## +## Library versioning. +## + +# Do the releases and library versioning according to following rules: # -case "$target" in - *-*-freebsd*) - check_threads=true - ;; - *-*-*bsd*) - check_threads=false - ;; - *) - check_threads=true - ;; -esac +# - If any code has changed in library, increment RUNTIME_REVISION +# - If API were added, removed or changed, set RUNTIME_REVISION to 0 +# - If API were added, removed or changed, increment RUNTIME_CURRENT +# - If APi were added, increment RUNTIME_AGE +# - If API were removed, set RUNTIME_AGE to 0 +# + +# Base version for library. +RUNTIME_BASE_VERSION=1.2 + +# libsilc versions +RUNTIME_CURRENT=1 # prev = 0 +RUNTIME_REVISION=0 # prev = 0 +RUNTIME_AGE=0 # prev = 0 + +# Substitute the version numbers +AC_SUBST(RUNTIME_BASE_VERSION) +AC_SUBST(RUNTIME_CURRENT) +AC_SUBST(RUNTIME_REVISION) +AC_SUBST(RUNTIME_AGE) -# Get CPU + +## +## Installation +## + +# Default installation destination +AC_PREFIX_DEFAULT(/usr/local) +if test "x$prefix" != xNONE; then + silc_prefix="$prefix" +else + silc_prefix="$ac_default_prefix" + prefix="$silc_prefix" +fi + + +## +## Detect CPU +## + +# Disable all CPU feature optimizations +AC_MSG_CHECKING(whether to enable CPU feature optimizations) +AC_ARG_ENABLE(cpu-optimizations, + [ --disable-cpu-optimizations do not use any CPU feature optimizations], + [ + AC_MSG_RESULT(no) + AC_DEFINE([SILC_NO_CPU_OPTIMIZATIONS], [], [SILC_NO_CPU_OPTIMIZATIONS]) + want_cpu_optimizations=false + ], + [ + AC_MSG_RESULT(yes) + want_cpu_optimizations=true + ]) +AM_CONDITIONAL(SILC_NO_CPU_OPTIMIZATIONS, + test x$want_cpu_optimizations = xfalse) + +SILC_SYSTEM_IS_SMP(AC_DEFINE([SILC_SMP], [], [SILC_SMP]), [], + AC_DEFINE([SILC_SMP], [], [SILC_SMP])) cpu_i386=false -cpu_ix86=false +cpu_i486=false +cpu_i586=false +cpu_i686=false +cpu_i786=false cpu_x86_64=false cpu_ppc=false cpu_ia64=false case "$host_cpu" in - i386) + # All following Intels are considered 32-bit CPUs. + i?86) + # All CPUs of today are considered i386 and i486 compatible */ AC_DEFINE([SILC_I386], [], [SILC_I386]) AC_DEFINE([SILC_I486], [], [SILC_I486]) cpu_i386=true - cpu_ix86=true + cpu_i486=true + + if test "x$host_cpu" = "xi586"; then + AC_DEFINE([SILC_I586], [], [SILC_I586]) + cpu_i586=true + fi + + if test "x$host_cpu" = "xi686"; then + AC_DEFINE([SILC_I586], [], [SILC_I586]) + AC_DEFINE([SILC_I686], [], [SILC_I686]) + cpu_i586=true + cpu_i686=true + fi + + if test "x$host_cpu" = "xi786"; then + AC_DEFINE([SILC_I586], [], [SILC_I586]) + AC_DEFINE([SILC_I686], [], [SILC_I686]) + AC_DEFINE([SILC_I786], [], [SILC_I786]) + cpu_i586=true + cpu_i686=true + cpu_i786=true + fi + + # Check for specific CPU features + SILC_CPU_FLAG(mmx, true, AC_DEFINE([SILC_CPU_MMX], [], [SILC_CPU_MMX]), []) + SILC_CPU_FLAG(sse2, true, AC_DEFINE([SILC_CPU_SSE2], [], [SILC_CPU_SSE2]), []) + SILC_CPU_FLAG(pni, true, AC_DEFINE([SILC_CPU_SSE3], [], [SILC_CPU_SSE3]), []) + SILC_CPU_FLAG(ssse3, true, AC_DEFINE([SILC_CPU_SSSE3], [], [SILC_CPU_SSSE3]), []) + SILC_CPU_FLAG(sse4a, true, AC_DEFINE([SILC_CPU_SSE4A], [], [SILC_CPU_SSE4A]), []) + SILC_CPU_FLAG(sse4_1, true, AC_DEFINE([SILC_CPU_SSE41], [], [SILC_CPU_SSE41]), []) + SILC_CPU_FLAG(sse4_2, true, AC_DEFINE([SILC_CPU_SSE42], [], [SILC_CPU_SSE42]), []) + SILC_CPU_FLAG(sse5, true, AC_DEFINE([SILC_CPU_SSE5], [], [SILC_CPU_SSE5]), []) ;; - i?86) - AC_DEFINE([SILC_I486], [], [SILC_I486]) - cpu_ix86=true + + # Intel IA-64, 64-bit CPU (not x86_64 compatible) + ia64) + AC_DEFINE([SILC_IA64], [], [SILC_IA64]) + cpu_ia64=true ;; + + # AMD/Intel x86_64, 64-bit CPU x86_64) AC_DEFINE([SILC_X86_64], [], [SILC_X86_64]) cpu_x86_64=true + + # Check for specific CPU features + SILC_CPU_FLAG(mmx, true, AC_DEFINE([SILC_CPU_MMX], [], [SILC_CPU_MMX]), []) + SILC_CPU_FLAG(sse2, true, AC_DEFINE([SILC_CPU_SSE2], [], [SILC_CPU_SSE2]), []) + SILC_CPU_FLAG(pni, true, AC_DEFINE([SILC_CPU_SSE3], [], [SILC_CPU_SSE3]), []) + SILC_CPU_FLAG(ssse3, true, AC_DEFINE([SILC_CPU_SSSE3], [], [SILC_CPU_SSSE3]), []) + SILC_CPU_FLAG(sse4a, true, AC_DEFINE([SILC_CPU_SSE4A], [], [SILC_CPU_SSE4A]), []) + SILC_CPU_FLAG(sse4_1, true, AC_DEFINE([SILC_CPU_SSE41], [], [SILC_CPU_SSE41]), []) + SILC_CPU_FLAG(sse4_2, true, AC_DEFINE([SILC_CPU_SSE42], [], [SILC_CPU_SSE42]), []) + SILC_CPU_FLAG(sse5, true, AC_DEFINE([SILC_CPU_SSE5], [], [SILC_CPU_SSE5]), []) ;; + + # PowerPC, 32-bit and 64-bit CPUs powerpc*) AC_DEFINE([SILC_POWERPC], [], [SILC_POWERPC]) cpu_ppc=true ;; - ia64) - AC_DEFINE([SILC_IA64], [], [SILC_IA64]) - cpu_ia64=true - ;; esac AM_CONDITIONAL(SILC_I386, test x$cpu_i386 = xtrue) -AM_CONDITIONAL(SILC_I486, test x$cpu_ix86 = xtrue) +AM_CONDITIONAL(SILC_I486, test x$cpu_i486 = xtrue) +AM_CONDITIONAL(SILC_I586, test x$cpu_i586 = xtrue) +AM_CONDITIONAL(SILC_I686, test x$cpu_i686 = xtrue) +AM_CONDITIONAL(SILC_7686, test x$cpu_i786 = xtrue) AM_CONDITIONAL(SILC_X86_64, test x$cpu_x86_64 = xtrue) AM_CONDITIONAL(SILC_POWERPC, test x$cpu_ppc = xtrue) AM_CONDITIONAL(SILC_IA64, test x$cpu_ia64 = xtrue) -# Control compiler optimizations -CFLAGS=`echo $CFLAGS | sed 's/-O[ 0123456789s]*//g'` +if test x$want_cpu_optimizations = xtrue; then + # Set some compiler options based on CPU + if test "x$CC" = "xicc"; then + # ICC flags + if test x$x_have_cpu_sse4_1 = xtrue; then + SILC_ADD_CFLAGS(-axS) + fi + if test x$x_have_cpu_ssse3 = xtrue; then + SILC_ADD_CFLAGS(-axT) + elif test x$x_have_cpu_pni = xtrue; then + SILC_ADD_CFLAGS(-axP) + elif test x$x_have_cpu_sse2 = xtrue; then + SILC_ADD_CFLAGS(-axW) + fi + else + # Other compilers + if test x$x_have_cpu_sse2 = xtrue; then + SILC_ADD_CFLAGS(-msse2) + SILC_ADD_CFLAGS(-ftree-vectorize) + fi + if test x$x_have_cpu_pni = xtrue; then + SILC_ADD_CFLAGS(-msse3) + SILC_ADD_CFLAGS(-ftree-vectorize) + fi + if test x$x_have_cpu_ssse3 = xtrue; then + SILC_ADD_CFLAGS(-mssse3) + SILC_ADD_CFLAGS(-ftree-vectorize) + fi + if test x$x_have_cpu_sse4_1 = xtrue; then + SILC_ADD_CFLAGS(-msse4) + SILC_ADD_CFLAGS(-ftree-vectorize) + fi + if test x$x_have_cpu_sse4_2 = xtrue; then + SILC_ADD_CFLAGS(-msse4) + SILC_ADD_CFLAGS(-ftree-vectorize) + fi + if test x$x_have_cpu_sse5 = xtrue; then + SILC_ADD_CFLAGS(-msse5) + SILC_ADD_CFLAGS(-ftree-vectorize) + fi + fi +fi -AC_PROG_CC -AC_C_INLINE -AC_C_CONST -__SILC_HAVE_PTHREAD="" -__SILC_HAVE_SIM="" -__SILC_ENABLE_DEBUG="" +## +## Put here any platform specific stuff +## -AC_PROG_RANLIB -#ifndef SILC_DIST_TOOLKIT -AC_DISABLE_SHARED -#endif SILC_DIST_TOOLKIT -#ifdef SILC_DIST_INPLACE -AC_DISABLE_SHARED -#endif SILC_DIST_INPLACE -AC_PROG_LIBTOOL +case "$target" in + *-*-linux*) + check_threads=true + CFLAGS=`echo $CFLAGS -D_GNU_SOURCE` + ;; + *-*-freebsd*) + check_threads=true + ;; + *-*-netbsd*) + check_threads=true + ;; + *-*-*bsd*) + check_threads=false + ;; + *-*-*darwin*) + check_threads=true + ;; + *) + check_threads=true + ;; +esac -# Header checking -# + +## +## 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(unistd.h string.h errno.h fcntl.h assert.h execinfo.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 sys/resource.h) AC_CHECK_HEADERS(pwd.h grp.h termcap.h paths.h) -AC_CHECK_HEADERS(ncurses.h signal.h ctype.h utime.h) +AC_CHECK_HEADERS(ncurses.h signal.h ctype.h utime.h dirent.h) AC_CHECK_HEADERS(arpa/inet.h sys/mman.h limits.h termios.h locale.h langinfo.h) -# Data type checking -# + +## +## 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_SUBST(SILC_SIZEOF_LONG_LONG, $ac_cv_sizeof_long_long) AC_CHECK_SIZEOF(long, 0) @@ -135,95 +300,103 @@ AC_CHECK_SIZEOF(char, 0) AC_SUBST(SILC_SIZEOF_CHAR, $ac_cv_sizeof_char) AC_CHECK_SIZEOF(void *, 0) AC_SUBST(SILC_SIZEOF_VOID_P, $ac_cv_sizeof_void_p) +AC_CHECK_TYPES(long long) +AC_CHECK_TYPES(long double) -# Function to check if compiler flag works -# Usage: SILC_ADD_CFLAGS(FLAGS, [ACTION-IF-FAILED]) -AC_DEFUN([SILC_ADD_CFLAGS], -[ tmp_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $1" - AC_MSG_CHECKING(whether $CC accepts $1 flag) - AC_TRY_LINK([], [], [AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no) - CFLAGS="$tmp_CFLAGS" - $2]) - unset tmp_CFLAGS -]) - -# Function to check if compiler flag works, destination specifiable -# Usage: SILC_ADD_CC_FLAGS(VAR, FLAGS, [ACTION-IF-FAILED]) -AC_DEFUN([SILC_ADD_CC_FLAGS], -[ tmp_CFLAGS="$1_CFLAGS" - $1_CFLAGS="${$1_CFLAGS} $2" - AC_MSG_CHECKING(whether $CC accepts $2 flag) - AC_TRY_LINK([], [], [AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no) - $1_CFLAGS="$tmp_CFLAGS" - $3]) - unset tmp_CFLAGS -]) - -# Function and library checking -# -AC_CHECK_FUNC(gethostbyname, [], +# Check for big-endian machines +AC_C_BIGENDIAN + + +## +## Compiler and compiler flag checks +## + +# Disable all compiler optimizations +AC_MSG_CHECKING(whether to enable compiler optimizations) +AC_ARG_ENABLE(optimizations, + [ --disable-optimizations do not use any compiler optimizations], [ - 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(poll select listen bind shutdown close connect setsockopt) -AC_CHECK_FUNCS(setrlimit time ctime utime gettimeofday getrusage) -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 epoll_wait) -AC_CHECK_FUNCS(strchr strstr strcpy strncpy memcpy memset memmove) - -#ifdef SILC_DIST_SIM -# 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_MSG_RESULT(no) + AC_DEFINE([SILC_NO_CC_OPTIMIZATIONS], [], [SILC_NO_CC_OPTIMIZATIONS]) + want_cc_optimizations=false + ], [ - AC_CHECK_LIB(dl, dlopen, - [ - AC_DEFINE([SILC_SIM], [], [HAVE_SIM]) - sim_support=true - LIBS="$LIBS -ldl" - ], - [ - AC_CHECK_LIB(c, dlopen, - [ - AC_DEFINE([SILC_SIM], [], [HAVE_SIM]) - sim_support=true - ]) - ]) - ]) + AC_MSG_RESULT(yes) + want_cc_optimizations=true + ]) +AM_CONDITIONAL(SILC_NO_CC_OPTIMIZATIONS, test x$want_cc_optimizations = xfalse) -AM_CONDITIONAL(SILC_SIM, test x$sim_support = xtrue) -if test x$sim_support = xtrue; then - AC_MSG_RESULT(Enabled SIM support.) - __SILC_HAVE_SIM="#define __SILC_HAVE_SIM 1" +if test "$GCC"; then + # GCC specific options + if test "x$summary_debug" = "xyes"; then + SILC_ADD_CFLAGS(-g) + else + SILC_ADD_CFLAGS(-g) + fi + SILC_ADD_CFLAGS(-Wall -finline-functions) + SILC_ADD_CFLAGS(-Wno-pointer-sign) else - AC_MSG_RESULT(No SIM support found.) + # Other compilers + case "$target" in + alpha*-dec-osf*) + SILC_ADD_CFLAGS(-g3) + ;; + mips*-sgi-irix*) + SILC_ADD_CFLAGS(-g3) + ;; + *) + SILC_ADD_CFLAGS(-g) + ;; + esac + + # Intel C++ Compiler flags + if test "x$CC" = "xicc"; then + SILC_ADD_CFLAGS(-restrict) + SILC_ADD_CFLAGS(-finline-functions) + + # Don't define __GNUC__ except for system includes + SILC_ADD_CFLAGS(-gcc-sys) + fi fi -#endif SILC_DIST_SIM -# lib/contrib conditionals -# -AC_CHECK_HEADER(regex.h, - [ - AC_DEFINE([HAVE_REGEX_H], [], [HAVE_REGEX_H]) - have_regex=1 - ], have_regex=0 -) -AM_CONDITIONAL(HAVE_REGEX, test x$have_regex = x1) +if test x$want_cc_optimizations = xtrue; then + if test "$GCC"; then + # GCC specific options + if test "x$summary_debug" = "xyes"; then + SILC_ADD_CFLAGS(-O) + else + SILC_ADD_CFLAGS(-O2) + fi + else + # Other compilers + case "$target" in + alpha*-dec-osf*) + SILC_ADD_CFLAGS(-O2, SILC_ADD_CFLAGS(-O)) + ;; + mips*-sgi-irix*) + SILC_ADD_CFLAGS(-O2, SILC_ADD_CFLAGS(-O)) + ;; + *) + SILC_ADD_CFLAGS(-O2, SILC_ADD_CFLAGS(-O)) + ;; + esac + fi +fi + +## +## Function and libary checking +## +AC_CHECK_FUNCS(gethostname gethostbyaddr getservbyname getservbyport) +AC_CHECK_FUNCS(poll select listen bind shutdown close connect setsockopt) +AC_CHECK_FUNCS(setrlimit time ctime utime gettimeofday getrusage) +AC_CHECK_FUNCS(chmod fcntl stat fstat getenv putenv strerror) +AC_CHECK_FUNCS(getpid getgid getsid getpgid getpgrp getuid sched_yield) +AC_CHECK_FUNCS(setgroups initgroups nl_langinfo nanosleep) +AC_CHECK_FUNCS(strchr snprintf strstr strcpy strncpy memcpy memset memmove) +AC_CHECK_FUNCS(setenv getenv putenv unsetenv clearenv backtrace) + +# Check getopt_long AC_CHECK_FUNC(getopt_long, [ AC_DEFINE([HAVE_GETOPT_LONG], [], [HAVE_GETOPT_LONG]) @@ -231,137 +404,52 @@ AC_CHECK_FUNC(getopt_long, ], have_getopt_long=0 ) -AC_CHECK_FUNC(getopt, - [ - AC_DEFINE([HAVE_GETOPT], [], [HAVE_GETOPT]) - have_getopt=1 - ], have_getopt=0 -) - -## -## Enable/disable checking -## - -# IPv6 support -# -AC_MSG_CHECKING(whether to enable IPv6 support) -AC_ARG_ENABLE(ipv6, - [ --enable-ipv6 enable IPv6 support], +# Check gethostbyname +AC_CHECK_FUNC(gethostbyname, [], [ - case "${enableval}" in - yes) - want_ipv6=true - check_ipv6=false - summary_ipv6="yes" - AC_DEFINE([HAVE_IPV6], [], [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], [], [HAVE_IPV6]) - AC_MSG_RESULT(yes) - summary_ipv6="yes" - ], - AC_MSG_RESULT(no) + AC_CHECK_LIB(nsl, gethostbyname, LIBS="$LIBS -lnsl") + AC_CHECK_FUNC(res_gethostbyname, [], + AC_CHECK_LIB(resolv, res_gethostbyname, LIBS="$LIBS -lresolv") ) -fi + ]) -# Debug checking -# -AC_MSG_CHECKING(whether to enable debugging) -summary_debug="no" -__SILC_ENABLE_DEBUG="" -AC_ARG_ENABLE(debug, - [ --enable-debug enable debugging], - [ - case "${enableval}" in - yes) - AC_MSG_RESULT(yes) - AC_DEFINE([SILC_DEBUG], [], [enable-debug]) - summary_debug="yes" - __SILC_ENABLE_DEBUG="#define __SILC_ENABLE_DEBUG 1" - ;; - *) - AC_MSG_RESULT(no) - ;; - esac - ], +# Check socket +AC_CHECK_FUNC(socket, [], + AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket") +) + +# Check clock_gettime +AC_CHECK_FUNC(clock_gettime, [], [ - AC_MSG_RESULT(no) + AC_CHECK_LIB(rt, clock_gettime, + [ LIBS="$LIBS -lrt" + AC_DEFINE([HAVE_CLOCK_GETTIME], [], [HAVE_CLOCK_GETTIME])]) ]) -# Disable all assembler optimizations -# -AC_MSG_CHECKING(whether to enable assembler optimizations) -want_asm=true -AC_ARG_ENABLE(asm, - [ --disable-asm do not use assembler optimizations], +# Check for epoll_wait and verify that epoll_create works +AC_CHECK_FUNC(epoll_wait, [ - AC_MSG_RESULT(no) - AC_DEFINE([SILC_NO_ASM], [], [SILC_NO_ASM]) - want_asm=false - ], - [ - AC_MSG_RESULT(yes) - want_asm=true + AC_RUN_IFELSE([AC_LANG_SOURCE( + [ + #include + int main() + { + int ret = epoll_create(5); + if (ret < 0) + return 1; + close(ret); + return 0; + } + ])], + [ + AC_DEFINE([HAVE_EPOLL_WAIT], [1], [HAVE_EPOLL_WAIT]) + ], + ) ]) -AM_CONDITIONAL(SILC_NO_ASM, test x$want_asm = xfalse) -# Check for assembler -# -SILC_ASSEMBLER="" -have_assembler=false -if test x$want_asm = xtrue; then - AC_PATH_PROG([NASM], [nasm], [no]) - if test "x$NASM" != "xno"; then - SILC_ASSEMBLER="$NASM -O2 -felf" - have_assembler=true - fi - - AC_PATH_PROG([YASM], [yasm], [no]) - if test "x$YASM" != "xno"; then - SILC_ASSEMBLER="$YASM -Xgnu -felf" - have_assembler=true - fi -fi -AC_SUBST(SILC_ASSEMBLER) - -## -## va_copy checks -## +# Check for va_copy va_copy=false +__SILC_VA_COPY="#define __SILC_VA_COPY(dest, src) dest = src" AC_MSG_CHECKING(for va_copy) AC_TRY_COMPILE( [ @@ -386,7 +474,7 @@ AC_TRY_COMPILE( } ], [ - AC_DEFINE([HAVE_VA_COPY], [], [HAVE_VA_COPY]) + __SILC_VA_COPY="#define __SILC_VA_COPY(dest, src) va_copy(dest, src)" AC_MSG_RESULT(yes) va_copy=true ], @@ -421,7 +509,7 @@ if test x$va_copy = xfalse; then } ], [ - AC_DEFINE([HAVE___VA_COPY], [], [HAVE___VA_COPY]) + __SILC_VA_COPY="#define __SILC_VA_COPY(dest, src) __va_copy(dest, src)" AC_MSG_RESULT(yes) va_copy=true ], @@ -433,7 +521,7 @@ if test x$va_copy = xfalse; then fi if test x$va_copy = xfalse; then - AC_RUN_IFELSE( + AC_RUN_IFELSE([AC_LANG_SOURCE( [ #include #include @@ -452,375 +540,361 @@ if test x$va_copy = xfalse; then { return t(0, 0xff11); } - ], + ])], [va_copy=false], [ AC_DEFINE([SILC_VA_COPY_ARRAY], [], [SILC_VA_COPY_ARRAY]) + __SILC_VA_COPY="#define __SILC_VA_COPY(dest, src) memmove(dest, src, sizeof(va_list))" ], [va=copy=false] ) fi +AC_SUBST(__SILC_VA_COPY) -## -## Compiler and compiler flag checks -## +# Check for timezone and tm_gmtoff for timezone information +AC_MSG_CHECKING(whether system has timezone) +AC_RUN_IFELSE([AC_LANG_SOURCE( + [ + #include + #include + int main() + { + timezone = 0; + return 0; + } + ])], + [ AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_TIMEZONE], [], [HAVE_TIMEZONE]) ], + [ AC_MSG_RESULT(no) ], + [ AC_MSG_RESULT(no) ] +) +AC_MSG_CHECKING(whether system has tm_gmtoff) +AC_RUN_IFELSE([AC_LANG_SOURCE( + [ + #include + #include + int main() + { + struct tm tm; + tm.tm_gmtoff = 0; + return 0; + } + ])], + [ AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_TM_GMTOFF], [], [HAVE_TM_GMTOFF]) ], + [ AC_MSG_RESULT(no) ], + [ AC_MSG_RESULT(no) ] +) +AC_MSG_CHECKING(whether system has __tm_gmtoff) +AC_RUN_IFELSE([AC_LANG_SOURCE( + [ + #include + #include + int main() + { + struct tm tm; + tm.__tm_gmtoff = 0; + return 0; + } + ])], + [ AC_MSG_RESULT(yes) + AC_DEFINE([HAVE___TM_GMTOFF], [], [HAVE___TM_GMTOFF]) ], + [ AC_MSG_RESULT(no) ], + [ AC_MSG_RESULT(no) ] +) +AC_MSG_CHECKING(whether system has __tm_gmtoff__) +AC_RUN_IFELSE([AC_LANG_SOURCE( + [ + #include + #include + int main() + { + struct tm tm; + tm.__tm_gmtoff__ = 0; + return 0; + } + ])], + [ AC_MSG_RESULT(yes) + AC_DEFINE([HAVE___TM_GMTOFF__], [], [HAVE___TM_GMTOFF__]) ], + [ AC_MSG_RESULT(no) ], + [ AC_MSG_RESULT(no) ] +) -if test "$GCC"; then - # GCC specific options - if test "x$summary_debug" = "xyes"; then - SILC_ADD_CFLAGS(-g -O) - else - SILC_ADD_CFLAGS(-g -O2) - fi - SILC_ADD_CFLAGS(-Wall -finline-functions) - SILC_ADD_CFLAGS(-Wno-pointer-sign) -else - # Other compilers - case "$target" in - alpha*-dec-osf*) - SILC_ADD_CFLAGS(-g3 -O2, SILC_ADD_CFLAGS(-g3 -O, SILC_ADD_CFLAGS(-O))) - ;; - mips*-sgi-irix*) - SILC_ADD_CFLAGS(-g3 -O2, SILC_ADD_CFLAGS(-g3 -O, SILC_ADD_CFLAGS(-O))) - ;; - *) - SILC_ADD_CFLAGS(-g) - SILC_ADD_CFLAGS(-O2, SILC_ADD_CFLAGS(-O)) - ;; - esac +# Check for dlopen() and friends +AC_CHECK_HEADERS(dlfcn.h, + [ + AC_CHECK_LIB(dl, dlopen, + [ + AC_DEFINE([HAVE_DLOPEN], [], [HAVE_DLOPEN]) + LIBS="$LIBS -ldl" + ], + [ + AC_CHECK_LIB(c, dlopen, + [ + AC_DEFINE([HAVE_DLOPEN], [], [HAVE_DLOPEN]) + ]) + ]) + ]) - # Intel C++ Compiler needs -restrict - if test "x$CC" = "xicc"; then - SILC_ADD_CFLAGS(-restrict) +__SILC_ENABLE_DEBUG="" + +runtimever=`echo $VERSION | sed 's/\./ /g'` +maj=0 +min=0 +bld=0 +for v in $runtimever +do + if test $maj -eq 0; then + maj=$v + continue fi -fi + if test $min -eq 0; then + min=$v + continue + fi + if test $bld -eq 0; then + bld=$v + continue + fi +done +__RUNTIME_PACKAGE_VERSION="#define __SILC_RUNTIME_VERSION SILC_VERSION($maj,$min,$bld)" -# -# Workaround a bug in GCC 2.x which causes memory exhaustion -# when compiling sha1 with optimizations on UltraSPARC. -# -FIX_SHA1='#' -if test "$GCC" -a "$host_cpu" = "sparc64"; then - AC_MSG_CHECKING(whether to enable GCC 2.x workaround for SHA1) + +## +## 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], [], [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( [ - #if defined(__sparc64__) && (__GNUC__ == 2) - #else - choke me + #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; ], - [], [ - FIX_SHA1='' + AC_DEFINE([HAVE_IPV6], [], [HAVE_IPV6]) AC_MSG_RESULT(yes) + summary_ipv6="yes" ], AC_MSG_RESULT(no) ) fi -AC_SUBST(FIX_SHA1) -#endif SILC_DIST_COMPILER -## -## Installation -## +# Memory alignment. User can specify what alignment memory allocation and +# SilcStack allocation use. Default is system default alignemnt. +AC_ARG_WITH(alignment, + [ --with-alignment=NUMBER Memory alignment in bytes], + [ + AC_DEFINE_UNQUOTED([SILC_ALIGNMENT], [$withval], [SILC_ALIGNMENT]) + AC_MSG_RESULT(Memory allocation alignment is $withval bytes) + ], + [ + AC_DEFINE([SILC_ALIGNMENT], SILC_SIZEOF_VOID_P, [SILC_ALIGNMENT]) + ]) -# Default installation destination -# -#ifdef SILC_DIST_AUTODIST -AC_PREFIX_DEFAULT(/usr/local) -#else !SILC_DIST_AUTODIST -AC_PREFIX_DEFAULT(/usr/local/silc) -#endif SILC_DIST_AUTODIST -if test "x$prefix" != xNONE; then - silc_prefix="$prefix" -else - silc_prefix="$ac_default_prefix" -fi +# Memory trace checking +__SILC_ENABLE_MEMTRACE="" +AC_MSG_CHECKING(whether to enable memory tracing) +AC_ARG_ENABLE(mem-trace, + [ --enable-mem-trace enable memory tracing], + [ + case "${enableval}" in + yes) + AC_MSG_RESULT(yes) + AC_DEFINE([SILC_MEMTRACE], [], [SILC_MEMTRACE]) + __SILC_ENABLE_MEMTRACE="#define __SILC_ENABLE_MEMTRACE 1" + CFLAGS="$CFLAGS -rdynamic" + PC_CFLAGS="$PC_CFLAGS -rdynamic" + ;; + *) + AC_MSG_RESULT(no) + ;; + esac + ], + AC_MSG_RESULT(no) + ) -#ifndef SILC_DIST_AUTODIST -# etc directory +#ifdef SILC_DIST_INPLACE # -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]]], +# Profiling options (never delivered to distributions) +# +AC_MSG_CHECKING(whether to enable gprof) +AC_ARG_ENABLE(gprof, + [ --enable-gprof enable gprof profiling], [ - case "$withval" in - no|yes) + case "${enableval}" in + yes) + AC_MSG_RESULT(yes) + SILC_ADD_CFLAGS(-pg) + LIBS="$LIBS -pg" ;; *) - ETCDIR="$withval" + AC_MSG_RESULT(no) ;; esac + ], + [ + AC_MSG_RESULT(no) ]) -AC_SUBST(ETCDIR) -AC_DEFINE_UNQUOTED([SILC_ETCDIR], "$ETCDIR", [SILC_ETCDIR]) -# doc directory -# -DOCDIR="$silc_prefix/doc" -AC_ARG_WITH(docdir, - [[ --with-docdir=DIR directory for SILC documentation [PREFIX/doc]]], +AC_MSG_CHECKING(whether to enable gcov) +AC_ARG_ENABLE(gcov, + [ --enable-gcov enable gcov], [ - case "$withval" in - no|yes) + case "${enableval}" in + yes) + AC_MSG_RESULT(yes) + SILC_ADD_CFLAGS(-fprofile-arcs) + LIBS="$LIBS -lgcov" ;; *) - DOCDIR="$withval" + AC_MSG_RESULT(no) ;; esac + ], + [ + AC_MSG_RESULT(no) ]) -AC_SUBST(DOCDIR) -AC_DEFINE_UNQUOTED([SILC_DOCDIR], "$DOCDIR", [SILC_DOCDIR]) -#endif SILC_DIST_AUTODIST - -#ifdef SILC_DIST_COMPILER -## -## With/without checkings -## - -# -# SILC library checking -compile_libs=true -LIBSUBDIR=lib -#ifndef SILC_DIST_TOOLKIT -AC_ARG_WITH(silc-includes, - [ --with-silc-includes=DIR SILC Toolkit includes [search in DIR]], - [ac_silc_includes="$withval"], [ac_silc_includes="no"]) -AC_ARG_WITH(silc-libs, - [ --with-silc-libs=DIR SILC Toolkit libraries [search in DIR]], - [ac_silc_libs="$withval"], [ac_silc_libs="no"]) - -if test -n "$with_silc_includes" || test -n "$with_silc_libs"; then - - # Manually provided libs - if test "$ac_silc_includes" != "no"; then - compile_libs=false - SILC_LIB_INCLUDES="-I$ac_silc_includes" - LIBSUBDIR= - fi - if test "$ac_silc_libs" != "no"; then - compile_libs=false - LIBSUBDIR= - LIBS="$LIBS -L$ac_silc_libs" - fi - - # Check libs to link against - f=`$EGREP __SILC_HAVE_PTHREAD $ac_silc_includes/silc.h` - if test -n "$f"; then - LIBS="$LIBS -lpthread" - check_threads=false - has_threads=true - fi - f=`$EGREP __SILC_HAVE_SIM $ac_silc_includes/silc.h` - if test -n "$f"; then - LIBS="$LIBS -ldl" - fi - -else - # pkg-config check - PKG_CHECK_MODULES(SILC, silc, compile_libs=false, compile_libs=true) -#ifdef SILC_DIST_CLIENTLIB - PKG_CHECK_MODULES(SILCCLIENT, silcclient, compile_libs=false, compile_libs=true) -#endif SILC_DIST_CLIENTLIB -#ifdef SILC_DIST_SERVERLIB - PKG_CHECK_MODULES(SILCSERVER, silcserver, compile_libs=false, compile_libs=true) -#endif SILC_DIST_SERVERLIB - - if test x$compile_libs = xfalse; then - LIBSUBDIR= - LIBS="$LIBS $SILC_LIBS" - CFLAGS="$CFLAGS $SILC_CFLAGS" -#ifdef SILC_DIST_CLIENTLIB - LIBS="$LIBS $SILCCLIENT_LIBS" - CFLAGS="$CFLAGS $SILCCLIENT_CFLAGS" -#endif SILC_DIST_CLIENTLIB -#ifdef SILC_DIST_SERVERLIB - LIBS="$LIBS $SILCSERVER_LIBS" - CFLAGS="$CFLAGS $SILCSERVER_CFLAGS" -#endif SILC_DIST_SERVERLIB - fi -fi -#endif SILC_DIST_TOOLKIT - -AC_SUBST(LIBSUBDIR) - -# 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]]], +AC_MSG_CHECKING(whether to have verbose compilation) +AC_ARG_ENABLE(verbose, + [ --enable-verbose have verbose compilation], [ - case "$withval" in - no) - AC_MSG_RESULT(no) - ;; - *) + case "${enableval}" in + yes) 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" + # Add here any options to give verbose compilation output + SILC_ADD_CFLAGS(-ftree-vectorizer-verbose=2) + ;; + *) + AC_MSG_RESULT(no) ;; esac - - AC_TRY_LINK([], - [ - Rconnect(); - ], [], - [ - AC_MSG_ERROR(Could not find SOCKS4 library.) - LIBS="$SAVE_LIBS" - CFLAGS="$SAVE_CFLAGS" - LDFLAGS="$SAVE_LDFLAGS" - ]) ], + [ AC_MSG_RESULT(no) - ) + ]) +#endif SILC_DIST_INPLACE -# 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[=DIR] with SOCKS5 support [search in DIR/lib and DIR/include]]], +# Debug checking +AC_MSG_CHECKING(whether to enable debugging) +summary_debug="no" +__SILC_ENABLE_DEBUG="" +AC_ARG_ENABLE(debug, + [ --enable-debug enable debugging], [ - case "$withval" in - no) - AC_MSG_RESULT(no) + case "${enableval}" in + yes) + AC_MSG_RESULT(yes) + AC_DEFINE([SILC_DEBUG], [], [enable-debug]) + PC_CFLAGS="$PC_CFLAGS -DSILC_DEBUG" + summary_debug="yes" + __SILC_ENABLE_DEBUG="#define __SILC_ENABLE_DEBUG 1" ;; *) - 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" + AC_MSG_RESULT(no) ;; esac - - AC_TRY_LINK([], - [ - 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], [], [Socks]) - CFLAGS="$CFLAGS -Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dbind=Rbind -Daccept=Raccept -Dlisten=Rlisten -Dselect=Rselect" -fi +# Disable all assembler optimizations +AC_MSG_CHECKING(whether to enable assembler optimizations) +AC_ARG_ENABLE(asm, + [ --disable-asm do not use assembler optimizations], + [ + AC_MSG_RESULT(no) + AC_DEFINE([SILC_NO_ASM], [], [SILC_NO_ASM]) + want_asm=false + ], + [ + AC_MSG_RESULT(yes) + want_asm=true + ]) +AM_CONDITIONAL(SILC_NO_ASM, test x$want_asm = xfalse) + +# Check for assembler +SILC_ASSEMBLER="" +have_assembler=false +if test x$want_asm = xtrue; then + AC_PATH_PROG([NASM], [nasm], [no]) + if test "x$NASM" != "xno"; then + if test x$cpu_x86_64 = xtrue; then + SILC_ASSEMBLER="$NASM -O2 -felf64" + else + SILC_ASSEMBLER="$NASM -O2 -felf" + fi + have_assembler=true + fi -if test "x$socks" = "x5"; then - AC_DEFINE([SOCKS], [], [Socks]) - AC_DEFINE([SOCKS5], [], [Socks5]) - AC_DEFINE([Rconnect], [SOCKSconnect], [Socks]) - AC_DEFINE([Rgetsockname], [SOCKSgetsockname], [Socks]) - AC_DEFINE([Rgetpeername], [SOCKSgetpeername], [Socks]) - AC_DEFINE([Rbind], [SOCKSbind], [Socks]) - AC_DEFINE([Raccept], [SOCKSaccept], [Socks]) - AC_DEFINE([Rlisten], [SOCKSlisten], [Socks]) - AC_DEFINE([Rselect], [SOCKSselect], [Socks]) - AC_DEFINE([Rrecvfrom], [SOCKSrecvfrom], [Socks]) - AC_DEFINE([Rsendto], [SOCKSsendto], [Socks]) - AC_DEFINE([Rrecv], [SOCKSrecv], [Socks]) - AC_DEFINE([Rsend], [SOCKSsend], [Socks]) - AC_DEFINE([Rread], [SOCKSread], [Socks]) - AC_DEFINE([Rwrite], [SOCKSwrite], [Socks]) - AC_DEFINE([Rrresvport], [SOCKSrresvport], [Socks]) - AC_DEFINE([Rshutdown], [SOCKSshutdown], [Socks]) - AC_DEFINE([Rlisten], [SOCKSlisten], [Socks]) - AC_DEFINE([Rclose], [SOCKSclose], [Socks]) - AC_DEFINE([Rdup], [SOCKSdup], [Socks]) - AC_DEFINE([Rdup2], [SOCKSdup2], [Socks]) - AC_DEFINE([Rfclose], [SOCKSfclose], [Socks]) - AC_DEFINE([Rgethostbyname], [SOCKSgethostbyname], [Socks]) + AC_PATH_PROG([YASM], [yasm], [no]) + if test "x$YASM" != "xno"; then + if test x$cpu_x86_64 = xtrue; then + SILC_ASSEMBLER="$YASM -Xgnu -felf64" + else + SILC_ASSEMBLER="$YASM -Xgnu -felf" + fi + have_assembler=true + fi fi +AC_SUBST(SILC_ASSEMBLER) -#ifdef SILC_DIST_MATH -# MP library checking. First check whether user wants to use GMP and use -# it if found. If not or not defined then compile the default 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[=DIR] use GMP instead of SILC Math [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 +## +## With/without checkings +## - LIBS="-lgmp $LIBS" - ;; - esac +LIBSUBDIR=lib +LDFLAGS="-L\$(silc_top_srcdir)/lib $LDFLAGS" - AC_CHECK_LIB(gmp, __gmpz_init, - [ - mp_gmp=true - AC_DEFINE([SILC_MP_GMP], [], [GMP]) - AC_MSG_RESULT(Using GMP as a MP library.) - ], - [ - LIBS="$SAVE_LIBS" - CFLAGS="$SAVE_CFLAGS" - LDFLAGS="$SAVE_LDFLAGS" - ]) - ], - AC_MSG_RESULT(no) - ) +SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/contrib" +SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcutil" +SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silchttp" -AM_CONDITIONAL(SILC_MP_GMP, test x$mp_gmp = xtrue) -AM_CONDITIONAL(SILC_MP_SILCMATH, test x$mp_gmp = xfalse) -if test x$mp_gmp = xfalse; then - AC_DEFINE([SILC_MP_SILCMATH], [], [SILCMATH]) - AC_MSG_RESULT(Using SILC Math as a MP library.) -fi -#endif SILC_DIST_MATH -# iconv support -# +# Check for iconv support check_iconv=true has_iconv=false SAVE_LIBS="$LIBS" @@ -856,7 +930,8 @@ AC_ARG_WITH(iconv, AC_MSG_RESULT(no) AC_CHECK_HEADERS(iconv.h, [ - AC_CHECK_FUNCS(iconv, + # Default check for iconv in C-library + AC_CHECK_FUNCS(iconv iconv_open iconv_close, [ has_iconv=true check_iconv=false @@ -865,6 +940,7 @@ AC_ARG_WITH(iconv, ]) if test x$check_iconv = xtrue; then + # Check for iconv in libiconv installed under /usr AC_MSG_RESULT(Searching for iconv...) # XXX @@ -873,6 +949,10 @@ if test x$check_iconv = xtrue; then AC_CHECK_HEADERS(iconv.h, [ LIBS="$LIBS -liconv" + LDFLAGS="$LDFLAGS -L/usr/lib" + CFLAGS="$CFLAGS -I/usr/include" + CPPLAGS="$CPPFLAGS -I/usr/include" + AC_MSG_CHECKING(for iconv in -liconv) AC_TRY_LINK( [ @@ -907,7 +987,7 @@ if test x$check_iconv = xtrue; then SAVE_LDFLAGS="$LDFLAGS" SAVE_CPPFLAGS="$CPPFLAGS" - for dir in `echo "/usr/local /usr/pkg /usr/contrib"`; do + for dir in `echo "/usr/local /usr/pkg /usr/contrib /opt/local"`; do if test x$has_iconv = xfalse; then AC_MSG_RESULT(searching in $dir...) @@ -965,7 +1045,7 @@ if test x$has_iconv = xtrue; then # (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_CACHE_CHECK([whether this iconv is good enough], ac_cv_iconv_good, AC_TRY_RUN( [ #include @@ -984,23 +1064,22 @@ if test x$has_iconv = xtrue; then } ], [ - ac_iconv_good=yes + ac_cv_iconv_good=yes ], [ - ac_iconv_good=no + ac_cv_iconv_good=no ], [ - ac_iconv_good=yes + ac_cv_iconv_good=yes ]) ) - if test x$ac_iconv_good = xno; then + if test x$ac_cv_iconv_good = xno; then AC_MSG_RESULT(Try using libiconv instead.) fi fi -# POSIX threads support -# +# Check for POSIX threads support 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]]], @@ -1119,14 +1198,69 @@ if test x$has_threads = xtrue; then ;; esac - AC_CHECK_FUNC(pthread_create) + # Check for threads + AC_CHECK_FUNCS(pthread_create pthread_key_create pthread_once) + + # Check for read/write locks + AC_CHECK_FUNC(pthread_rwlock_init, + [ + AC_RUN_IFELSE([AC_LANG_SOURCE( + [ + #include + int main() + { + pthread_rwlock_t rwlock; + pthread_rwlock_init(&rwlock, NULL); + pthread_rwlock_destroy(&rwlock); + return 0; + } + ])], + [], + [ + # Rwlock not defined + CFLAGS="$CFLAGS -D_XOPEN_SOURCE=600" + ] + ) + ], + [ + # Rwlock not defined + CFLAGS="$CFLAGS -D_XOPEN_SOURCE=600" + ]) + AC_DEFINE([SILC_HAVE_PTHREAD], [], [HAVE_PTHREAD]) AC_DEFINE([SILC_THREADS], [], [HAVE_THREAD]) __SILC_HAVE_PTHREAD="#define __SILC_HAVE_PTHREAD 1" + PC_CFLAGS="$PC_CFLAGS -DSILC_THREADS" fi -# Native WIN32 compilation under cygwin -# + +# Check for Expat +AC_ARG_WITH(expat, + [[ --with-expat[=DIR] use Expat XML [search in DIR/include and DIR/lib]]], + [ + case "${withval}" in + no) + ;; + *) + 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_CHECK_HEADERS(expat.h, + [ LIBS="$LIBS -lexpat" ], + [ AC_MSG_ERROR(Expat XML Library is required to compile SRT) ]) + + +## +## Native WIN32 compilation under cygwin +## AC_MSG_CHECKING(whether to compile native WIN32 code) AC_ARG_WITH(win32, [ --with-win32 compile native WIN32 (MinGW) code (-mno-cygwin)], @@ -1139,157 +1273,91 @@ AC_ARG_WITH(win32, ], [ AC_MSG_RESULT(no) + win32_support=false ]) 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) - -#ifdef SILC_DIST_TOOLKIT -# --with-irssi -# -without_irssi=true -AC_MSG_CHECKING(whether to compile Irssi SILC Client) -AC_ARG_WITH(irssi, - [ --with-irssi compile with Irssi SILC Client], - [ - AC_MSG_RESULT(yes) - without_irssi=false - ], - [ - AC_MSG_RESULT(no) - without_irssi=true - ]) -AM_CONDITIONAL(with_irssi, test xwithout_irssi = xfalse) - -# --with-silcd -# -without_silcd=true -AC_MSG_CHECKING(whether to compile SILC Server) -AC_ARG_WITH(silcd, - [ --with-silcd compile with SILC Server], - [ - AC_MSG_RESULT(yes) - without_silcd=false - ], - [ - AC_MSG_RESULT(no) - without_silcd=true - ]) -#endif SILC_DIST_TOOLKIT -#ifdef SILC_DIST_CLIENT -AM_CONDITIONAL(with_irssi, true) -#endif SILC_DIST_CLIENT -#ifdef SILC_DIST_INPLACE -without_irssi=false -without_silcd=false -#endif SILC_DIST_INPLACE - -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", [SILC_ETCDIR]) -#endif SILC_DIST_COMPILER ## -## Misc +## Outputs and substitutions ## -# Make enable-shared aware -AM_CONDITIONAL(SILC_ENABLE_SHARED, test "$enable_shared" = yes) - -SILC_TOP_SRCDIR=`pwd` - -# Included configure scripts -AD_INCLUDE_CONFIGURE - -#ifdef SILC_DIST_COMPILER -# -# Substitutions -# +AC_SUBST(LIBSUBDIR) AC_SUBST(SILC_TOP_SRCDIR) +AC_SUBST(LDFLAGS) AC_SUBST(LIBS) AC_SUBST(SILC_LIB_INCLUDES) -AC_SUBST(__SILC_HAVE_PTHREAD) -AC_SUBST(__SILC_HAVE_SIM) +AC_SUBST(PC_CFLAGS) AC_SUBST(__SILC_ENABLE_DEBUG) +AC_SUBST(__SILC_ENABLE_MEMTRACE) +AC_SUBST(__SILC_HAVE_PTHREAD) +AC_SUBST(__RUNTIME_PACKAGE_VERSION) -# -# 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) +# Native Symbian OS support (disabled by default) +AM_CONDITIONAL(SILC_SYMBIAN, test xfalse = xtrue) + +# Make enable-shared aware +AM_CONDITIONAL(SILC_ENABLE_SHARED, test "$enable_shared" = yes) + +ETCDIR=`eval echo $sysconfdir`;ETCDIR=`eval echo $ETCDIR` +AC_SUBST(ETCDIR) +AC_DEFINE_UNQUOTED([SILC_ETCDIR], "$ETCDIR", [SILC_ETCDIR]) + +DOCDIR=`eval echo $docdir`;DOCDIR=`eval echo $DOCDIR` +AC_SUBST(DOCDIR) +AC_DEFINE_UNQUOTED([SILC_DOCDIR], "$DOCDIR", [SILC_DOCDIR]) INCLUDE_DEFINES_INT="include \$(top_srcdir)/Makefile.defines_int" AC_SUBST(INCLUDE_DEFINES_INT) -#endif SILC_DIST_COMPILER +DATE=`date` +AC_SUBST(DATE) + # # Makefile outputs # AC_CONFIG_FILES( Makefile -#ifdef SILC_DIST_DOC doc/Makefile -#endif SILC_DIST_DOC -#ifdef SILC_DIST_COMPILER +doc/runtime.in/index.html +doc/runtime.in/manual.html Makefile.defines Makefile.defines_int includes/Makefile -includes/silcversion.h -includes/silc.h -#endif SILC_DIST_COMPILER -#ifdef SILC_DIST_APPS apps/Makefile -#endif SILC_DIST_APPS +win32/Makefile ) -#ifdef SILC_DIST_TOOLKIT AC_CONFIG_FILES( -win32/Makefile -win32/libsilc/Makefile -win32/libsilcclient/Makefile -tutorial/Makefile -tutorial/Makefile.defines -tutorial/Makefile.defines_int +lib/Makefile +lib/contrib/Makefile +lib/silcutil/silcruntime.h +lib/silcutil/Makefile +lib/silcutil/tests/Makefile +lib/silcutil/unix/Makefile +lib/silcutil/win32/Makefile +lib/silcutil/symbian/Makefile +lib/silchttp/Makefile +lib/silchttp/tests/Makefile +lib/srt.pc ) -#endif SILC_DIST_TOOLKIT AC_OUTPUT -#ifdef SILC_DIST_COMPILER + +## +## Summary 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 "$PACKAGE Configuration Summary:" -echo "---------------------------" +echo "SILC Runtime Toolkit configuration summary:" +echo "------------------------------------------" echo " Target host ...................: $target" echo " Compiler ......................: $CC" echo " CFLAGS ........................: $CFLAGS" @@ -1302,40 +1370,8 @@ echo " sbin directory ................: $s_sbindir" echo " etc directory .................: $ETCDIR" echo " man directory .................: $s_mandir" echo " doc directory .................: $DOCDIR" -#ifdef SILC_DIST_SIM -echo " SIM directory .................: $MODULESDIR" -#endif SILC_DIST_SIM -#ifdef SILC_DIST_INCLUDES echo " include directory .............: $s_includedir" -#endif SILC_DIST_INCLUDES echo "" - -#ifdef SILC_DIST_TOOLKIT -if test x$without_irssi = xtrue; then - irssi="no" -fi -if test x$without_silcd = xtrue; then - silcd="no" -fi -#endif SILC_DIST_TOOLKIT - -#ifdef SILC_DIST_CLIENT -echo " Compile SILC Client ...........: $irssi" -#endif SILC_DIST_CLIENT - -#ifdef SILC_DIST_SERVER -echo " Compile SILC Server ...........: $silcd" -#endif SILC_DIST_SERVER - -#ifdef SILC_DIST_SIM -if test x$sim_support = xfalse; then - sim_support="no" -else - sim_support="yes" -fi -echo " SIM support ...................: $sim_support" -#endif SILC_DIST_SIM - echo " IPv6 support ..................: $summary_ipv6" if test x$has_iconv = xfalse; then @@ -1352,11 +1388,19 @@ else fi echo " Assembler optimizations .......: $summary_asm" -#ifdef SILC_DIST_MATH -if test x$mp_gmp = xtrue; then - echo " Arithmetic library ............: GMP" +if test x$want_cc_optimizations = xfalse; then + summary_cc_opt="no" +else + summary_cc_opt="yes" +fi +echo " Compiler optimizations ........: $summary_cc_opt" + +if test x$want_cpu_optimizations = xfalse; then + summary_cpu_opt="no" +else + summary_cpu_opt="yes" fi -#endif SILC_DIST_MATH +echo " CPU feature optimizations .....: $summary_cpu_opt" threads="no" if test x$has_threads = xtrue; then @@ -1366,4 +1410,3 @@ echo " Multi-threads support .........: $threads" echo " Debugging enabled .............: $summary_debug" echo "" echo "Compile the sources with 'make' or 'gmake' command." -#endif SILC_DIST_COMPILER