| dnl Process this file with autoconf to produce configure. |
| |
| AC_INIT(gc_mark.h) |
| |
| dnl Can't be done in BOEHM_CONFIGURE because that confuses automake. |
| AC_CONFIG_AUX_DIR(..) |
| |
| AC_CANONICAL_SYSTEM |
| |
| BOEHM_CONFIGURE(.) |
| |
| AM_PROG_LIBTOOL |
| |
| dnl We use these options to decide which functions to include. |
| AC_ARG_WITH(target-subdir, |
| [ --with-target-subdir=SUBDIR Configuring with a cross compiler]) |
| AC_ARG_WITH(cross-host, |
| [ --with-cross-host=HOST Configuring with a cross compiler]) |
| |
| AM_MAINTAINER_MODE |
| # automake wants to see AC_EXEEXT. But we don't need it. And having |
| # it is actually a problem, because the compiler we're passed can't |
| # necessarily do a full link. So we fool automake here. |
| if test "x" = "y"; then |
| AC_EXEEXT |
| fi |
| |
| AC_MSG_CHECKING([for threads package to use]) |
| AC_ARG_ENABLE(threads, [ --enable-threads=TYPE choose threading package], |
| THREADS=$enableval, |
| dnl FIXME: figure out native threads to use here. |
| THREADS=no) |
| |
| if test "$THREADS" = yes; then |
| case "$host" in |
| *-*-vxworks*) |
| THREADS=vxworks |
| ;; |
| *-*-linux*) |
| # FIXME: this isn't correct in all cases. |
| THREADS=posix |
| ;; |
| *-*-win*) |
| THREADS=win32 |
| ;; |
| *-*-irix*) |
| # FIXME: for now, choose POSIX, because we implement that. |
| # Later, choose irix threads. |
| THREADS=posix |
| ;; |
| *-*-solaris*) |
| # FIXME: for now, choose POSIX, because we implement that. |
| # Later, choose solaris threads. |
| THREADS=posix |
| ;; |
| *) |
| # For now. |
| THREADS=none |
| ;; |
| esac |
| fi |
| |
| INCLUDES= |
| case "$THREADS" in |
| no | none | single) |
| THREADS=none |
| ;; |
| posix | pthreads) |
| THREADS=posix |
| case "$host" in |
| *-*-linux*) |
| AC_DEFINE(LINUX_THREADS) |
| AC_DEFINE(_REENTRANT) |
| ;; |
| *-*-solaris*) |
| AC_DEFINE(SOLARIS_THREADS) |
| AC_DEFINE(_SOLARIS_PTHREADS) |
| ;; |
| *-*-irix*) |
| AC_DEFINE(IRIX_THREADS) |
| ;; |
| esac |
| ;; |
| qt) |
| AC_DEFINE(QUICK_THREADS) |
| INCLUDES="-I${boehm_gc_basedir}/../qthreads" |
| ;; |
| decosf1 | irix | mach | os2 | solaris | win32 | dce | vxworks) |
| AC_MSG_ERROR(thread package $THREADS not yet supported) |
| ;; |
| *) |
| AC_MSG_ERROR($THREADS is an unknown thread package) |
| ;; |
| esac |
| AC_MSG_RESULT($THREADS) |
| |
| 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 |
| AC_SUBST(target_all) |
| |
| dnl If the target is an eCos system, use the appropriate eCos |
| dnl I/O routines. |
| dnl FIXME: this should not be a local option but a global target |
| dnl system; at present there is no eCos target. |
| TARGET_ECOS="no" |
| AC_ARG_WITH(ecos, |
| [ --with-ecos Enable runtime eCos target support.], |
| TARGET_ECOS="$with_ecos" |
| ) |
| |
| addobjs= |
| CXXINCLUDES= |
| case "$TARGET_ECOS" in |
| no) |
| ;; |
| *) |
| AC_DEFINE(ECOS) |
| CXXINCLUDES="-I${TARGET_ECOS}/include" |
| addobjs="$addobjs ecos.lo" |
| ;; |
| esac |
| AC_SUBST(CXX) |
| |
| AC_SUBST(INCLUDES) |
| AC_SUBST(CXXINCLUDES) |
| |
| machdep= |
| case "$host" in |
| alpha*-*-*) |
| machdep="alpha_mach_dep.lo" |
| ;; |
| 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-*-*) |
| machdep="mips_sgi_mach_dep.lo" |
| AC_DEFINE(NO_EXECUTE_PERMISSION) |
| ;; |
| sparc-sun-solaris2.3*) |
| AC_DEFINE(SUNOS53_SHARED_LIB) |
| ;; |
| esac |
| if test x"$machdep" = x; then |
| machdep="mach_dep.lo" |
| fi |
| addobjs="$addobjs $machdep" |
| AC_SUBST(addobjs) |
| |
| dnl As of 4.13a2, the collector will not properly work on Solaris when |
| dnl built with gcc and -O. So we remove -O in the appropriate case. |
| case "$host" in |
| sparc-sun-solaris2*) |
| if test "$GCC" = yes; then |
| new_CFLAGS= |
| for i in $CFLAGS; do |
| case "$i" in |
| -O*) |
| ;; |
| *) |
| new_CFLAGS="$new_CFLAGS $i" |
| ;; |
| esac |
| done |
| CFLAGS="$new_CFLAGS" |
| fi |
| ;; |
| esac |
| |
| 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. |
| AC_DEFINE(SILENT) |
| AC_DEFINE(NO_SIGNALS) |
| AC_DEFINE(NO_DEBUGGING) |
| AC_DEFINE(JAVA_FINALIZATION) |
| |
| dnl Create boehm-config.h so that libjava can find it. |
| dnl It is required to use gc_priv.h, which is required to write |
| dnl a new marking function. So config.h in this package is |
| dnl poorly named. |
| AC_LINK_FILES(config.h, boehm-config.h) |
| |
| dnl This is something of a hack. When cross-compiling we turn off |
| dnl some functionality. We also enable the "small" configuration. |
| dnl These is only correct when targetting an embedded system. FIXME. |
| if test -n "${with_cross_host}"; then |
| AC_DEFINE(NO_SIGSET) |
| AC_DEFINE(NO_CLOCK) |
| AC_DEFINE(SMALL_CONFIG) |
| fi |
| |
| AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host") |
| |
| if test "${multilib}" = "yes"; then |
| multilib_arg="--enable-multilib" |
| 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. |
| echo "$DEFS" > boehm-cflags |
| |
| if test -n "$CONFIG_FILES"; then |
| ac_file=Makefile . ${boehm_gc_basedir}/../config-ml.in |
| fi], |
| srcdir=${srcdir} |
| host=${host} |
| 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} |
| CC="${CC}" |
| DEFS="$DEFS" |
| ) |