X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=configure.ad;h=3282af2a73ff404fba88d54880310afb6a6fc13c;hb=664ce664330ac8edf9aae688bf279f7b6fedcc17;hp=5d62cf4c5768ea65c1df51fb7c7cf1b661571717;hpb=0f0340b9fbce9704cc7171f8f0104ce9103d2de6;p=silc.git diff --git a/configure.ad b/configure.ad index 5d62cf4c..3282af2a 100644 --- a/configure.ad +++ b/configure.ad @@ -3,8 +3,8 @@ # # Author: Pekka Riikonen # -# Copyright (C) 2000 - 2005 Pekka Riikonen -# +# Copyright (C) 2000 - 2007 Pekka Riikonen +s# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. @@ -36,6 +36,9 @@ case "$target" in *-*-freebsd*) check_threads=true ;; + *-*-netbsd*) + check_threads=true + ;; *-*-*bsd*) check_threads=false ;; @@ -44,6 +47,42 @@ case "$target" in ;; esac +# Get CPU +cpu_i386=false +cpu_ix86=false +cpu_x86_64=false +cpu_ppc=false +cpu_ia64=false +case "$host_cpu" in + i386) + AC_DEFINE([SILC_I386], [], [SILC_I386]) + AC_DEFINE([SILC_I486], [], [SILC_I486]) + cpu_i386=true + cpu_ix86=true + ;; + i?86) + AC_DEFINE([SILC_I486], [], [SILC_I486]) + cpu_ix86=true + ;; + x86_64) + AC_DEFINE([SILC_X86_64], [], [SILC_X86_64]) + cpu_x86_64=true + ;; + 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_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'` @@ -99,6 +138,32 @@ 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 # @@ -116,9 +181,9 @@ 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) -AC_CHECK_FUNCS(strchr strstr strcpy strncpy memcpy memset memmove) +AC_CHECK_FUNCS(getpid getgid getsid getpgid getpgrp getuid sched_yield) +AC_CHECK_FUNCS(setgroups initgroups nl_langinfo nanosleep tzset) +AC_CHECK_FUNCS(strchr snprintf strstr strcpy strncpy memcpy memset memmove) #ifdef SILC_DIST_SIM # SIM support checking @@ -270,40 +335,140 @@ 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 + 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) ## -## Compiler and compiler flag checks +## va_copy checks ## +va_copy=false +AC_MSG_CHECKING(for va_copy) +AC_TRY_COMPILE( + [ + #include + #include + ], + [ + int t(int x, ...) + { + va_list va, cp; + va_start(va, x); + va_copy(cp, va); + if (va_arg(cp, int) != 0xff11) + return 1; + va_end(va); + va_end(cp); + return 0; + } + int main() + { + return t(0, 0xff11); + } + ], + [ + AC_DEFINE([HAVE_VA_COPY], [], [HAVE_VA_COPY]) + AC_MSG_RESULT(yes) + va_copy=true + ], + [ + AC_MSG_RESULT(no) + va_copy=false + ] +) -# 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 -]) +if test x$va_copy = xfalse; then + AC_MSG_CHECKING(for __va_copy) + AC_TRY_COMPILE( + [ + #include + #include + ], + [ + int t(int x, ...) + { + va_list va, cp; + va_start(va, x); + __va_copy(cp, va); + if (va_arg(cp, int) != 0xff11) + return 1; + va_end(va); + va_end(cp); + return 0; + } + int main() + { + return t(0, 0xff11); + } + ], + [ + AC_DEFINE([HAVE___VA_COPY], [], [HAVE___VA_COPY]) + AC_MSG_RESULT(yes) + va_copy=true + ], + [ + AC_MSG_RESULT(no) + va_copy=false + ] + ) +fi -# 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 -]) +if test x$va_copy = xfalse; then + AC_RUN_IFELSE( + [ + #include + #include + int t(int x, ...) + { + va_list va, cp; + va_start(va, x); + cp = va; + if (va_arg(cp, int) != 0xff11) + return 1; + va_end(va); + va_end(cp); + return 0; + } + int main() + { + return t(0, 0xff11); + } + ], + [va_copy=false], + [ + AC_DEFINE([SILC_VA_COPY_ARRAY], [], [SILC_VA_COPY_ARRAY]) + ], + [va=copy=false] + ) +fi + +## +## Compiler and compiler flag checks +## if test "$GCC"; then # GCC specific options @@ -451,13 +616,13 @@ if test -n "$with_silc_includes" || test -n "$with_silc_libs"; then fi # Check libs to link against - f=`$EGREP __SILC_HAVE_PTHREAD $ac_silc_includes/silcincludes.h` + 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/silcincludes.h` + f=`$EGREP __SILC_HAVE_SIM $ac_silc_includes/silc.h` if test -n "$f"; then LIBS="$LIBS -ldl" fi @@ -468,6 +633,9 @@ else #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= @@ -477,6 +645,10 @@ else 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 @@ -952,7 +1124,35 @@ if test x$has_threads = xtrue; then ;; esac + # Check for threads AC_CHECK_FUNC(pthread_create) + + # Check for read/write locks + AC_CHECK_FUNC(pthread_rwlock_init, + [ + AC_RUN_IFELSE( + [ + #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" @@ -975,9 +1175,9 @@ AC_ARG_WITH(win32, ]) AM_CONDITIONAL(SILC_WIN32, test x$win32_support = xtrue) -# Native EPOC support (disabled by default) +# Native Symbian OS support (disabled by default) # -AM_CONDITIONAL(SILC_EPOC, test xfalse = xtrue) +AM_CONDITIONAL(SILC_SYMBIAN, test xfalse = xtrue) # Native BeOS support (disabled by default) # @@ -987,38 +1187,12 @@ AM_CONDITIONAL(SILC_BEOS, test xfalse = xtrue) # 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_SERVER +without_silcd=false +#endif SILC_DIST_SERVER +#ifdef SILC_DIST_CLIENT +AM_CONDITIONAL(with_irssi, true) +#endif SILC_DIST_CLIENT #ifdef SILC_DIST_INPLACE without_irssi=false without_silcd=false @@ -1091,7 +1265,7 @@ Makefile.defines Makefile.defines_int includes/Makefile includes/silcversion.h -includes/silcincludes.h +includes/silc.h #endif SILC_DIST_COMPILER #ifdef SILC_DIST_APPS apps/Makefile @@ -1140,20 +1314,17 @@ echo " include directory .............: $s_includedir" #endif SILC_DIST_INCLUDES echo "" -#ifdef SILC_DIST_TOOLKIT +#ifdef SILC_DIST_CLIENT 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 +if test x$without_silcd = xtrue; then + silcd="no" +fi echo " Compile SILC Server ...........: $silcd" #endif SILC_DIST_SERVER