|
Packit |
d28291 |
#
|
|
Packit |
d28291 |
# Copyright (c) 1994 by Xerox Corporation. All rights reserved.
|
|
Packit |
d28291 |
# Copyright (c) 1996 by Silicon Graphics. All rights reserved.
|
|
Packit |
d28291 |
# Copyright (c) 1998 by Fergus Henderson. All rights reserved.
|
|
Packit |
d28291 |
# Copyright (c) 2000-2010 by Hewlett-Packard Company. All rights reserved.
|
|
Packit |
d28291 |
##
|
|
Packit |
d28291 |
# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
|
|
Packit |
d28291 |
# OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
|
|
Packit |
d28291 |
##
|
|
Packit |
d28291 |
# Permission is hereby granted to use or copy this program
|
|
Packit |
d28291 |
# for any purpose, provided the above notices are retained on all copies.
|
|
Packit |
d28291 |
# Permission to modify the code and to distribute modified code is granted,
|
|
Packit |
d28291 |
# provided the above notices are retained, and a notice that the code was
|
|
Packit |
d28291 |
# modified is included with the above copyright notice.
|
|
Packit |
d28291 |
##
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
#
|
|
Packit |
d28291 |
# get cmake and run:
|
|
Packit |
d28291 |
# cmake -G "Visual Studio 8 2005"
|
|
Packit |
d28291 |
# in the same dir as this file
|
|
Packit |
d28291 |
# this will generate gc.sln
|
|
Packit |
d28291 |
#
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
SET(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
PROJECT(gc)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
INCLUDE(CTest)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-D_CRT_SECURE_NO_DEPRECATE
|
|
Packit |
d28291 |
-DALL_INTERIOR_POINTERS")
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
IF(APPLE)
|
|
Packit |
d28291 |
IF("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "")
|
|
Packit |
d28291 |
SET(CMAKE_OSX_ARCHITECTURES "ppc;i386;x86_64" CACHE STRING "Build architectures for Mac OS X" FORCE)
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
ENDIF(APPLE)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
#LIBATOMIC #TODO
|
|
Packit |
d28291 |
#ADD_LIBRARY(atomic_ops STATIC )
|
|
Packit |
d28291 |
#SET_TARGET_PROPERTIES(atomic_ops PROPERTIES COMPILE_FLAGS -DNO_DEBUGGING)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
#LIBGC
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
INCLUDE_DIRECTORIES(include)
|
|
Packit |
d28291 |
INCLUDE_DIRECTORIES(libatomic_ops/src)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
SET(SRC alloc.c reclaim.c allchblk.c misc.c mach_dep.c os_dep.c
|
|
Packit |
d28291 |
mark_rts.c headers.c mark.c obj_map.c blacklst.c finalize.c
|
|
Packit |
d28291 |
new_hblk.c dbg_mlc.c malloc.c stubborn.c dyn_load.c
|
|
Packit |
d28291 |
typd_mlc.c ptr_chck.c mallocx.c gc_cpp.cc)
|
|
Packit |
d28291 |
SET(LIBS)
|
|
Packit |
d28291 |
OPTION(enable_threads "TODO" NO)
|
|
Packit |
d28291 |
IF(enable_threads)
|
|
Packit |
d28291 |
FIND_PACKAGE(Threads REQUIRED)
|
|
Packit |
d28291 |
MESSAGE("Thread Model: ${CMAKE_THREAD_LIBS_INIT}" )
|
|
Packit |
d28291 |
INCLUDE_DIRECTORIES(${Threads_INCLUDE_DIR})
|
|
Packit |
d28291 |
SET(LIBS ${LIBS} ${Threads_LIBRARIES})
|
|
Packit |
d28291 |
ENDIF(enable_threads)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
OPTION(enable_parallel_mark "Parallelize marking and free list construction" NO)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
#IF(Threads_FOUND)
|
|
Packit |
d28291 |
# ADD_DEFINITIONS("")
|
|
Packit |
d28291 |
#ELSE
|
|
Packit |
d28291 |
# MESSAGE("Parallel mark requires enable_threads ON" )
|
|
Packit |
d28291 |
#ENDIF(Threads_FOUND)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
IF(enable_parallel_mark)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DPARALLEL_MARK")
|
|
Packit |
d28291 |
ENDIF(enable_parallel_mark)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
OPTION(enable_cplusplus "install C++ support" NO)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
SET(_HOST ${CMAKE_HOST_SYSTEM_PROCESSOR}--${CMAKE_SYSTEM}) #FIXME missing the vendor field.Use lowercase
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
STRING(TOLOWER ${_HOST} HOST)
|
|
Packit |
d28291 |
MESSAGE("HOST = ${HOST}")
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
#Thread Detection. Relying on cmake for lib an includes.
|
|
Packit |
d28291 |
#TODO check cmake detection
|
|
Packit |
d28291 |
IF(CMAKE_USE_PTHREADS_INIT)
|
|
Packit |
d28291 |
SET(SRC ${SRC} pthread_start.c pthread_support.c pthread_stop_world.c)
|
|
Packit |
d28291 |
IF( HOST MATCHES x86-.*-linux.*|ia64-.*-linux.*|i586-.*-linux.*|i686-.*-linux.*|x86_64-.*-linux.*|alpha-.*-linux.*|sparc.*-.*-linux.*)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_LINUX_THREADS")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-D_REENTRANT")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
|
|
Packit |
d28291 |
SET(SRC ${SRC} thread_local_alloc.c)
|
|
Packit |
d28291 |
MESSAGE("Explicit GC_INIT() calls may be required.")
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-linux.*)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_LINUX_THREADS")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-D_REENTRANT")
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-aix.*)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_AIX_THREADS")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-D_REENTRANT")
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-hpux11.*)
|
|
Packit |
d28291 |
MESSAGE("Only HP/UX 11 POSIX threads are supported.")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_HPUX_THREADS")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-D_POSIX_C_SOURCE=199506L") #TODO test -DVAR=value. Alternative is COMPILE_DEFINITIONS property
|
|
Packit |
d28291 |
MESSAGE("Explicit GC_INIT() calls may be required.")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-D_REENTRANT") #TODO
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-hpux10.*)
|
|
Packit |
d28291 |
MESSAGE("Only HP/UX 11 POSIX threads are supported.")
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-openbsd.*)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_OPENBSD_THREADS")
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-freebsd.*)
|
|
Packit |
d28291 |
MESSAGE("FreeBSD does not yet fully support threads with Boehm GC.")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_FREEBSD_THREADS")
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-kfreebsd.*-gnu)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_FREEBSD_THREADS")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-D_REENTRANT")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DUSE_COMPILER_TLS")
|
|
Packit |
d28291 |
SET(SRC ${SRC} thread_local_alloc.c)
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-gnu.*)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_GNU_THREADS")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-D_REENTRANT")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
|
|
Packit |
d28291 |
SET(SRC ${SRC} thread_local_alloc.c)
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-netbsd.*)
|
|
Packit |
d28291 |
MESSAGE("Only on NetBSD 2.0 or later.")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_NETBSD_THREADS")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-D_REENTRANT")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-D_PTHREADS")
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-solaris.*)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_SOLARIS_THREADS")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
|
|
Packit |
d28291 |
SET(SRC ${SRC} thread_local_alloc.c)
|
|
Packit |
d28291 |
#TODO
|
|
Packit |
d28291 |
# if test "$GCC" != yes; then
|
|
Packit |
d28291 |
# CFLAGS="$CFLAGS -O"
|
|
Packit |
d28291 |
# need_atomic_ops_asm=true
|
|
Packit |
d28291 |
# fi
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-irix.*)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_IRIX_THREADS")
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-cygwin.*)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_THREADS")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
|
|
Packit |
d28291 |
SET(SRC ${SRC} thread_local_alloc.c win32_threads.c)
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-darwin.*)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_DARWIN_THREADS")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
|
|
Packit |
d28291 |
MESSAGE("Explicit GC_INIT() calls may be required.")
|
|
Packit |
d28291 |
SET(SRC ${SRC} darwin_stop_world.c thread_local_alloc.c)
|
|
Packit |
d28291 |
#TODO
|
|
Packit |
d28291 |
#darwin_threads=true
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-osf.*)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_OSF1_THREADS")
|
|
Packit |
d28291 |
IF(enable_parallel_mark)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
|
|
Packit |
d28291 |
SET(SRC ${SRC} thread_local_alloc.c)
|
|
Packit |
d28291 |
MESSAGE("Explicit GC_INIT() calls may be required.")
|
|
Packit |
d28291 |
# May want to enable it in other cases, too.
|
|
Packit |
d28291 |
# Measurements haven't yet been done.
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
IF ( HOST MATCHES .*-.*-linux.*)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_LINUX_THREADS")
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-D_REENTRANT")
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
ENDIF(CMAKE_USE_PTHREADS_INIT)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
IF(CMAKE_USE_WIN32_THREADS_INIT)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_THREADS")
|
|
Packit |
d28291 |
IF(enable_parallel_mark)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DTHREAD_LOCAL_ALLOC")
|
|
Packit |
d28291 |
SET(SRC ${SRC} thread_local_alloc.c)
|
|
Packit |
d28291 |
ENDIF()
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DEMPTY_GETENV_RESULTS") #TODO test
|
|
Packit |
d28291 |
SET(SRC ${SRC} win32_threads.c)
|
|
Packit |
d28291 |
ENDIF(CMAKE_USE_WIN32_THREADS_INIT)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
OPTION(enable_gcj_support "Support for gcj" NO)
|
|
Packit |
d28291 |
IF(enable_gcj_support)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_GCJ_SUPPORT")
|
|
Packit |
d28291 |
IF(enable_threads)
|
|
Packit |
d28291 |
ADD_DEFINITIONS("-DGC_ENABLE_SUSPEND_THREAD")
|
|
Packit |
d28291 |
ENDIF(enable_threads)
|
|
Packit |
d28291 |
SET(SRC ${SRC} gcj_mlc.c)
|
|
Packit |
d28291 |
ENDIF(enable_gcj_support)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
ADD_LIBRARY( gc-lib STATIC ${SRC})
|
|
Packit |
d28291 |
SET_TARGET_PROPERTIES(gc-lib PROPERTIES
|
|
Packit |
d28291 |
COMPILE_DEFINITIONS GC_NOT_DLL)
|
|
Packit |
d28291 |
#TODO TARGET_LINK_LIBRARIES(... ... ${LIBS})
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
ADD_LIBRARY( gcmt-lib STATIC ${SRC})
|
|
Packit |
d28291 |
SET_TARGET_PROPERTIES(gcmt-lib PROPERTIES
|
|
Packit |
d28291 |
COMPILE_DEFINITIONS GC_NOT_DLL)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
ADD_LIBRARY( gcmt-dll SHARED ${SRC})
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
IF(WIN32)
|
|
Packit |
d28291 |
ADD_EXECUTABLE(cord cord/cordbscs.c cord/cordxtra.c
|
|
Packit |
d28291 |
cord/tests/de.c cord/tests/de_win.c)
|
|
Packit |
d28291 |
SET_TARGET_PROPERTIES(cord PROPERTIES WIN32_EXECUTABLE TRUE)
|
|
Packit |
d28291 |
SET_TARGET_PROPERTIES(cord PROPERTIES
|
|
Packit |
d28291 |
COMPILE_DEFINITIONS GC_NOT_DLL)
|
|
Packit |
d28291 |
TARGET_LINK_LIBRARIES(cord gc-lib)
|
|
Packit |
d28291 |
TARGET_LINK_LIBRARIES(cord gdi32)
|
|
Packit |
d28291 |
ENDIF(WIN32)
|
|
Packit |
d28291 |
|
|
Packit |
d28291 |
ADD_SUBDIRECTORY(tests)
|