#TODO check cmake detection
IF(CMAKE_USE_PTHREADS_INIT)
SET(SRC ${SRC} pthread_start.c pthread_support.c pthread_stop_world.c thread_local_alloc.c)
- IF( HOST MATCHES .*-.*-aix.*|.*-.*-.*freebsd.*|.*-.*-gnu.*|.*-.*-irix.*|.*-.*-.*linux.*|.*-.*-nacl.*|.*-.*-openbsd.*|.*-.*-osf.*|.*-.*-solaris.*)
- ADD_DEFINITIONS("-DGC_THREADS")
- ADD_DEFINITIONS("-D_REENTRANT")
+ # Common defines for most POSIX platforms.
+ IF( HOST MATCHES .*-.*-aix.*|.*-.*-cygwin.*|.*-.*-darwin.*|.*-.*-.*freebsd.*|.*-.*-gnu.*|.*-.*-hpux11.*|.*-.*-irix.*|.*-.*-.*linux.*|.*-.*-nacl.*|.*-.*-netbsd.*|.*-.*-openbsd.*|.*-.*-osf.*|.*-.*-solaris.*)
+ ADD_DEFINITIONS("-DGC_THREADS -D_REENTRANT")
IF(enable_parallel_mark)
ADD_DEFINITIONS("-DPARALLEL_MARK")
ENDIF(enable_parallel_mark)
ENDIF()
IF ( HOST MATCHES .*-.*-hpux11.*)
MESSAGE("Only HP/UX 11 POSIX threads are supported.")
- ADD_DEFINITIONS("-DGC_THREADS")
ADD_DEFINITIONS("-D_POSIX_C_SOURCE=199506L") #TODO test -DVAR=value. Alternative is COMPILE_DEFINITIONS property
- MESSAGE("Explicit GC_INIT() calls may be required.")
- ADD_DEFINITIONS("-D_REENTRANT") #TODO
- IF(enable_parallel_mark)
- ADD_DEFINITIONS("-DPARALLEL_MARK")
- ENDIF(enable_parallel_mark)
- ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
ENDIF()
IF ( HOST MATCHES .*-.*-hpux10.*)
- MESSAGE("Only HP/UX 11 POSIX threads are supported.")
+ MESSAGE("HP/UX 10 POSIX threads are not supported.")
ENDIF()
IF ( HOST MATCHES .*-.*-netbsd.*)
MESSAGE("Only on NetBSD 2.0 or later.")
- ADD_DEFINITIONS("-DGC_THREADS")
- ADD_DEFINITIONS("-D_REENTRANT")
ADD_DEFINITIONS("-D_PTHREADS")
- IF(enable_parallel_mark)
- ADD_DEFINITIONS("-DPARALLEL_MARK")
- ENDIF(enable_parallel_mark)
- ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
ENDIF()
IF ( HOST MATCHES .*-.*-cygwin.*)
- ADD_DEFINITIONS("-DGC_THREADS")
- IF(enable_parallel_mark)
- ADD_DEFINITIONS("-DPARALLEL_MARK")
- ENDIF(enable_parallel_mark)
- ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
SET(SRC ${SRC} win32_threads.c)
ENDIF()
IF ( HOST MATCHES .*-.*-darwin.*)
- ADD_DEFINITIONS("-DGC_THREADS")
- IF(enable_parallel_mark)
- ADD_DEFINITIONS("-DPARALLEL_MARK")
- ENDIF(enable_parallel_mark)
- ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
- MESSAGE("Explicit GC_INIT() calls may be required.")
SET(SRC ${SRC} darwin_stop_world.c)
#TODO
#darwin_threads=true
;;
posix | pthreads)
THREADS=posix
- AC_CHECK_LIB(pthread, pthread_self, THREADDLLIBS="-lpthread",,)
+ # Common defines for most POSIX platforms.
case "$host" in
- *-*-aix* | *-*-irix* | *-*-*linux* | *-*-nacl*)
+ *-*-aix* | *-*-cygwin* | *-*-darwin* | *-*-freebsd* | *-*-hpux11* | \
+ *-*-irix* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-*linux* | *-*-nacl* | \
+ *-*-netbsd* | *-*-openbsd* | *-*-osf* | *-*-solaris*)
AC_DEFINE(GC_THREADS)
- AC_DEFINE(_REENTRANT)
+ AC_DEFINE([_REENTRANT], [1],
+ [Required define if using POSIX threads.])
if test "${enable_parallel_mark}" != no; then
AC_DEFINE(PARALLEL_MARK)
fi
AC_DEFINE(THREAD_LOCAL_ALLOC)
AC_MSG_WARN("Explicit GC_INIT() calls may be required.")
;;
- *-*-hpux11*)
+ esac
+ AC_CHECK_LIB(pthread, pthread_self, THREADDLLIBS="-lpthread",,)
+ case "$host" in
+ *-*-aix* | *-*-irix* | *-*-*linux* | *-*-nacl*)
+ # The default THREADDLLIBS.
+ ;;
+ *-*-hpux11*)
AC_MSG_WARN("Only HP/UX 11 POSIX threads are supported.")
- AC_DEFINE(GC_THREADS)
AC_DEFINE(_POSIX_C_SOURCE,199506L)
- if test "${enable_parallel_mark}" != no; then
- AC_DEFINE(PARALLEL_MARK)
- fi
- AC_DEFINE(THREAD_LOCAL_ALLOC)
- AC_MSG_WARN("Explicit GC_INIT() calls may be required.")
THREADDLLIBS="-lpthread -lrt"
# HPUX needs REENTRANT for the _r calls.
- AC_DEFINE(_REENTRANT, 1, [Required define if using POSIX threads.])
;;
- *-*-hpux10*)
- AC_MSG_WARN("Only HP-UX 11 POSIX threads are supported.")
- ;;
- *-*-openbsd*)
- AC_DEFINE(GC_THREADS)
- if test "${enable_parallel_mark}" != no; then
- AC_DEFINE(PARALLEL_MARK)
- fi
- AC_DEFINE(THREAD_LOCAL_ALLOC)
- THREADDLLIBS=-pthread
+ *-*-openbsd*)
AM_CFLAGS="$AM_CFLAGS -pthread"
+ THREADDLLIBS=-pthread
;;
- *-*-freebsd*)
- AC_DEFINE(GC_THREADS)
+ *-*-freebsd*)
AM_CFLAGS="$AM_CFLAGS -pthread"
- if test "${enable_parallel_mark}" != no; then
- AC_DEFINE(PARALLEL_MARK)
- fi
- AC_DEFINE(THREAD_LOCAL_ALLOC)
;;
- *-*-kfreebsd*-gnu)
- AC_DEFINE(GC_THREADS)
+ *-*-kfreebsd*-gnu)
AM_CFLAGS="$AM_CFLAGS -pthread"
- THREADDLLIBS=-pthread
- AC_DEFINE(_REENTRANT)
- if test "${enable_parallel_mark}" != no; then
- AC_DEFINE(PARALLEL_MARK)
- fi
- AC_DEFINE(THREAD_LOCAL_ALLOC)
AC_DEFINE(USE_COMPILER_TLS)
+ THREADDLLIBS=-pthread
;;
- *-*-gnu*) # Excluding kfreebsd.
- AC_DEFINE(GC_THREADS)
- AC_DEFINE(_REENTRANT)
- if test "${enable_parallel_mark}" != no; then
- AC_DEFINE(PARALLEL_MARK)
- fi
- AC_DEFINE(THREAD_LOCAL_ALLOC)
+ *-*-gnu*) # Excluding kfreebsd.
+ # The default THREADDLLIBS.
;;
- *-*-netbsd*)
+ *-*-netbsd*)
AC_MSG_WARN("Only on NetBSD 2.0 or later.")
- AC_DEFINE(GC_THREADS)
- AC_DEFINE(_REENTRANT)
AC_DEFINE(_PTHREADS)
- if test "${enable_parallel_mark}" != no; then
- AC_DEFINE(PARALLEL_MARK)
- fi
- AC_DEFINE(THREAD_LOCAL_ALLOC)
THREADDLLIBS="-lpthread -lrt"
;;
- *-*-solaris*)
- AC_DEFINE(GC_THREADS)
- if test "${enable_parallel_mark}" != no; then
- AC_DEFINE(PARALLEL_MARK)
- fi
- AC_DEFINE(THREAD_LOCAL_ALLOC)
+ *-*-solaris*)
# Need to use alternate thread library, otherwise gctest hangs
# on Solaris 8.
multi_os_directory=`$CC -print-multi-os-directory`
THREADDLLIBS="-L/usr/lib/lwp/$multi_os_directory \
-R/usr/lib/lwp/$multi_os_directory -lpthread -lrt"
;;
- *-*-cygwin*)
- AC_DEFINE(GC_THREADS)
- if test "${enable_parallel_mark}" != no; then
- AC_DEFINE(PARALLEL_MARK)
- fi
- AC_DEFINE(THREAD_LOCAL_ALLOC)
+ *-*-cygwin*)
# Cygwin doesn't have a real libpthread, so Libtool can't link
# against it.
THREADDLLIBS=""
win32_threads=true
;;
- *-*-mingw*)
+ *-*-mingw*)
AC_DEFINE(GC_WIN32_PTHREADS)
# Using pthreads-win32 (or other non-Cygwin pthreads) library.
if test "${enable_parallel_mark}" != no; then
THREADDLLIBS="-lpthread"
win32_threads=true
;;
- *-*-darwin*)
- AC_DEFINE(GC_THREADS)
- AC_MSG_WARN("Explicit GC_INIT() calls may be required.")
- # Parallel-mark is not well-tested on Darwin
- if test "${enable_parallel_mark}" != no; then
- AC_DEFINE(PARALLEL_MARK)
- fi
- AC_DEFINE(THREAD_LOCAL_ALLOC)
+ *-*-darwin*)
darwin_threads=true
;;
- *-*-osf*)
- AC_DEFINE(GC_THREADS)
- if test "${enable_parallel_mark}" != no; then
- AC_DEFINE(PARALLEL_MARK)
- fi
- AC_DEFINE(THREAD_LOCAL_ALLOC)
- AC_MSG_WARN("Explicit GC_INIT() calls may be required.")
+ *-*-osf*)
AM_CFLAGS="$AM_CFLAGS -pthread"
THREADDLLIBS="-lpthread -lrt"
;;