summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2017-04-22 18:21:09 +0300
committerIvan Maidanski <ivmai@mail.ru>2017-04-22 18:21:09 +0300
commitc7f2147e1a8a955912dbb87de5d20911c40a6a50 (patch)
tree009af5890b94832c69bef0c02af9d583524012e1 /CMakeLists.txt
parent0ee15072e7624c53261aa50598e2ce5085e76488 (diff)
downloadbdwgc-c7f2147e1a8a955912dbb87de5d20911c40a6a50.tar.gz
Turn on parallel marker by default for all multi-threaded builds
Note: if some target does not support PARALLEL_MARK, it should be fixed (or a workaround should be added). * CMakeLists.txt (enable_parallel_mark): Change default value to ON. * CMakeLists.txt [enable_parallel_mark] (PARALLEL_MARK): Define only along with GC_LINUX_THREADS, or GC_AIX_THREADS, or GC_HPUX_THREADS, or GC_OPENBSD_THREADS, or GC_FREEBSD_THREADS, or GC_NETBSD_THREADS, or GC_SOLARIS_THREADS, or GC_IRIX_THREADS, or GC_THREADS, or GC_DARWIN_THREADS, or GC_OSF1_THREADS. * configure.ac (PARALLEL_MARK): Always define unless threads are disabled or enable_parallel_mark is "no".
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt50
1 files changed, 45 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 049fb02b..2d924b8d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -61,7 +61,7 @@ IF(enable_threads)
SET(LIBS ${LIBS} ${Threads_LIBRARIES})
ENDIF(enable_threads)
-OPTION(enable_parallel_mark "Parallelize marking and free list construction" NO)
+OPTION(enable_parallel_mark "Parallelize marking and free list construction" ON)
#IF(Threads_FOUND)
# ADD_DEFINITIONS("")
@@ -69,10 +69,6 @@ OPTION(enable_parallel_mark "Parallelize marking and free list construction" NO)
# MESSAGE("Parallel mark requires enable_threads ON" )
#ENDIF(Threads_FOUND)
-IF(enable_parallel_mark)
- ADD_DEFINITIONS("-DPARALLEL_MARK")
-ENDIF(enable_parallel_mark)
-
OPTION(enable_cplusplus "install C++ support" NO)
SET(_HOST ${CMAKE_HOST_SYSTEM_PROCESSOR}--${CMAKE_SYSTEM}) #FIXME missing the vendor field.Use lowercase
@@ -87,6 +83,9 @@ IF(CMAKE_USE_PTHREADS_INIT)
IF( HOST MATCHES x86-.*-linux.*|ia64-.*-linux.*|i586-.*-linux.*|i686-.*-linux.*|x86_64-.*-linux.*|alpha-.*-linux.*|sparc.*-.*-linux.*)
ADD_DEFINITIONS("-DGC_LINUX_THREADS")
ADD_DEFINITIONS("-D_REENTRANT")
+ IF(enable_parallel_mark)
+ ADD_DEFINITIONS("-DPARALLEL_MARK")
+ ENDIF(enable_parallel_mark)
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
SET(SRC ${SRC} thread_local_alloc.c)
MESSAGE("Explicit GC_INIT() calls may be required.")
@@ -94,10 +93,16 @@ IF(CMAKE_USE_PTHREADS_INIT)
IF ( HOST MATCHES .*-.*-linux.*)
ADD_DEFINITIONS("-DGC_LINUX_THREADS")
ADD_DEFINITIONS("-D_REENTRANT")
+ IF(enable_parallel_mark)
+ ADD_DEFINITIONS("-DPARALLEL_MARK")
+ ENDIF(enable_parallel_mark)
ENDIF()
IF ( HOST MATCHES .*-.*-aix.*)
ADD_DEFINITIONS("-DGC_AIX_THREADS")
ADD_DEFINITIONS("-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.")
@@ -105,20 +110,32 @@ IF(CMAKE_USE_PTHREADS_INIT)
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)
ENDIF()
IF ( HOST MATCHES .*-.*-hpux10.*)
MESSAGE("Only HP/UX 11 POSIX threads are supported.")
ENDIF()
IF ( HOST MATCHES .*-.*-openbsd.*)
ADD_DEFINITIONS("-DGC_OPENBSD_THREADS")
+ IF(enable_parallel_mark)
+ ADD_DEFINITIONS("-DPARALLEL_MARK")
+ ENDIF(enable_parallel_mark)
ENDIF()
IF ( HOST MATCHES .*-.*-freebsd.*)
MESSAGE("FreeBSD does not yet fully support threads with Boehm GC.")
ADD_DEFINITIONS("-DGC_FREEBSD_THREADS")
+ IF(enable_parallel_mark)
+ ADD_DEFINITIONS("-DPARALLEL_MARK")
+ ENDIF(enable_parallel_mark)
ENDIF()
IF ( HOST MATCHES .*-.*-kfreebsd.*-gnu)
ADD_DEFINITIONS("-DGC_FREEBSD_THREADS")
ADD_DEFINITIONS("-D_REENTRANT")
+ IF(enable_parallel_mark)
+ ADD_DEFINITIONS("-DPARALLEL_MARK")
+ ENDIF(enable_parallel_mark)
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
ADD_DEFINITIONS("-DUSE_COMPILER_TLS")
SET(SRC ${SRC} thread_local_alloc.c)
@@ -126,6 +143,9 @@ IF(CMAKE_USE_PTHREADS_INIT)
IF ( HOST MATCHES .*-.*-gnu.*)
ADD_DEFINITIONS("-DGC_GNU_THREADS")
ADD_DEFINITIONS("-D_REENTRANT")
+ IF(enable_parallel_mark)
+ ADD_DEFINITIONS("-DPARALLEL_MARK")
+ ENDIF(enable_parallel_mark)
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
SET(SRC ${SRC} thread_local_alloc.c)
ENDIF()
@@ -134,9 +154,15 @@ IF(CMAKE_USE_PTHREADS_INIT)
ADD_DEFINITIONS("-DGC_NETBSD_THREADS")
ADD_DEFINITIONS("-D_REENTRANT")
ADD_DEFINITIONS("-D_PTHREADS")
+ IF(enable_parallel_mark)
+ ADD_DEFINITIONS("-DPARALLEL_MARK")
+ ENDIF(enable_parallel_mark)
ENDIF()
IF ( HOST MATCHES .*-.*-solaris.*)
ADD_DEFINITIONS("-DGC_SOLARIS_THREADS")
+ IF(enable_parallel_mark)
+ ADD_DEFINITIONS("-DPARALLEL_MARK")
+ ENDIF(enable_parallel_mark)
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
SET(SRC ${SRC} thread_local_alloc.c)
#TODO
@@ -148,9 +174,15 @@ IF(CMAKE_USE_PTHREADS_INIT)
ENDIF()
IF ( HOST MATCHES .*-.*-irix.*)
ADD_DEFINITIONS("-DGC_IRIX_THREADS")
+ IF(enable_parallel_mark)
+ ADD_DEFINITIONS("-DPARALLEL_MARK")
+ ENDIF(enable_parallel_mark)
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} thread_local_alloc.c)
#TODO
@@ -158,6 +190,9 @@ IF(CMAKE_USE_PTHREADS_INIT)
ENDIF()
IF ( HOST MATCHES .*-.*-darwin.*)
ADD_DEFINITIONS("-DGC_DARWIN_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 thread_local_alloc.c)
@@ -167,6 +202,7 @@ IF(CMAKE_USE_PTHREADS_INIT)
IF ( HOST MATCHES .*-.*-osf*)
ADD_DEFINITIONS("-DGC_OSF1_THREADS")
IF(enable_parallel_mark)
+ ADD_DEFINITIONS("-DPARALLEL_MARK")
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
SET(SRC ${SRC} thread_local_alloc.c)
MESSAGE("Explicit GC_INIT() calls may be required.")
@@ -177,6 +213,9 @@ IF(CMAKE_USE_PTHREADS_INIT)
IF ( HOST MATCHES .*-.*-linux.*)
ADD_DEFINITIONS("-DGC_LINUX_THREADS")
ADD_DEFINITIONS("-D_REENTRANT")
+ IF(enable_parallel_mark)
+ ADD_DEFINITIONS("-DPARALLEL_MARK")
+ ENDIF(enable_parallel_mark)
ENDIF()
ENDIF(CMAKE_USE_PTHREADS_INIT)
@@ -184,6 +223,7 @@ IF(CMAKE_USE_WIN32_THREADS_INIT)
ADD_DEFINITIONS("-DGC_THREADS")
#win32_threads=true TODO
IF(enable_parallel_mark)
+ ADD_DEFINITIONS("-DPARALLEL_MARK")
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
SET(SRC ${SRC} thread_local_alloc.c)
ENDIF()