Skip to content

Commit

Permalink
2009-06-06 Zoltan Varga <[email protected]>
Browse files Browse the repository at this point in the history
	* CMakeLists.txt: CMake build file for libgc.

svn path=/trunk/mono/; revision=135599
  • Loading branch information
vargaz committed Jun 6, 2009
1 parent 3ee30c6 commit 32cddb5
Show file tree
Hide file tree
Showing 3 changed files with 248 additions and 1 deletion.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2420,7 +2420,7 @@ if (with_tls STREQUAL "__thread")
ac_define(HAVE_KW_THREAD 1 "Have __thread keyword")
ac_define(USE_COMPILER_TLS 1 "Use __thread for TLS access")
# Pass the information to libgc
### set(CPPFLAGS "$CPPFLAGS -DUSE_COMPILER_TLS")
set(CPPFLAGS "${CPPFLAGS} -DUSE_COMPILER_TLS")
### ac_msg_checking(if the tls_model attribute is supported)
### AC_TRY_COMPILE([static __thread int foo __attribute__((tls_model("initial-exec")));], [
### ], [
Expand Down
243 changes: 243 additions & 0 deletions libgc/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
# based on configure.in/Makefile.am, which is:

# Copyright (c) 1999-2001 by Red Hat, Inc. All rights reserved.
#
# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
# OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
#
# Permission is hereby granted to use or copy this program
# for any purpose, provided the above notices are retained on all copies.
# Permission to modify the code and to distribute modified code is granted,
# provided the above notices are retained, and a notice that the code was
# modified is included with the above copyright notice.
#
# Original author: Tom Tromey
# Modified by: Grzegorz Jakacki <jakacki at acm dot org>

# This is in sync with the configure.in/Makefile.am at r135583

#
# This is a cmake build file for libgc
# Only the functionality needed by mono is supported
#

# FIXME:
set(THREADS pthreads)

# FIXME:
add_definitions("-g -O2")

###THREADS=$with_libgc_threads
###
###AC_ARG_ENABLE(win32-dllmain,
###[ --enable-win32-dllmain Define the DllMain function in win32_threads.c even if the collector is not built as a dll],
###)
###
###AC_ARG_ENABLE(parallel-mark,
###[ --enable-parallel-mark parallelize marking and free list construction],
### [case "$THREADS" in
### no | none | single)
### AC_MSG_ERROR([Parallel mark requires --enable-threads=x spec])
### ;;
### esac]
###)
###
###AC_ARG_ENABLE(cplusplus,
###[ --enable-cplusplus install C++ support],
###)
###

set(THREADDLLIBS "")

if (THREADS STREQUAL "no" OR THREADS STREQUAL "none" OR THREADS STREQUAL "single")
set(THREADS none)
endif()

if (THREADS STREQUAL "posix" OR THREADS STREQUAL "pthreads")
set(THREADS posix)
set(THREADDLLIBS "-lpthread")
if (${host} MATCHES "x86-.*-linux.*|ia64-.*-linux.*|i386-.*-linux.*|i486-.*-linux.*|i586-.*-linux.*|i686-.*-linux.*|x86_64-.*-linux.*|alpha.*-.*-linux.*|s390.*-.*-linux.*|sparc.*-.*-linux.*|powerpc-.*-linux.*")
add_definitions(-DGC_LINUX_THREADS -D_REENTRANT)
set(parallel_mark_supported yes)
add_definitions(-DTHREAD_LOCAL_ALLOC)
elseif(${host} MATCHES ".*-linux.*")
add_definitions(-DGC_LINUX_THREADS -D_REENTRANT)
elseif(${host} MATCHES ".*-aix.*")
add_definitions(-DGC_AIX_THREADS -D_REENTRANT)
elseif(${host} MATCHES ".*-hpux.*")
message("Only HP/UX 11 threads are supported.")
add_definitions(-DGC_HPUX_THREADS -D_REENTRANT -D_POSIX_C_SOURCE=199506L)
add_definitions(-DTHREAD_LOCAL_ALLOC)
set(parallel_mark_supported yes)
set(THREADDLLIBS "-lpthread -lrt")
elseif(${host} ".*-.*-freebsd.*")
add_definitions(-DGC_FREEBSD_THREADS)
message(FATAL_ERROR "todo")
### if test "x$PTHREAD_CFLAGS" != "x"; then
### INCLUDES="$INCLUDES $PTHREAD_CFLAGS"
### fi
### if test "x$PTHREAD_LIBS" = "x"; then
### THREADDLLIBS=-pthread
### else
### THREADDLLIBS="$PTHREAD_LIBS"
### fi
elseif(${host} ".*-.*-freebsd.*")
add_definitions(-DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS)
elseif(${host} ".*-.*-irix.*")
add_definitions(-DGC_IRIX_THREADS)
elseif(${host} ".*-.*-cygwin.*")
add_definitons(-DGC_WIN32_THREADS)
elseif(${host} ".*-.*-darwin.*")
add_definitons(-DGC_DARWIN_THREADS -DTHREAD_LOCAL_ALLOC)
set(parallel_mark_supported yes)
elseif(${host} ".*-.*-netbsd.*")
add_definitions(-DGC_NETBSD_THREADS -DTHREAD_LOCAL_ALLOC)
set(parallel_mark_supported yes)
elseif(${host} ".*-.*-osf.*")
add_definitions(GC_OSF1_THREADS -DTHREAD_LOCAL_ALLOC)
set(parallel_mark_supported yes)
add_definitions(-pthread)
set(THREADDLLIBS "-lpthread -lrt")
else()
message(FATAL_ERROR "Pthreads not supported by the GC on this platform.")
endif()
endif()

