From 1530be84fcd15570f9885c29a8cc94880ecd6d57 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 7 Apr 1999 08:01:42 +0000 Subject: Cygnus/libgcj changes to Boehm GC. From-SVN: r26257 --- boehm-gc/configure.in | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 boehm-gc/configure.in (limited to 'boehm-gc/configure.in') diff --git a/boehm-gc/configure.in b/boehm-gc/configure.in new file mode 100644 index 0000000..224c466 --- /dev/null +++ b/boehm-gc/configure.in @@ -0,0 +1,216 @@ +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(.) + +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*) + THREADS=irix + ;; + *-*-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) + ;; + 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.a +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.o" + ;; +esac +AC_SUBST(CXX) + +AC_SUBST(INCLUDES) +AC_SUBST(CXXINCLUDES) + +machdep= +case "$host" in + mipstx39-*-elf*) + machdep="mips_ultrix_mach_dep.o" + AC_DEFINE(STACKBASE, __stackbase) + AC_DEFINE(DATASTART_IS_ETEXT) + ;; + sparc-sun-solaris2.3*) + AC_DEFINE(SUNOS53_SHARED_LIB) + ;; +esac +if test x"$machdep" = x; then + machdep="mach_dep.o" +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 + +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" +) -- cgit v1.1