diff --git a/src/CHANGELOG b/src/CHANGELOG index d331e3497..6cc75ee7d 100644 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -74,6 +74,9 @@ ECL 0.9i not mean that everything has been implemented, but it makes the implemented options accessible. + - Included support for multithreading under Windows/Cygwin (Thanks to Arthur + Smyles for pointing out the differences from Linux's pthreads) + * Errors fixed: - The intermediate output of the compiler is written in the directory in which diff --git a/src/aclocal.m4 b/src/aclocal.m4 index a6c73f6d7..f6b1ca940 100644 --- a/src/aclocal.m4 +++ b/src/aclocal.m4 @@ -231,6 +231,8 @@ case "${host_os}" in thehost='cygwin' shared='yes' THREAD_OBJ='' + THREAD_CFLAGS='-D_THREAD_SAFE' + THREAD_LIBS='-lpthread' SHARED_LDFLAGS="-shared ${LDFLAGS}" BUNDLE_LDFLAGS="-shared ${LDFLAGS}" SHAREDPREFIX='' diff --git a/src/configure b/src/configure index 96af79bcb..370537f15 100755 --- a/src/configure +++ b/src/configure @@ -3556,6 +3556,8 @@ case "${host_os}" in thehost='cygwin' shared='yes' THREAD_OBJ='' + THREAD_CFLAGS='-D_THREAD_SAFE' + THREAD_LIBS='-lpthread' SHARED_LDFLAGS="-shared ${LDFLAGS}" BUNDLE_LDFLAGS="-shared ${LDFLAGS}" SHAREDPREFIX='' diff --git a/src/h/config.h.in b/src/h/config.h.in index 6233fbe00..1f8b17b7d 100644 --- a/src/h/config.h.in +++ b/src/h/config.h.in @@ -300,4 +300,11 @@ typedef unsigned @CL_FIXNUM_TYPE@ cl_hashkey; # define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE # define PTHREAD_MUTEX_NORMAL_NP PTHREAD_MUTEX_NORMAL # endif +# if defined(cygwin) +# define PTHREAD_MUTEX_FAST_NP PTHREAD_MUTEX_NORMAL +# define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE +# define PTHREAD_MUTEX_ERRORCHECK_NP PTHREAD_MUTEX_ERRORCHECK +# define PTHREAD_MUTEX_TIMED_NP PTHREAD_MUTEX_NORMAL +# define PTHREAD_MUTEX_ADAPTIVE_NP PTHREAD_MUTEX_NORMAL +# endif #endif