X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libjava%2Fconfigure.in;h=81f0d09ef2382bb081324d102a23f611db89daff;hb=e2d342dffa63aea98643515fd3b8c782ee8bd15e;hp=c63b2e1f4def4c5b934ebb3e5b2037ef620f6469;hpb=d62f46048dc8057655482cb07ec238e73b05295a;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libjava/configure.in b/libjava/configure.in index c63b2e1f4de..81f0d09ef23 100644 --- a/libjava/configure.in +++ b/libjava/configure.in @@ -9,7 +9,7 @@ AC_CANONICAL_SYSTEM dnl We use these options to decide which functions to include. AC_ARG_WITH(target-subdir, [ --with-target-subdir=SUBDIR - configuring in a subdirectory]) + configuring in a subdirectory]) AC_ARG_WITH(cross-host, [ --with-cross-host=HOST configuring with a cross compiler]) @@ -17,7 +17,20 @@ LIBGCJ_CONFIGURE(.) AM_CONFIG_HEADER(include/config.h) +# Only use libltdl for native builds. +if test -z "${with_cross_host}"; then + AC_LIBLTDL_CONVENIENCE + AC_LIBTOOL_DLOPEN + DIRLTDL=libltdl + AC_DEFINE(USE_LTDL) + # Sigh. Libtool's macro doesn't do the right thing. + INCLTDL="-I\$(top_srcdir)/libltdl $INCLTDL" +fi +AC_SUBST(INCLTDL) +AC_SUBST(LIBLTDL) +AC_SUBST(DIRLTDL) AM_PROG_LIBTOOL +AC_CONFIG_SUBDIRS($DIRLTDL) if test -z "$with_target_subdir" || test "$with_target_subdir" = "."; then COMPPATH=. @@ -36,6 +49,20 @@ AC_ARG_ENABLE(fast-character, # Nothing , AC_DEFINE(COMPACT_CHARACTER)) +dnl Should the runtime set system properties by examining the +dnl environment variable GCJ_PROPERTIES? +AC_ARG_ENABLE(getenv-properties, +[ --disable-getenv-properties + don't set system properties from GCJ_PROPERTIES]) + +dnl Whether GCJ_PROPERTIES is used depends on the target. +if test -n "$enable_getenv_properties"; then + enable_getenv_properties=${enable_getenv_properties_default-yes} +fi +if test "$enable_getenv_properties" = no; then + AC_DEFINE(DISABLE_GETENV_PROPERTIES) +fi + dnl See if the user has requested runtime debugging. AC_ARG_ENABLE(libgcj-debug, [ --enable-libgcj-debug enable runtime debugging code], @@ -43,13 +70,71 @@ AC_ARG_ENABLE(libgcj-debug, AC_DEFINE(DEBUG) fi) -dnl See if the user has the enterpreter included. +dnl See if the user has the interpreter included. AC_ARG_ENABLE(interpreter, [ --enable-interpreter enable interpreter], if test "$enable_interpreter" = yes; then - AC_DEFINE(INTERPRETER) + # This can also be set in configure.host. + libgcj_interpreter=yes + elif test "$enable_interpreter" = no; then + libgcj_interpreter=no fi) +if test "$libgcj_interpreter" = yes; then + AC_DEFINE(INTERPRETER) +fi + +EXCEPTIONSPEC= +dnl See if we should use setjmp/longjmp exceptions +AC_ARG_ENABLE(sjlj-exceptions, +[ --enable-sjlj-exceptions use setjmp/longjmp exceptions], + if test "$enable_sjlj_exceptions" = yes; then + # This can be set in configure.host. + libgcj_sjlj=yes + fi) + +if test "$libgcj_sjlj" = yes; then + EXCEPTIONSPEC="-fsjlj-exceptions" + AC_DEFINE(SJLJ_EXCEPTIONS) +fi + +FORCELIBGCCSPEC= +dnl Work around libgcc design flaw. +if test "$ac_cv_prog_gnu_ld" = yes; then + FORCELIBGCCSPEC="-u __rethrow -u __frame_state_for -lgcc" +fi + +AC_MSG_CHECKING([for data_start]) +LIBDATASTARTSPEC= +NEEDS_DATA_START= +AC_TRY_LINK([extern int data_start;], [return ((int) &data_start);], + [AC_MSG_RESULT(found it)], + [LIBDATASTARTSPEC="-u data_start libgcjdata.a%s" + NEEDS_DATA_START=yes + AC_MSG_RESULT(missing)]) +AC_SUBST(LIBDATASTARTSPEC) + +dnl See if the user wants to disable java.net. This is the mildly +dnl ugly way that we admit that target-side configuration sucks. +AC_ARG_ENABLE(java-net, +[ --disable-java-net disable java.net]) + +dnl Whether java.net is built by default can depend on the target. +if test -n "$enable_java_net"; then + enable_java_net=${enable_java_net_default-yes} +fi +if test "$enable_java_net" = no; then + AC_DEFINE(DISABLE_JAVA_NET) +fi + +dnl See if the user wants to disable JVMPI support. +AC_ARG_ENABLE(jvmpi, +[ --disable-jvmpi disable JVMPI support]) + +if test "$enable_jvmpi" != no; then + AC_DEFINE(ENABLE_JVMPI) +fi + 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 @@ -63,7 +148,7 @@ TARGET_ECOS="$with_ecos" case "$TARGET_ECOS" in no) FILE_DESCRIPTOR=natFileDescriptorPosix.cc - PROCESS=Posix + PROCESS=${PROCESS-Posix} ;; *) FILE_DESCRIPTOR=natFileDescriptorEcos.cc @@ -97,10 +182,15 @@ AC_LINK_FILES(java/lang/nat${PROCESS}Process.cc, java/lang/natConcreteProcess.cc SYSTEMSPEC= AC_SUBST(SYSTEMSPEC) +LIBGCJTESTSPEC="-L`pwd`/.libs -rpath `pwd`/.libs" +AC_SUBST(LIBGCJTESTSPEC) + AC_ARG_WITH(system-zlib, [ --with-system-zlib use installed libz]) ZLIBSPEC= AC_SUBST(ZLIBSPEC) +ZLIBTESTSPEC= +AC_SUBST(ZLIBTESTSPEC) dnl FIXME: this should be _libs on some hosts. libsubdir=.libs @@ -118,6 +208,8 @@ GCINCS= GCDEPS= GCOBJS= GCSPEC= +JC1GCSPEC= +GCTESTSPEC= case "$GC" in boehm) AC_MSG_RESULT(boehm) @@ -127,6 +219,8 @@ case "$GC" in GCLIBS="$GCDEPS -L\$(here)/../boehm-gc/$libsubdir" GCINCS='-I$(top_srcdir)/../boehm-gc -I$(top_builddir)/../boehm-gc' GCSPEC='-lgcjgc' + JC1GCSPEC='-fuse-boehm-gc' + GCTESTSPEC="-L`pwd`/../boehm-gc/.libs -rpath `pwd`/../boehm-gc/.libs" dnl We also want to pick up some cpp flags required when including dnl boehm-config.h. Yuck. GCINCS="$GCINCS `cat ../boehm-gc/boehm-cflags`" @@ -149,6 +243,8 @@ AC_SUBST(GCINCS) AC_SUBST(GCDEPS) AC_SUBST(GCOBJS) AC_SUBST(GCSPEC) +AC_SUBST(JC1GCSPEC) +AC_SUBST(GCTESTSPEC) AC_LINK_FILES(include/$GCHDR, include/java-gc.h) @@ -202,8 +298,6 @@ case "$THREADS" in ;; esac ;; - qt) - ;; decosf1 | irix | mach | os2 | solaris | win32 | dce | vxworks) AC_MSG_ERROR(thread package $THREADS not yet supported) ;; @@ -229,17 +323,13 @@ case "$THREADS" in # But for now we don't check for it. We just assume you aren't # using MIT pthreads. AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_INIT) - ;; - qt) - THREADDEPS='$(top_builddir)/../qthreads/libgcjcoop.la' - # We include the path to the qthreads build directory. - # See Makefile.am to understand why. - THREADLIBS="$THREADDEPS -L\$(here)/../qthreads/$libsubdir" - THREADSPEC='-lgcjcoop' - THREADOBJS=quick-threads.lo - THREADINCS='-I$(top_srcdir)/../qthreads' - THREADH=quick-threads.h + # If we're using the Boehm GC, then we happen to know that it + # defines _REENTRANT, so we don't bother. Eww. + if test "$GC" != boehm; then + AC_DEFINE(_REENTRANT, 1, [Required define if using POSIX threads]) + fi + AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1, [Required define if using POSIX threads]) ;; none) @@ -258,6 +348,7 @@ AM_CONDITIONAL(USING_GCC, test "$GCC" = yes) CANADIAN=no NULL_TARGET=no +NATIVE=yes # Find eh-common.h and support headers. If we're in the tree with # gcc, then look there. Otherwise look in compat-include. If all else @@ -282,7 +373,6 @@ if test -n "${with_cross_host}"; then AC_DEFINE(HAVE_MEMMOVE) AC_DEFINE(HAVE_MEMCPY) AC_DEFINE(HAVE_STRERROR) - AC_DEFINE(HAVE_CTIME_R) AC_DEFINE(HAVE_GMTIME_R) AC_DEFINE(HAVE_LOCALTIME_R) dnl This is only for POSIX threads. @@ -290,24 +380,35 @@ if test -n "${with_cross_host}"; then dnl We also assume we are using gcc, which provides alloca. AC_DEFINE(HAVE_ALLOCA) - ZLIBSPEC=-lgcj + dnl Assume we do not have getuid and friends. + AC_DEFINE(NO_GETUID) + + ZLIBSPEC=-lzgcj + ZLIBTESTSPEC="-L`pwd`/../zlib/.libs -rpath `pwd`/../zlib/.libs" # If Canadian cross, then don't pick up tools from the build # directory. if test "$build" != "$with_cross_host"; then CANADIAN=yes EH_COMMON_INCLUDE= - GCJ="${target_alias}/gcj" + GCJ="${target_alias}-gcj" else GCJ= fi + NATIVE=no else AC_CHECK_FUNCS(strerror ioctl select fstat open fsync sleep) - AC_CHECK_FUNCS(ctime_r ctime, break) - AC_CHECK_FUNCS(gmtime_r localtime_r readdir_r getpwuid_r) + AC_CHECK_FUNCS(gmtime_r localtime_r readdir_r getpwuid_r getcwd) AC_CHECK_FUNCS(access stat mkdir rename rmdir unlink realpath) + AC_CHECK_FUNCS(iconv nl_langinfo) AC_CHECK_FUNCS(inet_aton inet_addr, break) AC_CHECK_FUNCS(inet_pton uname inet_ntoa) + AC_CHECK_FUNCS(backtrace fork execvp pipe) + AC_CHECK_HEADERS(execinfo.h unistd.h dlfcn.h) + AC_CHECK_LIB(dl, dladdr, [ + AC_DEFINE(HAVE_DLADDR)]) + AC_CHECK_FILES(/proc/self/exe, [ + AC_DEFINE(HAVE_PROC_SELF_EXE)]) AC_CHECK_FUNCS(gethostbyname_r, [ AC_DEFINE(HAVE_GETHOSTBYNAME_R) @@ -338,7 +439,7 @@ else AC_LANG_RESTORE ]) if test "x$libjava_cv_gethostbyname_r_needs_reentrant" = xyes; then - AC_DEFINE(GETHOSTBYNAME_R_NEEDS_REENTRANT, 1, [Define if gethostbyname_r is only declared if _REENTRANT is defined]) + AC_DEFINE(_REENTRANT, 1, [Required define if using POSIX threads]) fi ;; esac @@ -473,6 +574,7 @@ else AC_CHECK_LIB(z, deflate, ZLIBSPEC=-lz, ZLIBSPEC=-lzgcj) else ZLIBSPEC=-lzgcj + ZLIBTESTSPEC="-L`pwd`/../zlib/.libs -rpath `pwd`/../zlib/.libs" fi # On Solaris, and maybe other architectures, the Boehm collector @@ -481,15 +583,32 @@ else AC_CHECK_LIB(dl, main, SYSTEMSPEC="$SYSTEMSPEC -ldl") fi - if test -d "$libgcj_basedir/../gcc/java"; then - GCJ= + if test -z "${with_multisubdir}"; then + builddotdot=. + else +changequote(<<,>>) + builddotdot=`echo ${with_multisubdir} | sed -e 's:[^/][^/]*:..:g'` +changequote([,]) + fi + if test -x "${builddotdot}/../../gcc/gcj"; then + dir="`cd ${builddotdot}/../../gcc && pwd`" + GCJ="$dir/gcj -B`pwd`/ -B$dir/" else CANADIAN=yes NULL_TARGET=yes - GCJ=gcj + GCJ="gcj -B`pwd`/" fi fi +# Create it, so that compile/link tests don't fail +test -f libgcj.spec || touch libgcj.spec +GCJ="$GCJ -I$srcdir" + +LT_AC_PROG_GCJ + +dnl FIXME: cross compilation +AC_CHECK_SIZEOF(void *) + ZLIBS= ZDEPS= ZINCS= @@ -506,23 +625,17 @@ AC_SUBST(ZLIBS) AC_SUBST(ZDEPS) AC_SUBST(ZINCS) AC_SUBST(DIVIDESPEC) +AC_SUBST(EXCEPTIONSPEC) +AC_SUBST(FORCELIBGCCSPEC) AM_CONDITIONAL(CANADIAN, test "$CANADIAN" = yes) AM_CONDITIONAL(NULL_TARGET, test "$NULL_TARGET" = yes) -AM_CONDITIONAL(NATIVE, test "$CANADIAN" = no || test "$NULL_TARGET" = yes) +AM_CONDITIONAL(NATIVE, test "$NATIVE" = yes || test "$NULL_TARGET" = yes) AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host") +AM_CONDITIONAL(NEEDS_DATA_START, test "$NEEDS_DATA_START" = yes && test "$NATIVE" = yes) AC_SUBST(EH_COMMON_INCLUDE) # Determine gcj version number. -if test "$GCJ" = ""; then - if test -z "${with_multisubdir}"; then - builddotdot=. - else - builddotdot=`echo ${with_multisubdir} | sed -e 's:[^/][^/]*:..:g'` - fi - dir="`cd ${builddotdot}/../../gcc && pwd`" - GCJ="$dir/gcj -B$dir/" -fi changequote(<<,>>) gcjvers="`$GCJ -v 2>&1 | sed -n 's/^.*version \([^ ]*\).*$/\1/p'`" changequote([,]) @@ -535,7 +648,8 @@ cat > conftest.java << 'END' public class conftest { } END use_fuse=yes -$GCJ -fuse-divide-subroutine -fsyntax-only conftest.java > /dev/null 2>&1 \ +$GCJ -classpath $srcdir -fuse-divide-subroutine -fsyntax-only \ + conftest.java > /dev/null 2>&1 \ || use_fuse=no rm -f conftest.java if test "$use_fuse" = no; then @@ -545,10 +659,20 @@ AC_MSG_RESULT($use_fuse) AC_SUBST(AM_RUNTESTFLAGS) +dnl Work around a g++ bug. Reported to gcc-bugs@gcc.gnu.org on Jan 22, 2000. +AC_MSG_CHECKING([for g++ -ffloat-store bug]) +save_CFLAGS="$CFLAGS" +CFLAGS="-x c++ -O2 -ffloat-store" +AC_TRY_COMPILE([#include ], , + [AC_MSG_RESULT(no)], + [AC_DEFINE(__NO_MATH_INLINES) + AC_MSG_RESULT(yes)]) +CFLAGS="$save_CFLAGS" + dnl We check for sys/filio.h because Solaris 2.5 defines FIONREAD there. dnl On that system, sys/ioctl.h will not include sys/filio.h unless dnl BSD_COMP is defined; just including sys/filio.h is simpler. -AC_CHECK_HEADERS(unistd.h bstring.h sys/time.h sys/types.h fcntl.h sys/ioctl.h sys/filio.h sys/stat.h sys/select.h sys/socket.h netinet/in.h arpa/inet.h netdb.h pwd.h sys/config.h inttypes.h stdint.h) +AC_CHECK_HEADERS(unistd.h bstring.h sys/time.h sys/types.h fcntl.h sys/ioctl.h sys/filio.h sys/stat.h sys/select.h sys/socket.h netinet/in.h arpa/inet.h netdb.h pwd.h sys/config.h inttypes.h stdint.h langinfo.h) dnl We avoid AC_HEADER_DIRENT since we really only care about dirent.h dnl for now. If you change this, you also must update natFile.cc. AC_CHECK_HEADERS(dirent.h) @@ -581,7 +705,8 @@ AC_TRY_COMPILE([#include ], [struct sockaddr_in6 addr6;], [AC_MSG_RESULT(no)]) AC_MSG_CHECKING([for socklen_t in sys/socket.h]) -AC_TRY_COMPILE([#include ], [socklen_t x = 5;], +AC_TRY_COMPILE([#include +#include ], [socklen_t x = 5;], [AC_DEFINE(HAVE_SOCKLEN_T) AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)]) @@ -604,18 +729,31 @@ AC_FUNC_ALLOCA AC_CHECK_PROGS(PERL, perl, false) +SYSDEP_SOURCES= + case "${host}" in - i?86-*-linux*) + i?86-*-linux*) SIGNAL_HANDLER=include/i386-signal.h - ;; - sparc-sun-solaris*) + ;; + sparc-sun-solaris*) SIGNAL_HANDLER=include/sparc-signal.h - ;; - *) + ;; + ia64-*) + SYSDEP_SOURCES=sysdep/ia64.c + test -d sysdep || mkdir sysdep + ;; + *) SIGNAL_HANDLER=include/default-signal.h - ;; + ;; esac +# If we're using sjlj exceptions, forget what we just learned. +if test "$libgcj_sjlj" = yes; then + SIGNAL_HANDLER=include/default-signal.h +fi + +AC_SUBST(SYSDEP_SOURCES) + AC_LINK_FILES($SIGNAL_HANDLER, include/java-signal.h) if test "${multilib}" = "yes"; then @@ -624,13 +762,38 @@ else multilib_arg= fi +AC_PATH_XTRA + +AM_CONDITIONAL(NO_X, test "$no_x" = yes) + here=`pwd` AC_SUBST(here) -AC_OUTPUT(Makefile libgcj.spec gcj/Makefile include/Makefile testsuite/Makefile, + +AC_OUTPUT(Makefile libgcj.spec libgcj-test.spec gcj/Makefile include/Makefile testsuite/Makefile, [if test -n "$CONFIG_FILES"; then ac_file=Makefile . ${libgcj_basedir}/../config-ml.in -fi], +fi + +# Make subdirectories and `.d' files. Look in both srcdir and +# builddir for the .java files. +h=`pwd` +: > deps.mk +( (cd $srcdir && find . -name '*.java' -print) ; + find . -name '*.java' -print) | \ + fgrep -v testsuite | \ + sed -e 's/\.java/.d/' | \ + while read f; do + echo "include $f" >> deps.mk + test -f $f || { +changequote(<<,>>) + d=`echo $f | sed -e 's,/[^/]*$,,'` +changequote([,]) + $srcdir/../mkinstalldirs $d + : > $f + } + done +], srcdir=${srcdir} host=${host} target=${target}