if(THREADS STREQUAL "win32")
add_definitions(GC_WIN32_THREADS)
# Wine getenv may not return NULL for missing entry
add_definitions(NO_GETENV)
if (enable_win32_dllmain)
add_definitions(gc_inside_dll)
endif()
endif()

### dgux386)
### THREADS=dgux386
### AC_MSG_RESULT($THREADDLLIBS)
### # Use pthread GCC switch
### THREADDLLIBS=-pthread
### if test "${enable_parallel_mark}" = yes; then
### AC_DEFINE(PARALLEL_MARK)
### fi
### AC_DEFINE(THREAD_LOCAL_ALLOC)
### AC_DEFINE(GC_DGUX386_THREADS)
### AC_DEFINE(DGUX_THREADS)
### # Enable _POSIX4A_DRAFT10_SOURCE with flag -pthread
### INCLUDES="-pthread $INCLUDES"
### ;;
### aix)
### THREADS=posix
### THREADDLLIBS=-lpthread
### AC_DEFINE(GC_AIX_THREADS)
### AC_DEFINE(_REENTRANT)
### ;;
### decosf1|irix|mach|os2|solaris|dce|vxworks)
### AC_MSG_ERROR(thread package $THREADS not yet supported)
### ;;
### *)
### AC_MSG_ERROR($THREADS is an unknown thread package)
### ;;
###esac

if(parallel_mark_supported AND enable_parallel_mark)
add_definitions("-DPARALLEL_MARK")
endif()

# Configuration of machine-dependent code

ac_msg_checking("which machine-dependent code should be used")

###AC_MSG_CHECKING(
###machdep=
###case "$host" in
### alpha-*-openbsd*)
### machdep="alpha_mach_dep.lo"
### if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then
### AC_MSG_WARN(OpenBSD/Alpha without dlopen(). Shared library support is disabled)
### fi
### ;;
### alpha*-*-linux*)
### machdep="alpha_mach_dep.lo"
### ;;
### i?86-*-solaris2.[[89]]|i?86-*-solaris2.1?)
### AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED)
### ;;
### mipstx39-*-elf*)
### machdep="mips_ultrix_mach_dep.lo"
### AC_DEFINE(STACKBASE, __stackbase)
### AC_DEFINE(DATASTART_IS_ETEXT)
### ;;
### mips-dec-ultrix*)
### machdep="mips_ultrix_mach-dep.lo"
### ;;
### mips-nec-sysv*|mips-unknown-sysv*)
### ;;
### mips*-*-linux*)
### ;;
### mips-*-*)
### machdep="mips_sgi_mach_dep.lo"
### AC_DEFINE(NO_EXECUTE_PERMISSION)
### ;;
### sparc-*-netbsd*)
### machdep="sparc_netbsd_mach_dep.lo"
### ;;
### sparc-sun-solaris2.3)
### machdep="sparc_mach_dep.lo"
### AC_DEFINE(SUNOS53_SHARED_LIB)
### ;;
### sparc*-sun-solaris2.*)
### machdep="sparc_mach_dep.lo"
### ;;
### ia64-*-*)
### machdep="mach_dep.lo ia64_save_regs_in_stack.lo"
### ;;
###esac
if(NOT machdep)
set(machdep "mach_dep.c")
endif()
ac_msg_result("${machdep}")

ac_msg_checking("for threads package to use")
ac_msg_result("${THREADS}")

# Include defines that have become de facto standard.
# ALL_INTERIOR_POINTERS can be overridden in startup code.
add_definitions(-DSILENT -DNO_SIGNALS -DNO_EXECUTE_PERMISSION)
# AC_DEFINE(ALL_INTERIOR_POINTERS)

# By default, make the library as general as possible.
add_definitions(-DJAVA_FINALIZATION -DGC_GCJ_SUPPORT -DATOMIC_UNCOLLECTABLE)

add_definitions(-D_IN_LIBGC)

set(SUBDIRS include doc)

foreach(dir ${SUBDIRS})
add_subdirectory(${dir})
endforeach()

set(top_srcdir ../)

# .. is needed for mono/utils/mono-compiler.h
INCLUDE_DIRECTORIES(. .. include)
add_definitions(${CPPFLAGS})

###if POWERPC_DARWIN
###asm_libgc_sources = powerpc_darwin_mach_dep.s
###else
###asm_libgc_sources =
###endif

set(libmonogc_la_SOURCES
allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c
dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c
malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c
obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c
solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c
backgraph.c win32_threads.c
pthread_support.c pthread_stop_world.c darwin_stop_world.c
${asm_libgc_sources} ${machdep})

add_library(monogc-static STATIC ${libmonogc_la_SOURCES})
target_link_libraries (${THREADDLLIBS} ${UNWINDLIBS})
4 changes: 4 additions & 0 deletions libgc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
2009-06-06 Zoltan Varga <[email protected]>

* CMakeLists.txt: CMake build file for libgc.

2009-05-18 Miguel de Icaza <[email protected]>

* include/private/gcconfig.h: Add support for Linux on the PS3
Expand Down

0 comments on commit 32cddb5

Please sign in to comment.