From: Lubomir Sedlacik Date: Sat, 7 Sep 2002 12:30:22 +0000 (+0000) Subject: introduce --with-pthreads[=DIR], use --without-pthreads to disable threads X-Git-Tag: silc.client.0.9.5~6 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=994441681e6e32488660e9c7c02547346c76a8aa introduce --with-pthreads[=DIR], use --without-pthreads to disable threads support altogether. fix --with-iconv on systems which need to bypass broken native iconv(). be more verbose, cleanups, sort.. --- diff --git a/CHANGES b/CHANGES index fa532993..11270f2f 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,13 @@ +Sat Sep 7 14:22:43 CEST 2002 Lubomir Sedlacik + + * Rewritten check for POSIX threads. Use --with-pthreads[=DIR] + for implied search (not needed on platforms which has native + pthreads library). Use --without-pthreads to disable threads. + Affected file is configure.in.pre + + * Fixed --with-iconv on platforms which need to bypass (broken) + native iconv(). Affected file is configure.in.pre + Sat Sep 7 15:08:13 EEST 2002 Pekka Riikonen * Moved -C option parsing in Irssi SILC client at same time diff --git a/configure.in.pre b/configure.in.pre index 0a481f49..96eadb1d 100644 --- a/configure.in.pre +++ b/configure.in.pre @@ -22,6 +22,9 @@ AC_INIT(includes/silcversion.h) # AC_CANONICAL_SYSTEM case "$target" in + *-*-freebsd*) + check_threads=true + ;; *-*-*bsd*) check_threads=false ;; @@ -118,7 +121,7 @@ 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 pthread_create nl_langinfo) +AC_CHECK_FUNCS(setgroups initgroups nl_langinfo) AC_CHECK_FUNCS(strchr strstr strcpy strncpy memcpy memset memmove) # SIM support checking @@ -126,7 +129,8 @@ AC_CHECK_FUNCS(strchr strstr strcpy strncpy memcpy memset memmove) # XXX This probably needs to be made platform dependant check. # sim_support=false -AC_CHECKING(for SIM support) +AC_MSG_CHECKING(for SIM support) +AC_MSG_RESULT() AC_CHECK_HEADERS(dlfcn.h, AC_CHECK_LIB(dl, dlopen, [ @@ -164,7 +168,7 @@ AM_CONDITIONAL(HAVE_GETOPT_LONG, test x$have_getopt_long = x1) # IPv6 support # -AC_MSG_CHECKING(for IPv6 support) +AC_MSG_CHECKING(whether to enable IPv6 support) AC_ARG_ENABLE(ipv6, [ --enable-ipv6 enable IPv6 support], [ @@ -213,7 +217,7 @@ fi # Debug checking # -AC_MSG_CHECKING(for enabled debugging) +AC_MSG_CHECKING(whether to enable debugging) AC_ARG_ENABLE(debug, [ --enable-debug enable debugging], [ @@ -236,7 +240,7 @@ AC_ARG_ENABLE(debug, # Stack trace checking # -AC_MSG_CHECKING(for enabled stack tracing) +AC_MSG_CHECKING(whether to enable stack tracing) AC_ARG_ENABLE(stack-trace, [ --enable-stack-trace enable memory stack trace], [ @@ -255,117 +259,15 @@ AC_ARG_ENABLE(stack-trace, # Disable all assembler optimizations # +AC_MSG_CHECKING(whether to enable assembler optimizations) AC_ARG_ENABLE(asm, - [ --disable-asm do not use assembler optimizations]) - -# Threads support -# -want_threads=false -AC_ARG_ENABLE(threads, - [ --disable-threads do not compile with multi-thread support], + [ --disable-asm do not use assembler optimizations], [ - case "${enableval}" in - yes) - want_threads=true - check_threads=true - ;; - *) - check_threads=false - ;; - esac - ]) - -if test x$check_threads = xtrue; then -AC_CHECK_HEADERS(pthread.h, - [ - AC_DEFINE(SILC_HAVE_PTHREAD) - want_threads=true + AC_MSG_RESULT(no) ], [ - if test -f /usr/pkg/include/pthread.h ; then - AC_DEFINE(SILC_HAVE_PTHREAD) - want_threads=true - AC_MSG_RESULT(Found pthread.h in /usr/pkg/include/) - CFLAGS="$CFLAGS -I/usr/pkg/include" - elif test -f /usr/contrib/include/pthread.h ; then - AC_DEFINE(SILC_HAVE_PTHREAD) - want_threads=true - AC_MSG_RESULT(Found pthread.h in /usr/contrib/include/) - CFLAGS="$CFLAGS -I/usr/contrib/include" - fi + AC_MSG_RESULT(yes) ]) -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 - LIBS="$TMP_LIBS $LIBS" -fi ## @@ -620,7 +522,7 @@ fi # source tree. # mp_gmp=false -AC_MSG_CHECKING(whether to support GMP) +AC_MSG_CHECKING(whether to search for GMP) AC_ARG_WITH(gmp, [[ --with-gmp[=DIR] use GMP instead of MPI [search in DIR/lib and DIR/include]]], [ @@ -664,44 +566,123 @@ fi # iconv support # +check_iconv=true +has_iconv=false +AC_MSG_CHECKING(whether to implicit search for libiconv) AC_ARG_WITH(iconv, [[ --with-iconv[=DIR] use libiconv [search in DIR/include and DIR/lib]]], [ - 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 - ]) + 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) -AC_CHECK_HEADER(iconv.h, + 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_DEFINE(HAVE_ICONV_H, 1, [Define if you have the iconv.h header.]) - AC_CHECK_FUNC(iconv, ac_iconv_found=1, - [ - 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.]) - ]) - ]) - ]) + 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...) -if test x$ac_iconv_found = x1; then + # 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=true + ]) + ]) +fi + +if test x$check_iconv = xtrue; then + # search for iconv library.. + SAVE_CPPFLAGS="$CPPFLAGS" + SAVE_CFLAGS="$CFLAGS" + SAVE_LDFLAGS="$LDFLAGS" + + for dir in `echo "/usr/local /usr/pkg /usr/contrib"`; do + if test x$has_iconv = xfalse; then + AC_MSG_RESULT(searching in $dir...) + + CPPFLAGS="$SAVE_CPPFLAGS" + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + + if test -d $dir/include; then + CPPFLAGS="$CPPFLAGS -I$dir/include" + CFLAGS="$CFLAGS -I$dir/include" + fi + if test -d $dir/lib; then + LDFLAGS="$LDFLAGS -L$dir/lib" + fi + + # XXX + unset ac_cv_header__iconv_h_ ac_cv_header_iconv_h || true + + AC_CHECK_HEADERS(iconv.h, + [ + LIBS="$LIBS -liconv" + AC_MSG_CHECKING(for iconv in -liconv) + AC_TRY_LINK( + [ + #include + #include + ], + [ + iconv_t cd = iconv_open("", ""); + iconv(cd, NULL, NULL, NULL, NULL); + iconv_close(cd); + ], + [ + echo "yes" + has_iconv=true + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + ], + [ + has_iconv=false + ]) + ]) + fi + done +fi + +if test x$has_iconv = xtrue; then # (1) Some implementations of iconv won't convert from UTF-8 to UTF-8. # (2) In glibc-2.1.2 and earlier there is a bug that messes up ob and # obl when args 2 and 3 are 0 (fixed in glibc-2.1.3). @@ -740,15 +721,133 @@ if test x$ac_iconv_found = x1; then fi fi +# POSIX threads support +# +has_threads=false +AC_MSG_CHECKING(whether to search for POSIX threads) +AC_ARG_WITH(pthreads, + [[ --with-pthreads[=DIR] use POSIX threads [search in DIR/include and DIR/lib]]], + [ + case "${withval}" in + no) + check_threads=false + ;; + *) + if test -d $withval/include; then + CPPFLAGS="$CPPFLAGS -I$withval/include" + CFLAGS="$CFLAGS -I$withval/include" + fi + if test -d $withval/lib; then + LDFLAGS="$LDFLAGS -L$withval/lib" + fi + + check_threads=true + ;; + esac + ]) + +if test x$check_threads = xtrue; then + AC_MSG_RESULT(yes) + AC_CHECK_HEADERS(pthread.h, + [ + SAVE_LIBS="$LIBS" + LIBS="$LIBS -lpthread" + AC_CHECK_LIB(pthread, pthread_attr_init, has_threads=true, + [ + # FreeBSD + case "${target}" in + *-*-freebsd*) + LIBS="$SAVE_LIBS -pthread" + AC_CHECK_LIB(c_r, pthread_attr_init, has_threads=true) + ;; + esac + ]) + ], + [ + # search for pthread library.. + SAVE_CPPFLAGS="$CPPFLAGS" + SAVE_CFLAGS="$CFLAGS" + SAVE_LDFLAGS="$LDFLAGS" + + for dir in `echo "/usr/local /usr/pkg /usr/contrib /usr/pkg/pthreads /usr/local/pthreads"`; do + if test x$has_threads = xfalse; then + AC_MSG_RESULT(searching in $dir...) + + CPPFLAGS="$SAVE_CPPFLAGS" + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + + if test -d $dir/include; then + CPPFLAGS="$CPPFLAGS -I$dir/include" + CFLAGS="$CFLAGS -I$dir/include" + fi + if test -d $dir/lib; then + LDFLAGS="$LDFLAGS -L$dir/lib" + fi + + # XXX + unset ac_cv_header__pthread_h_ ac_cv_header_pthread_h || true + + AC_CHECK_HEADERS(pthread.h, + [ + LIBS="$LIBS -lpthread" + AC_CHECK_LIB(pthread, pthread_attr_init, has_threads=true, + has_threads=false) + ]) + fi + done + ]) +else + AC_MSG_RESULT(no) + has_threads=false +fi + +AM_CONDITIONAL(SILC_THREADS, test x$has_threads = xtrue) +if test x$has_threads = xtrue; then + CFLAGS="$CFLAGS -D_REENTRANT" + + # XXX possibly incomplete + case "${target}" in + *-*-aix*) + CFLAGS="$CFLAGS -D_THREAD_SAFE" + if test x"$GCC" = xyes; then + CFLAGS="$CFLAGS -mthreads" + fi + ;; + *-*-freebsd*) + CFLAGS="$CFLAGS -D_THREAD_SAFE" + ;; + *-*-sysv5uw7*) # UnixWare 7 + if test "$GCC" != "yes"; then + CFLAGS="$CFLAGS -Kthread" + else + CFLAGS="$CFLAGS -pthread" + fi + ;; + *-dg-dgux*) # DG/UX + CFLAGS="$CFLAGS -D_POSIX4A_DRAFT10_SOURCE" + ;; + esac + + AC_CHECK_FUNC(pthread_create) + AC_DEFINE(SILC_HAVE_PTHREAD) + AC_DEFINE(SILC_THREADS) +fi + # Native WIN32 compilation under cygwin # +AC_MSG_CHECKING(whether to compile native WIN32 code) AC_ARG_WITH(win32, [ --with-win32 compile native WIN32 code (-mno-cygwin)], [ + AC_MSG_RESULT(yes) AC_DEFINE(SILC_WIN32) win32_support=true CFLAGS="-mno-cygwin $CFLAGS" LIBS="$LIBS -lwsock32" + ], + [ + AC_MSG_RESULT(no) ]) AM_CONDITIONAL(SILC_WIN32, test x$win32_support = xtrue) @@ -767,21 +866,31 @@ 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) ])