X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fmm%2Fboehm-gc%2FMakefile.direct;h=810034478bef191bf02a299742a7928b513987f1;hb=c83bff94e40ee0a218a39931af17814d1a42cb5c;hp=23b0ab36dbf9d3fe42eef02314751d1f21ec325b;hpb=10ed66b9005e551f0d9af18b858a9259a3057e4c;p=cacao.git diff --git a/src/mm/boehm-gc/Makefile.direct b/src/mm/boehm-gc/Makefile.direct index 23b0ab36d..810034478 100644 --- a/src/mm/boehm-gc/Makefile.direct +++ b/src/mm/boehm-gc/Makefile.direct @@ -74,9 +74,7 @@ HOSTCFLAGS=$(CFLAGS) # interception can be used on a few platforms. # -DGC_THREADS should set the appropriate one of the below macros, # except -DGC_WIN32_PTHREADS, which must be set explicitly. -# -DGC_SOLARIS_PTHREADS enables support for Solaris pthreads. -# (Clients should also define GC_SOLARIS_THREADS and then include -# gc.h before performing thr_ or dl* or GC_ operations.) +# -DGC_SOLARIS_THREADS enables support for Solaris pthreads. # Must also define -D_REENTRANT. # -DGC_IRIX_THREADS enables support for Irix pthreads. See README.irix. # -DGC_HPUX_THREADS enables support for HP/UX 11 pthreads. @@ -171,7 +169,7 @@ HOSTCFLAGS=$(CFLAGS) # cache footprint. Normally it is best to let this decision be # made automatically depending on platform. # -DMARK_BIT_PER_OBJ requests that a mark bit be allocated for each -# object instead of allocation granule. The opposiet of +# object instead of allocation granule. The opposite of # MARK_BIT_PER_GRANULE. # -DHBLKSIZE=ddd, where ddd is a power of 2 between 512 and 16384, explicitly # sets the heap block size. Each heap block is devoted to a single size and @@ -179,18 +177,18 @@ HOSTCFLAGS=$(CFLAGS) # the most likely page size. Otherwise large values result in more # fragmentation, but generally better performance for large heaps. # -DUSE_MMAP use MMAP instead of sbrk to get new memory. -# Works for Solaris and Irix. +# Works for Linux, FreeBSD, Cygwin, Solaris and Irix. # -DUSE_MUNMAP causes memory to be returned to the OS under the right -# circumstances. This currently disables VM-based incremental collection. -# This is currently experimental, and works only under some Unix, -# Linux and Windows versions. Requires -DUSE_MMAP, even under Windows, -# where USE_MMAP doesn't do anything. +# circumstances. This currently disables VM-based incremental collection +# (except for Win32 with GetWriteWatch available). +# Works under some Unix, Linux and Windows versions. +# Requires -DUSE_MMAP except for Windows. # -DMMAP_STACKS (for Solaris threads) Use mmap from /dev/zero rather than # GC_scratch_alloc() to get stack memory. # -DPRINT_BLACK_LIST Whenever a black list entry is added, i.e. whenever # the garbage collector detects a value that looks almost, but not quite, # like a pointer, print both the address containing the value, and the -# value of the near-bogus-pointer. Can be used to identifiy regions of +# value of the near-bogus-pointer. Can be used to identify regions of # memory that are likely to contribute misidentified pointers. # -DKEEP_BACK_PTRS Add code to save back pointers in debugging headers # for objects allocated with the debugging allocator. If all objects @@ -227,6 +225,7 @@ HOSTCFLAGS=$(CFLAGS) # -DCHECKSUMS reports on erroneously clear dirty bits, and unexpectedly # altered stubborn objects, at substantial performance cost. # Use only for debugging of the incremental collector. +# Not compatible with USE_MUNMAP or threads. # -DGC_GCJ_SUPPORT includes support for gcj (and possibly other systems # that include a pointer to a type descriptor in each allocated object). # Building this way requires an ANSI C compiler. @@ -255,8 +254,7 @@ HOSTCFLAGS=$(CFLAGS) # -DTHREAD_LOCAL_ALLOC defines GC_malloc(), GC_malloc_atomic() # and GC_gcj_malloc() to use a per-thread set of free-lists. # These then allocate in a way that usually does not involve -# acquisition of a global lock. Currently supported only on platforms -# such as Linux that use pthread_support.c. Recommended for multiprocessors. +# acquisition of a global lock. Recommended for multiprocessors. # Requires explicit GC_INIT() call, unless REDIRECT_MALLOC is # defined and GC_malloc is used first. # -DUSE_COMPILER_TLS causes thread local allocation to use compiler-supported @@ -264,9 +262,7 @@ HOSTCFLAGS=$(CFLAGS) # may help performance on recent Linux installations. (It failed for # me on RedHat 8, but appears to work on RedHat 9.) # -DPARALLEL_MARK allows the marker to run in multiple threads. Recommended -# for multiprocessors. Currently requires Linux on X86 or IA64, though -# support for other Posix platforms should be fairly easy to add, -# if the thread implementation is otherwise supported. +# for multiprocessors. # -DNO_GETENV prevents the collector from looking at environment variables. # These may otherwise alter its configuration, or turn off GC altogether. # I don't know of a reason to disable this, except possibly if the @@ -313,13 +309,27 @@ HOSTCFLAGS=$(CFLAGS) # for applications that don't support proper stack unwinding. # -DUSE_PROC_FOR_LIBRARIES Causes the Linux collector to treat writable # memory mappings (as reported by /proc) as roots, if it doesn't have -# otherinformation about them. It no longer traverses dynamic loader +# other information about them. It no longer traverses dynamic loader # data structures to find dynamic library static data. This may be # required for applications that store pointers in mmapped segments without # informaing the collector. But it typically performs poorly, especially # since it will scan inactive but cached NPTL thread stacks completely. # -DNO_PROC_STAT Causes the collector to avoid relying on Linux' # /proc/self/stat. +# -DNO_GETCONTEXT Causes the collector to not assume the existence of +# the getcontext() function on linux-like platforms. This currently +# happens implicitly on Darwin, Hurd, or ARM or MIPS hardware. +# It is explicitly needed for some old versions of FreeBSD. +# -DSTATIC=static Causes various GC_ symbols that could logically be +# declared static to be declared (this is the default if -DNO_DEBUGGING is +# specified). Reduces the number of visible symbols (letting the optimizer +# do its work better), which is probably cleaner, but may make some kinds of +# debugging and profiling harder. +# -DDONT_USE_USER32_DLL (Win32 only) Don't use "user32" DLL import library +# (containing MessageBox() entry); useful for a static GC library. +# -DGC_PREFER_MPROTECT_VDB Choose MPROTECT_VDB manually in case of multiple +# virtual dirty bit strategies are implemented (at present useful on Win32 +# to force MPROTECT_VDB strategy instead of the default GWW_VDB one). # CXXFLAGS= $(CFLAGS) @@ -395,8 +405,7 @@ OTHER_MAKEFILES= OS2_MAKEFILE NT_MAKEFILE NT_THREADS_MAKEFILE gc.mak \ PCR-Makefile SMakefile.amiga Makefile.DLLs \ digimars.mak Makefile.direct NT_STATIC_THREADS_MAKEFILE \ NT_X64_STATIC_THREADS_MAKEFILE NT_X64_THREADS_MAKEFILE \ - configure_atomic_ops.sh -# Makefile and Makefile.direct are copies of each other. + build_atomic_ops.sh build_atomic_ops.sh.cygwin OTHER_FILES= Makefile setjmp_t.c callprocs \ MacProjects.sit.hqx MacOS.c \ @@ -430,8 +439,7 @@ all: gc.a gctest # if AO_INSTALL_DIR doesn't exist, we assume that it is pointing to # the default location, and we need to build $(AO_INSTALL_DIR): - CC=$(CC) $(srcdir)/configure_atomic_ops.sh - cd $(AO_SRC_DIR); $(MAKE) CC=$(CC) install + CC=$(CC) MAKE=$(MAKE) $(srcdir)/build_atomic_ops.sh LEAKFLAGS=$(CFLAGS) -DFIND_LEAK