diff options
Diffstat (limited to 'boehm-gc/configure.in')
-rw-r--r-- | boehm-gc/configure.in | 110 |
1 files changed, 83 insertions, 27 deletions
diff --git a/boehm-gc/configure.in b/boehm-gc/configure.in index ec835e11c36..5a0092ecadc 100644 --- a/boehm-gc/configure.in +++ b/boehm-gc/configure.in @@ -1,8 +1,24 @@ +# 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 + dnl Process this file with autoconf to produce configure. AC_INIT(gcj_mlc.c) -BOEHM_CONFIGURE(.) +dnl Can't be done in GC_CONFIGURE because that confuses automake. +AC_CONFIG_AUX_DIR(.) + +GC_CONFIGURE(.) AM_PROG_LIBTOOL @@ -25,9 +41,24 @@ if false; then AC_EXEEXT fi -AC_MSG_CHECKING([for thread model used by GCC]) -THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` -AC_MSG_RESULT([$THREADS]) +AC_MSG_CHECKING([for threads package to use]) +AC_ARG_ENABLE(threads, [ --enable-threads=TYPE choose threading package], + THREADS=$enableval, + [ AC_MSG_CHECKING([for thread model used by GCC]) + THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` + if test -z "$THREADS"; then + THREADS=no + fi + AC_MSG_RESULT([$THREADS])]) + +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] +) INCLUDES=-I${srcdir}/include THREADLIBS= @@ -39,10 +70,28 @@ case "$THREADS" in THREADS=posix THREADLIBS=-lpthread case "$host" in + x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux*) + AC_DEFINE(GC_LINUX_THREADS) + AC_DEFINE(_REENTRANT) + if test "${enable_parallel_mark}"; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + ;; *-*-linux*) - AC_DEFINE(LINUX_THREADS) + AC_DEFINE(GC_LINUX_THREADS) AC_DEFINE(_REENTRANT) ;; + *-*-hpux*) + AC_MSG_WARN("Only HP/UX 11 threads are supported.") + AC_DEFINE(GC_HPUX_THREADS) + AC_DEFINE(_POSIX_C_SOURCE,199506L) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + THREADLIBS="-lpthread -lrt" + ;; *-*-freebsd*) AC_MSG_WARN("FreeBSD does not yet fully support threads with Boehm GC.") AC_DEFINE(FREEBSD_THREADS) @@ -50,11 +99,11 @@ case "$THREADS" in THREADLIBS=-pthread ;; *-*-solaris*) - AC_DEFINE(SOLARIS_THREADS) - AC_DEFINE(_SOLARIS_PTHREADS) + AC_DEFINE(GC_SOLARIS_THREADS) + AC_DEFINE(GC_SOLARIS_PTHREADS) ;; *-*-irix*) - AC_DEFINE(IRIX_THREADS) + AC_DEFINE(GC_IRIX_THREADS) ;; *-*-cygwin*) THREADLIBS= @@ -73,16 +122,7 @@ AC_SUBST(THREADLIBS) AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl") AC_SUBST(EXTRA_TEST_LIBS) -AC_ARG_ENABLE(java-gc, -changequote(<<,>>)dnl -<< --enable-java-gc=TYPE choose garbage collector [boehm]>>, -changequote([,]) - GC=$enableval, - GC=boehm) -target_all= -if test "$GC" = "boehm"; then - target_all=libgcjgc.la -fi +target_all=libgcjgc.la AC_SUBST(target_all) dnl If the target is an eCos system, use the appropriate eCos @@ -162,12 +202,17 @@ dnl We need to override the top-level CFLAGS. This is how we do it. MY_CFLAGS="$CFLAGS" AC_SUBST(MY_CFLAGS) -dnl Define a few things to retarget the library towards -dnl embedded Java. +dnl Include defines that have become de facto standard. +dnl ALL_INTERIOR_POINTERS can be overridden in startup code. AC_DEFINE(SILENT) AC_DEFINE(NO_SIGNALS) +AC_DEFINE(NO_EXECUTE_PERMISSION) +AC_DEFINE(ALL_INTERIOR_POINTERS) + +dnl By default, make the library as general as possible. AC_DEFINE(JAVA_FINALIZATION) AC_DEFINE(GC_GCJ_SUPPORT) +AC_DEFINE(ATOMIC_UNCOLLECTABLE) dnl This is something of a hack. When cross-compiling we turn off dnl some functionality. We also enable the "small" configuration. @@ -179,6 +224,20 @@ if test -n "${with_cross_host}"; then AC_DEFINE(NO_DEBUGGING) fi +AC_ARG_ENABLE(full-debug, +[ --enable-full-debug include full support for pointer backtracing etc.], +[ if test "$enable_full_debug" = "yes"; then + AC_MSG_WARN("Must define GC_DEBUG and use debug alloc. in clients.") + AC_DEFINE(KEEP_BACK_PTRS) + AC_DEFINE(DBG_HDRS_ALL) + case $host in + x86-*-linux* | i586-*-linux* | i686-*-linux* ) + AC_MSG_WARN("Client must not use -fomit-frame-pointer.") + AC_DEFINE(SAVE_CALL_COUNT, 8) + ;; + esac ] + fi) + AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host") if test "${multilib}" = "yes"; then @@ -187,15 +246,12 @@ else multilib_arg= fi -AC_OUTPUT(Makefile, -[ -dnl Put all the -D options in a file. These are required before -dnl boehm-config.h can be included. This is a huge hack brought -dnl about by overall poor structuring of this entire library. +AC_OUTPUT(Makefile, [ +dnl Put all the -D options in a file. echo "$DEFS" > boehm-cflags if test -n "$CONFIG_FILES"; then - ac_file=Makefile . ${boehm_gc_basedir}/../config-ml.in + ac_file=Makefile . ${gc_basedir}/../config-ml.in fi], srcdir=${srcdir} host=${host} @@ -203,7 +259,7 @@ target=${target} with_multisubdir=${with_multisubdir} ac_configure_args="${multilib_arg} ${ac_configure_args}" CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -boehm_gc_basedir=${boehm_gc_basedir} +gc_basedir=${gc_basedir} CC="${CC}" DEFS="$DEFS" ) |