From 644859e16475ab652cd0a9022303b480a6dba2e4 Mon Sep 17 00:00:00 2001 From: jjgarcia Date: Thu, 10 Nov 2005 09:00:37 +0000 Subject: [PATCH] Added support for threads in FreeBSD --- src/aclocal.m4 | 1 + src/c/threads.d | 4 ---- src/configure | 1 + src/h/config.h.in | 8 ++++++++ src/h/ecl.h | 3 --- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/aclocal.m4 b/src/aclocal.m4 index c54a31c1a..9378908c4 100644 --- a/src/aclocal.m4 +++ b/src/aclocal.m4 @@ -198,6 +198,7 @@ case "${host_os}" in ;; freebsd*) thehost='freebsd' + THREAD_LIBS='-lpthread' SHARED_LDFLAGS="-shared ${LDFLAGS}" BUNDLE_LDFLAGS="-shared ${LDFLAGS}" LDRPATH="-Wl,--rpath,~A" diff --git a/src/c/threads.d b/src/c/threads.d index d4b8eea95..72a72917a 100644 --- a/src/c/threads.d +++ b/src/c/threads.d @@ -293,11 +293,7 @@ mp_process_run_function(cl_narg narg, cl_object name, cl_object function, ...) cl_object output; @ pthread_mutexattr_init(&attr); -#if defined(__APPLE__) - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); -#else pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP); -#endif output = cl_alloc_object(t_lock); output->lock.name = name; pthread_mutex_init(&output->lock.mutex, &attr); diff --git a/src/configure b/src/configure index 170b5c67d..ef8fb328d 100755 --- a/src/configure +++ b/src/configure @@ -3512,6 +3512,7 @@ case "${host_os}" in ;; freebsd*) thehost='freebsd' + THREAD_LIBS='-lpthread' SHARED_LDFLAGS="-shared ${LDFLAGS}" BUNDLE_LDFLAGS="-shared ${LDFLAGS}" LDRPATH="-Wl,--rpath,~A" diff --git a/src/h/config.h.in b/src/h/config.h.in index 896632679..03c83779f 100644 --- a/src/h/config.h.in +++ b/src/h/config.h.in @@ -279,3 +279,11 @@ typedef unsigned @CL_FIXNUM_TYPE@ cl_hashkey; #define ECL_ARCHITECTURE "@ARCHITECTURE@" #include "@ECL_FPE_CODE@" + +#if defined(ECL_THREADS) +# if defined(darwin) || defined(freebsd) +# define PTHREAD_MUTEX_ERRORCHECK_NP PTHREAD_MUTEX_ERRORCHECK +# define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE +# define PTHREAD_MUTEX_NORMAL_NP PTHREAD_MUTEX_NORMAL +# endif +#endif diff --git a/src/h/ecl.h b/src/h/ecl.h index db0b225af..cc9493b1b 100644 --- a/src/h/ecl.h +++ b/src/h/ecl.h @@ -48,9 +48,6 @@ typedef unsigned short uint16_t; # endif # else # include -# if defined(__APPLE__) || defined(freebsd) -# define PTHREAD_MUTEX_ERROR_CHECK_NP PTHREAD_MUTEX_ERROR_CHECK_NP -# endif # endif # define start_critical_section() # define end_critical_section()