diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2017-04-22 18:21:09 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2017-04-22 18:21:09 +0300 |
commit | c7f2147e1a8a955912dbb87de5d20911c40a6a50 (patch) | |
tree | 009af5890b94832c69bef0c02af9d583524012e1 /CMakeLists.txt | |
parent | 0ee15072e7624c53261aa50598e2ce5085e76488 (diff) | |
download | bdwgc-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.txt | 50 |
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() |