diff --git a/src/configure.in b/src/configure.in index 087a5aede24cd134b83e904f5d8c652e991f50a2..10111ac2373b6508c5d50965bb418ef4dab34f06 100644 --- a/src/configure.in +++ b/src/configure.in @@ -1,4 +1,4 @@ -AC_REVISION("$Id: configure.in,v 1.204 1998/06/10 19:22:11 hubbe Exp $") +AC_REVISION("$Id: configure.in,v 1.205 1998/06/15 23:05:16 grubba Exp $") AC_INIT(interpret.c) AC_CONFIG_HEADER(machine.h) @@ -795,13 +795,33 @@ int main() LIBS="${OLDLIBS}" ;; - xFreeBSD*) - case `uname -r` in - [[3-9]].*) - # Threads on FreeBSD 3.0 earlier than 1998-06-07 are broken. - LIBS="${OLDLIBS} -pthread" - ;; - esac + xFreeBSD*) + # Threads on FreeBSD earlier than 1998-06-07 are broken. + AC_MSG_CHECKING(if this version of FreeBSD may have working threads) + AC_CACHE_VAL(pike_cv_freebsd_threads, [ + AC_RUN([ +#include <osreldate.h> + +int main(int argc, char **argv) +{ + /* FreeBSD before 226001 and 300000 - 300003 have broken threads. */ + if (__FreeBSD_version < 226001) + return(1); + if (__FreeBSD_version < 300000) + return(0); + if (__FreeBSD_version < 300004) + return(1); + return(0); +} + ], pike_cv_freebsd_threads=yes, pike_cv_freebsd_threads=no, + pike_cv_freebsd_threads=yes) + ]) + if test "x$pike_cv_freebsd_threads" = "xno"; then + AC_MSG_RESULT(no) + else + AC_MSG_RESULT(yes) + LIBS="${OLDLIBS} -pthread" + fi ;; *)