X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libjava%2Fconfigure.ac;h=1c571dce8bae96bb3a96b9035c421f862758fec2;hb=d8b4f8dfb515eca84ba62adf2c727148f45d3795;hp=2b39801e6d878527d1475bf79506deabb6806081;hpb=0a89abe54a35d4ee439585e17d4522622667c956;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libjava/configure.ac b/libjava/configure.ac index 2b39801e6d8..1c571dce8ba 100644 --- a/libjava/configure.ac +++ b/libjava/configure.ac @@ -15,27 +15,8 @@ AC_ARG_WITH(target-subdir, # We may get other options which we don't document: # --with-target-subdir, --with-multisrctop, --with-multisubdir -# When building with srcdir == objdir, links to the source files will -# be created in directories within the target_subdir. We have to -# adjust toplevel_srcdir accordingly, so that configure finds -# install-sh and other auxiliary files that live in the top-level -# source directory. -if test "${srcdir}" = "."; then - if test -z "${with_target_subdir}"; then - toprel=".." - else - if test "${with_target_subdir}" != "."; then - toprel="${with_multisrctop}../.." - else - toprel="${with_multisrctop}.." - fi - fi -else - toprel=".." -fi - -libgcj_basedir=$srcdir/$toprel/./libjava -AC_SUBST(libgcj_basedir) +# Find the rest of the source tree framework. +AM_ENABLE_MULTILIB(, ..) AC_CANONICAL_SYSTEM _GCC_TOPLEV_NONCANONICAL_BUILD @@ -74,15 +55,32 @@ AC_ARG_ENABLE(version-specific-runtime-libs, [version_specific_libs=no] ) -# Default to --enable-multilib -AC_ARG_ENABLE(multilib, - AS_HELP_STRING([--enable-multilib], - [build many library versions (default)]), -[case "${enableval}" in - yes) multilib=yes ;; - no) multilib=no ;; - *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;; - esac], [multilib=yes])dnl +AC_ARG_ENABLE(plugin, + AS_HELP_STRING([--enable-plugin], + [build gcjwebplugin web browser plugin]), + [case "$enableval" in + yes) plugin_enabled=yes ;; + no) plugin_enabled=no ;; + *) AC_MSG_ERROR([Unknown argument to enable/disable plugin]);; + esac], + [plugin_enabled=no] +) + +AC_ARG_ENABLE(gconf-peer, + AS_HELP_STRING([--enable-gconf-peer], + [compile GConf native peers for util.preferences]), + [case "$enableval" in + yes) gconf_enabled=yes ;; + no) gconf_enabled=no ;; + *) AC_MSG_ERROR([Unknown argument to enable/disable gconf-peer]);; + esac], + [gconf_enabled=no] +) + +AC_ARG_ENABLE(java-maintainer-mode, + AS_HELP_STRING([--enable-java-maintainer-mode], + [allow rebuilding of .class and .h files])) +AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" = yes) # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX. GCC_NO_EXECUTABLES @@ -97,7 +95,6 @@ GCC_NO_EXECUTABLES # (5) For libstdc++-v3, -fno-builtin must be present here so that a # non-conflicting form of std::exit can be guessed by AC_PROG_CXX, and # used in later tests. This may not be necessary in libjava; I don't know. -m4_define([ac_cv_prog_CXX],[glibcxx_cv_prog_CXX]) m4_rename([_AC_ARG_VAR_PRECIOUS],[glibcxx_PRECIOUS]) m4_define([_AC_ARG_VAR_PRECIOUS],[]) save_CXXFLAGS="$CXXFLAGS" @@ -113,8 +110,34 @@ AC_SUBST(LDFLAGS) AM_INIT_AUTOMAKE([1.9.0]) AC_CHECK_TOOL(AS, as) +AC_CHECK_TOOL(LD, ld) AC_CHECK_TOOL(AR, ar) AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_PROG_AWK +AC_CHECK_PROGS([JAR], [jar fastjar gjar], no) +AC_PATH_PROG([ZIP], [zip], no) +AC_PATH_PROG([UNZIP], [unzip], unzip) + +# We need a jar that supports -@. This is a GNU extension. +if test "$JAR" != no; then + rm -f config-test.jar + echo $srcdir/configure.ac | $JAR -cf@ config-test.jar + if test -f config-test.jar; then + rm -f config-test.jar + else + JAR=no + fi +fi + +# Prefer the jar we found, but fall back to our jar script. +if test "$JAR" = no; then + if test "$ZIP" = no; then + AC_MSG_ERROR([cannot find neither zip nor jar, cannot continue]) + else + # InfoZIP available, use the 'guaranteed' Bourne-shell JAR to build libjava + JAR=`pwd`/scripts/jar + fi +fi AC_PROG_INSTALL @@ -133,17 +156,29 @@ libgcj_javaflags= . ${srcdir}/configure.host +ACX_PROG_LD_GNU_SYMBOLIC +libgcj_ld_symbolic_functions=$SYMBOLIC_LDFLAGS +if test -z "$libgcj_ld_symbolic"; then + libgcj_ld_symbolic=$SYMBOLIC_LDFLAGS +fi + LIBGCJ_CFLAGS="${libgcj_cflags}" LIBGCJ_CXXFLAGS="${libgcj_cxxflags}" LIBGCJ_JAVAFLAGS="${libgcj_javaflags}" LIBGCJ_LD_SYMBOLIC="${libgcj_ld_symbolic}" +LIBGCJ_LD_SYMBOLIC_FUNCTIONS="${libgcj_ld_symbolic_functions}" AC_SUBST(LIBGCJ_CFLAGS) AC_SUBST(LIBGCJ_CXXFLAGS) AC_SUBST(LIBGCJ_JAVAFLAGS) AC_SUBST(LIBGCJ_LD_SYMBOLIC) +AC_SUBST(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) -AC_CONFIG_HEADERS([include/config.h gcj/libgcj-config.h]) +# Only use libltdl for non-newlib builds. +if test "x${with_newlib}" = "x" || test "x${with_newlib}" = "xno"; then + AC_LTDL_SHLIBPATH +fi +AC_CONFIG_HEADERS([include/config.h gcj/libgcj-config.h]) # See if the user has requested runtime debugging. LIBGCJDEBUG="disable" @@ -156,6 +191,24 @@ AC_ARG_ENABLE(libgcj-debug, LIBGCJDEBUG="enable" fi]) +AC_ARG_WITH([escher], + AS_HELP_STRING([--with-escher=ABS.PATH], + [specify path to escher dir or JAR for X peers])) +case "$with_escher" in +"") + use_escher=false + ;; +"no") + use_escher=false + ;; +"yes") + AC_MSG_ERROR([Please supply an absolute path to Escher library]) + ;; +*) + use_escher=true + ;; +esac + # Determine which AWT peer libraries to build AC_ARG_ENABLE(java-awt, AS_HELP_STRING([--enable-java-awt], @@ -164,6 +217,8 @@ AC_ARG_ENABLE(java-awt, peerlibs="`echo ${enable_java_awt} | tr ',' ' '`" use_xlib_awt="" use_gtk_awt="" +use_qt_awt="" +use_x_awt="" # The default toolkit to use is the first one specified. TOOLKIT= AC_SUBST(TOOLKIT) @@ -183,7 +238,7 @@ for peer in $peerlibs ; do ;; gtk) if test "$no_x" = yes; then - echo "*** xlib peers requested but no X library available" 1>&2 + echo "*** gtk peers requested but no X library available" 1>&2 exit 1 else use_gtk_awt=yes @@ -192,9 +247,29 @@ for peer in $peerlibs ; do fi fi ;; + qt) + if test "$no_x" = yes; then + # Perhaps we should admit the possibility of embedded Qt. + echo "*** Qt peers requested but no X library available" 1>&2 + exit 1 + else + use_qt_awt=yes + if test -z "$TOOLKIT"; then + TOOLKIT=gnu.java.awt.peer.qt.QtToolkit + fi + fi + ;; + x) + use_x_awt=yes + if test -z "$TOOLKIT"; then + TOOLKIT=gnu.java.awt.peer.x.XToolkit + fi + ;; no) use_xlib_awt= use_gtk_awt= + use_qt_awt= + use_x_awt= break ;; *) @@ -204,7 +279,11 @@ for peer in $peerlibs ; do done AM_CONDITIONAL(XLIB_AWT, test "$use_xlib_awt" = yes) -AM_CONDITIONAL(GTK_AWT, test "$use_gtk_awt" = yes) +AM_CONDITIONAL(X_AWT, test "$use_x_awt" = yes) + +AC_DEFINE_UNQUOTED(AWT_TOOLKIT, "$TOOLKIT", [Name of default AWT toolkit]) + +AC_DEFINE_UNQUOTED(LIBGCJ_PREFIX, "$prefix", [Installation prefix]) # Create standard.omit based on decisions we just made. cp $srcdir/standard.omit.in standard.omit @@ -212,10 +291,17 @@ if test "$use_xlib_awt" != yes; then echo gnu/awt/xlib >> standard.omit echo gnu/gcj/xlib >> standard.omit fi -if test "$use_gtk_awt" != yes; then - echo gnu/java/awt/peer/gtk >> standard.omit +if test "$use_x_awt" != yes; then + echo gnu/java/awt/peer/x >> standard.omit fi +# Tools that need to be compiled against classpath's tools classes +: > vm-tools-packages +for package in gnu/gcj/tools/gc_analyze ; do + echo $package >> standard.omit + echo $package >> vm-tools-packages +done + if test -z "${with_multisubdir}"; then builddotdot=. else @@ -224,19 +310,23 @@ fi NATIVE=yes -# Which gcj do we use? +# Which gcj and host gcj (for ecjx) do we use? which_gcj=default +host_exeext=${ac_exeext} +GCJ_FOR_ECJX= built_gcc_dir="`cd ${builddotdot}/../../${host_subdir}/gcc && ${PWDCMD-pwd}`" if test -n "${with_cross_host}"; then # We are being configured with a cross compiler. We can't # use ac_exeext, because that is for the target platform. NATIVE=no cross_host_exeext= + GCJ_FOR_ECJX="${with_cross_host}-gcj" case "${with_cross_host}" in *mingw* | *cygwin*) cross_host_exeext=.exe ;; esac + host_exeext=${cross_host_exeext} if test -x "${built_gcc_dir}/gcj${cross_host_exeext}"; then if test x"$build_noncanonical" = x"$with_cross_host"; then # Ordinary cross (host!=target and host=build) @@ -266,7 +356,6 @@ case "${which_gcj}" in built) GCJ="$built_gcc_dir/gcj -B`${PWDCMD-pwd}`/ -B$built_gcc_dir/" GCJH='$(top_builddir)/$(MULTIBUILDTOP)../../$(host_subdir)/gcc/gcjh' - ZIP='$(top_builddir)/$(MULTIBUILDTOP)../../$(host_subdir)/fastjar/fastjar' ;; cross) if test "x${with_newlib}" = "xyes"; then @@ -276,20 +365,17 @@ case "${which_gcj}" in else GCJ="${target_noncanonical}-gcj -B`${PWDCMD-pwd}`/" fi - ZIP='$(target_noncanonical)-fastjar' GCJH='$(target_noncanonical)-gcjh' ;; path) GCJ="gcj -B`${PWDCMD-pwd}`/" - ## In this case, gcj is found outside the build tree. However, zip is - ## found in the build tree. - ZIP='$(top_builddir)/$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/fastjar' GCJH=gcjh ;; esac +AC_SUBST(GCJ_FOR_ECJX) AC_SUBST(GCJH) -AC_SUBST(ZIP) +AC_SUBST(host_exeext) # Create it, so that compile/link tests don't fail test -f libgcj.spec || touch libgcj.spec @@ -298,6 +384,9 @@ test -f libgcj.spec || touch libgcj.spec # Set up to configure Classpath. # FIXME: no supported way to pass args in autoconf. +ac_configure_args="$ac_configure_args --with-fastjar=$JAR" +# Disable tool wrappers to avoid ltdl.h configure check. +ac_configure_args="$ac_configure_args --disable-tool-wrappers" ac_configure_args="$ac_configure_args --disable-load-library" ac_configure_args="$ac_configure_args --${LIBGCJDEBUG}-debug" ac_configure_args="$ac_configure_args --enable-default-toolkit=$TOOLKIT" @@ -308,9 +397,34 @@ ac_configure_args="$ac_configure_args --disable-core-jni" dnl FIXME? ac_configure_args="$ac_configure_args --disable-examples" ac_configure_args="$ac_configure_args --with-glibj=build" +if test "$plugin_enabled" != yes; then + ac_configure_args="$ac_configure_args --disable-plugin" +fi +if test "$gconf_enabled" != yes; then + ac_configure_args="$ac_configure_args --disable-gconf-peer" + ac_configure_args="$ac_configure_args --enable-default-preferences-peer=gnu.java.util.prefs.FileBasedFactory" +fi if test "$use_gtk_awt" != yes; then - ac_configure_args="$ac_configure_args --disable-gtk-peer" + ac_configure_args="$ac_configure_args --disable-gtk-peer --disable-plugin" +fi +if test "$use_qt_awt" != yes; then + ac_configure_args="$ac_configure_args --disable-qt-peer" +else + # We need this as qt is disabled by default in classpath. + ac_configure_args="$ac_configure_args --enable-qt-peer" +fi +if test "$use_x_awt" != yes; then + ac_configure_args="$ac_configure_args --without-escher" +else + # We need this as escher is disabled by default in classpath. + if test "$use_escher" != true; then + AC_MSG_ERROR([Please supply an absolute path to the Escher library]) + else + ac_configure_args="$ac_configure_args --with-escher=$with_escher" + fi fi +# -Werror causes unavoidable problems in code using alsa. +ac_configure_args="$ac_configure_args --disable-Werror" dnl --with-gcj=$GCJ dnl --with-javah=$GCJH dnl gjdoc? @@ -376,6 +490,23 @@ if test -z "$enable_hash_synchronization"; then enable_hash_synchronization=$enable_hash_synchronization_default fi + +install_ecj_jar=no +ECJ_BUILD_JAR= +ECJ_JAR= +AC_ARG_WITH(ecj-jar, + AS_HELP_STRING([--with-ecj-jar=FILE], [use preinstalled ecj jar]), + [ECJ_JAR=$withval], + [if test -f $multi_basedir/ecj.jar; then + ECJ_BUILD_JAR=$multi_basedir/ecj.jar + ECJ_JAR='$(jardir)/ecj.jar' + install_ecj_jar=yes + fi]) +AC_SUBST(ECJ_BUILD_JAR) +AC_SUBST(ECJ_JAR) +AM_CONDITIONAL(BUILD_ECJ1, test "$ECJ_JAR" != "") +AM_CONDITIONAL(INSTALL_ECJ_JAR, test $install_ecj_jar = yes) + AC_ARG_WITH(java-home, AS_HELP_STRING([--with-java-home=DIRECTORY], [value of java.home system property]), @@ -540,9 +671,6 @@ AC_ARG_WITH(ecos, TARGET_ECOS="$with_ecos" ) -supply_backtrace=no - -PLATFORM_INNER_NAT_HDRS= case "$TARGET_ECOS" in no) case "$host" in *mingw*) @@ -555,7 +683,6 @@ case "$TARGET_ECOS" in PLATFORM=Posix PLATFORMNET=Posix PLATFORMH=posix.h - PLATFORM_INNER_NAT_HDRS='java/lang/ConcreteProcess$$ProcessManager.h' ;; esac ;; @@ -566,7 +693,7 @@ case "$TARGET_ECOS" in PLATFORMH=posix.h ;; esac -AC_SUBST(PLATFORM_INNER_NAT_HDRS) +AC_SUBST(PLATFORM) AC_CONFIG_LINKS(include/platform.h:include/$PLATFORMH) AC_EGREP_HEADER(uint32_t, stdint.h, AC_DEFINE(HAVE_INT32_DEFINED, 1, @@ -587,10 +714,8 @@ case "$host" in esac AM_CONDITIONAL(USING_DARWIN_CRT, $DARWIN_CRT) -# These may not be defined in a non-ANS conformant embedded system. +# This may not be defined in a non-ANS conformant embedded system. # FIXME: Should these case a runtime exception in that case? -AC_EGREP_HEADER(mktime, time.h, AC_DEFINE(HAVE_MKTIME, 1, - [Define is you have 'mktime' in ])) AC_EGREP_HEADER(localtime, time.h, AC_DEFINE(HAVE_LOCALTIME, 1, [Define is you have 'localtime' in ])) @@ -601,14 +726,13 @@ test -d java/io || mkdir java/io test -d gnu || mkdir gnu AC_CONFIG_LINKS(java/io/natFile.cc:java/io/natFile${FILE-${PLATFORM}}.cc) -# Likewise for ConcreteProcess.java and natConcreteProcess.cc. +# Likewise for natConcreteProcess.cc. test -d java/lang || mkdir java/lang -AC_CONFIG_LINKS(java/lang/ConcreteProcess.java:java/lang/${PLATFORM}Process.java) AC_CONFIG_LINKS(java/lang/natConcreteProcess.cc:java/lang/nat${PLATFORM}Process.cc) -# Likewise for natInetAddress.cc and natVMNetworkInterface.cc. +# Likewise for natVMInetAddress.cc and natVMNetworkInterface.cc. test -d java/net || mkdir java/net -AC_CONFIG_LINKS(java/net/natInetAddress.cc:java/net/natInetAddress${PLATFORMNET}.cc) +AC_CONFIG_LINKS(java/net/natVMInetAddress.cc:java/net/natVMInetAddress${PLATFORMNET}.cc) AC_CONFIG_LINKS(java/net/natVMNetworkInterface.cc:java/net/natVMNetworkInterface${PLATFORMNET}.cc) # Likewise for natPlainSocketImpl.cc and natPlainDatagramSocketImpl.cc. @@ -617,10 +741,12 @@ test -d gnu/java/net || mkdir gnu/java/net AC_CONFIG_LINKS(gnu/java/net/natPlainSocketImpl.cc:gnu/java/net/natPlainSocketImpl${PLATFORMNET}.cc) AC_CONFIG_LINKS(gnu/java/net/natPlainDatagramSocketImpl.cc:gnu/java/net/natPlainDatagramSocketImpl${PLATFORMNET}.cc) -# Likewise for natPipeImpl.cc and natSelectorImpl.cc. +# Likewise for natVMPipe.cc and natVMSelector.cc. test -d gnu/java/nio || mkdir gnu/java/nio -AC_CONFIG_LINKS(gnu/java/nio/natPipeImpl.cc:gnu/java/nio/natPipeImpl${PLATFORM}.cc) -AC_CONFIG_LINKS(gnu/java/nio/natSelectorImpl.cc:gnu/java/nio/natSelectorImpl${PLATFORM}.cc) +AC_CONFIG_LINKS(gnu/java/nio/natVMPipe.cc:gnu/java/nio/natVMPipe${PLATFORM}.cc) +AC_CONFIG_LINKS(gnu/java/nio/natVMSelector.cc:gnu/java/nio/natVMSelector${PLATFORM}.cc) + +# Likewise for natFileChannelImpl.cc test -d gnu/java/nio/channels || mkdir gnu/java/nio/channels AC_CONFIG_LINKS(gnu/java/nio/channels/natFileChannelImpl.cc:gnu/java/nio/channels/natFileChannel${FILE-${PLATFORM}}.cc) @@ -650,27 +776,14 @@ AC_SUBST(ZLIBTESTSPEC) AC_PATH_XTRA -# determine whether to enable the cairo GTK Graphics2D backend -AC_ARG_ENABLE(gtk-cairo, - AS_HELP_STRING([--enable-gtk-cairo], - [build the cairo Graphics2D implementation on GTK])) -AM_CONDITIONAL(GTK_CAIRO, test "x${enable_gtk_cairo}" = xyes) -if test "x${enable_gtk_cairo}" = xyes -then - PKG_CHECK_MODULES(CAIRO, cairo) - PKG_CHECK_MODULES(PANGOFT2, pangoft2) -fi -AC_SUBST(CAIRO_LIBS) -AC_SUBST(CAIRO_CFLAGS) -AC_SUBST(PANGOFT2_LIBS) -AC_SUBST(PANGOFT2_CFLAGS) - # FIXME: this should be _libs on some hosts. libsubdir=.libs # extra LD Flags which are required for targets case "${host}" in - *-darwin*) +*-*-darwin[[0-7]].*) + # For now we have to disable it on darwin[8-9] because it slows down + # the linking phase. A possible bug in ld? # on Darwin -single_module speeds up loading of the dynamic libraries. extra_ldflags_libjava=-Wl,-single_module ;; @@ -754,6 +867,7 @@ THREADINCS= THREADDEPS= THREADH= THREADSPEC= +THREADSTARTFILESPEC= case "$THREADS" in posix) case "$host" in @@ -773,13 +887,12 @@ case "$THREADS" in THREADSPEC='%{!pthread: %{!shared: %eUnder this configuration, the user must provide -pthread when linking.}}' ;; *-*-freebsd*) - # FreeBSD 5 implements a model much closer to other modern UNIX - # which support threads. However, it still does not support - # -lpthread. + # FreeBSD >=5.3 implements a model much closer to other modern UNIX + # systems which support threads and -lpthread. THREADLDFLAGS=-pthread - THREADSPEC=-lc_r + THREADSPEC=-lpthread ;; - alpha*-dec-osf*) + alpha*-dec-osf* | hppa*-hp-hpux*) THREADCXXFLAGS=-pthread # boehm-gc needs some functions from librt, so link that too. THREADLIBS='-lpthread -lrt' @@ -806,6 +919,20 @@ case "$THREADS" in win32) THREADH=win32-threads.h + THREADCXXFLAGS=-mthreads + # We need thread-safe exception handling so _CRT_MT should be set to 1. + # But we do not want the executables created to be dependent on + # mingwm10.dll which provides a __mingwthr_key_dtor() that cleans up + # exception handling contexts. The following kludge achieves this effect + # and causes a dummy __mingwthr_key_dtor() to be linked in from + # libmingw32.a. This causes a memory leak of about 24 bytes per thread. + # A workaround is to explicitly use -mthreads while linking Java programs. + # See PR libgcj/28263. + # + # FIXME: In Java we are able to detect thread death at the end of + # Thread.run() so we should be able to clean up the exception handling + # contexts ourselves. + THREADSTARTFILESPEC='crtmt%O%s' ;; none) @@ -817,17 +944,25 @@ AC_SUBST(THREADLIBS) AC_SUBST(THREADINCS) AC_SUBST(THREADDEPS) AC_SUBST(THREADSPEC) +AC_SUBST(THREADSTARTFILESPEC) AC_SUBST(THREADLDFLAGS) AC_SUBST(THREADCXXFLAGS) AM_CONDITIONAL(USING_POSIX_THREADS, test "$THREADS" = posix) AM_CONDITIONAL(USING_WIN32_THREADS, test "$THREADS" = win32) AM_CONDITIONAL(USING_NO_THREADS, test "$THREADS" = none) +AM_CONDITIONAL(USE_LIBGCJ_BC, test "$use_libgcj_bc" = yes) if test -d sysdep; then true; else mkdir sysdep; fi AC_CONFIG_LINKS(sysdep/locks.h:sysdep/$sysdeps_dir/locks.h) AC_CONFIG_LINKS(sysdep/backtrace.h:$fallback_backtrace_h) AC_CONFIG_LINKS(sysdep/descriptor.h:$descriptor_h) +LIBGCJ_SPEC="%{s-bc-abi:} -lgcj" +if test "$use_libgcj_bc" = yes; then + LIBGCJ_SPEC="%{s-bc-abi:-lgcj_bc;:-lgcj}" +fi +AC_SUBST(LIBGCJ_SPEC) + HASH_SYNC_SPEC= # Hash synchronization is only useful with posix threads right now. if test "$enable_hash_synchronization" = yes && test "$THREADS" != "none"; then @@ -839,7 +974,7 @@ AC_SUBST(HASH_SYNC_SPEC) AM_CONDITIONAL(USING_GCC, test "$GCC" = yes) # We're in the tree with gcc, and need to include some of its headers. -GCC_UNWIND_INCLUDE='-I$(libgcj_basedir)/../gcc' +GCC_UNWIND_INCLUDE='-I$(multi_basedir)/./libjava/../gcc' if test "x${with_newlib}" = "xyes"; then # We are being configured with a cross compiler. AC_REPLACE_FUNCS @@ -857,63 +992,37 @@ if test "x${with_newlib}" = "xyes"; then AC_DEFINE(HAVE_USLEEP_DECL, 1, [Define if usleep is declared in .]) # This is only for POSIX threads. AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_INIT, 1, [Define if using POSIX threads that have the mutexattr functions.]) - # We also assume we are using gcc, which provides alloca. - AC_DEFINE(HAVE_ALLOCA) # Assume we do not have getuid and friends. AC_DEFINE(NO_GETUID, 1, [Define if getuid() and friends are missing.]) PLATFORMNET=NoNet else - AC_CHECK_FUNCS([strerror ioctl select fstat open fsync sleep opendir \ - gmtime_r localtime_r readdir_r getpwuid_r getcwd \ - access stat mkdir rename rmdir unlink realpath utime chmod \ + AC_CHECK_FUNCS([strerror select fstat open fsync sleep opendir \ + localtime_r readdir_r getpwuid_r getcwd \ + access stat lstat mkdir rename rmdir unlink utime chmod readlink \ nl_langinfo setlocale \ inet_pton uname inet_ntoa \ - fork execvp pipe sigaction ftruncate]) + getrlimit sigaction ftruncate mmap \ + getifaddrs]) AC_CHECK_FUNCS(inet_aton inet_addr, break) - AC_CHECK_HEADERS(execinfo.h unistd.h dlfcn.h) - AC_CHECK_FUNC(backtrace, [ - case "$host" in - ia64-*-linux*) - # Has broken backtrace() - ;; - mips*-*-linux*) - # Has broken backtrace(), but we supply our own. - if test -d sysdep; then true; else mkdir -p sysdep; fi - supply_backtrace=yes - AC_DEFINE(HAVE_BACKTRACE, 1, - [Define if your platform has a working backtrace() function.]) - ;; - *) - AC_DEFINE(HAVE_BACKTRACE, 1, - [Define if your platform has a working backtrace() function.]) - ;; - esac - ], [ - case "$host" in - *mingw*) - # Has backtrace() defined in libgcj itself - AC_DEFINE(HAVE_BACKTRACE, 1, - [Define if your platform has a working backtrace() function.]) - ;; - esac - ]) - + AC_CHECK_HEADERS(unistd.h dlfcn.h sys/resource.h) + # Do an additional check on dld, HP-UX for example has dladdr in libdld.sl AC_CHECK_LIB(dl, dladdr, [ - if test "x${disable_dladdr}" = "xyes"; then - #Broken dladdr(). - true - else - AC_DEFINE(HAVE_DLADDR, 1, [Define if you have dladdr()]) - fi - ]) - if test x"$build" = x"$host"; then + AC_DEFINE(HAVE_DLADDR, 1, [Define if you have dladdr()])], [ + AC_CHECK_LIB(dld, dladdr, [ + AC_DEFINE(HAVE_DLADDR, 1, [Define if you have dladdr()])])]) + + if test x"$cross_compiling" = x"no"; then AC_CHECK_FILES(/proc/self/exe, [ AC_DEFINE(HAVE_PROC_SELF_EXE, 1, [Define if you have /proc/self/exe])]) + AC_CHECK_FILES(/proc/self/maps, [ + AC_DEFINE(HAVE_PROC_SELF_MAPS, 1, + [Define if you have /proc/self/maps])]) else case $host in *-linux*) AC_DEFINE(HAVE_PROC_SELF_EXE, 1, [Define if you have /proc/self/exe]) + AC_DEFINE(HAVE_PROC_SELF_MAPS, 1, [Define if you have /proc/self/maps]) ;; esac fi @@ -1004,9 +1113,6 @@ else if test "$THREADS" = posix; then save_LIBS="$LIBS" LIBS="$LIBS $THREADLIBS" - # Some POSIX thread systems don't have pthread_mutexattr_settype. - # E.g., Solaris. - AC_CHECK_FUNCS(pthread_mutexattr_settype pthread_mutexattr_setkind_np) # Look for sched_yield. Up to Solaris 2.6, it is in libposix4, since # Solaris 7 the name librt is preferred. @@ -1019,6 +1125,17 @@ else AC_DEFINE(HAVE_SCHED_YIELD) THREADLIBS="$THREADLIBS -lposix4" THREADSPEC="$THREADSPEC -lposix4"])])]) + + AC_CHECK_LIB(rt, clock_gettime, [ + AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Define if you have clock_gettime()]) + case "$THREADSPEC" in + *-lrt*) ;; + *) + THREADSPEC="$THREADSPEC -lrt" + THREADLIBS="$THREADLIBS -lrt" + ;; + esac]) + LIBS="$save_LIBS" # We can save a little space at runtime if the mutex has m_count @@ -1048,9 +1165,11 @@ else if test "$memcpy_found" = no; then AC_MSG_ERROR([memcpy is required]) fi - + # Do an additional check on dld, HP-UX for example has dlopen in libdld.sl AC_CHECK_LIB(dl, dlopen, [ - AC_DEFINE(HAVE_DLOPEN, 1, [Define if dlopen is available])]) + AC_DEFINE(HAVE_DLOPEN, 1, [Define if dlopen is available])], [ + AC_CHECK_LIB(dld, dlopen, [ + AC_DEFINE(HAVE_DLOPEN, 1, [Define if dlopen is available])])]) # Some library-finding code we stole from Tcl. #-------------------------------------------------------------------- @@ -1132,7 +1251,6 @@ else AC_CHECK_LIB(dl, main, SYSTEMSPEC="$SYSTEMSPEC -ldl") fi fi -AM_CONDITIONAL(SUPPLY_BACKTRACE, test "$supply_backtrace" = yes) # Use a semicolon as CLASSPATH separator for MinGW, otherwise a colon. case $build in @@ -1160,6 +1278,7 @@ if test ! -f gnu/classpath/Configuration.java; then -e "s,@default_toolkit@,$TOOLKIT," \ -e "s,@JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@,false," \ -e "s,@GTK_CAIRO_ENABLED@,false," \ + -e "s,@ECJ_JAR@,," \ < $srcdir/classpath/gnu/classpath/Configuration.java.in \ > gnu/classpath/Configuration.java # We do not want to redirect the output of the grep below to /dev/null, @@ -1203,6 +1322,7 @@ AC_SUBST(BACKTRACESPEC) AC_SUBST(IEEESPEC) AM_CONDITIONAL(NATIVE, test "$NATIVE" = yes) +AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = yes) AM_CONDITIONAL(NEEDS_DATA_START, test "$NEEDS_DATA_START" = yes && test "$NATIVE" = yes) AC_SUBST(GCC_UNWIND_INCLUDE) @@ -1239,14 +1359,27 @@ AC_SUBST(toolexecdir) AC_SUBST(toolexecmainlibdir) AC_SUBST(toolexeclibdir) +# Determine where the standard .db file and GNU Classpath JNI +# libraries are found. +multi_os_directory=`$CC -print-multi-os-directory` +case $multi_os_directory in + .) + dbexecdir='$(libdir)/gcj-$(gcc_version)' # Avoid /. + ;; + *) + dbexecdir='$(libdir)/'$multi_os_directory'/gcj-$(gcc_version)' + ;; +esac +AC_SUBST(dbexecdir) + # Determine gcj version number. gcjversion=`$GCJ -v 2>&1 | sed -n 's/^.*version \([[^ ]]*\).*$/\1/p'` GCJVERSION=$gcjversion AC_SUBST(GCJVERSION) AC_DEFINE_UNQUOTED(GCJVERSION, "$GCJVERSION", [Short GCJ version ID]) -AC_DEFINE(JV_VERSION, "1.4.2", [Compatibility version string]) -AC_DEFINE(JV_API_VERSION, "1.4", [API compatibility version string]) +AC_DEFINE(JV_VERSION, "1.5.0", [Compatibility version string]) +AC_DEFINE(JV_API_VERSION, "1.5", [API compatibility version string]) TL_AC_GXX_INCLUDE_DIR @@ -1259,14 +1392,18 @@ 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 net/if.h \ pwd.h sys/config.h stdint.h langinfo.h locale.h \ - dirent.h]) + dirent.h sys/rw_lock.h magic.h ifaddrs.h]) AC_CHECK_HEADERS(inttypes.h, [ AC_DEFINE(HAVE_INTTYPES_H, 1, [Define if is available]) AC_DEFINE(JV_HAVE_INTTYPES_H, 1, [Define if is available]) ]) -AC_HEADER_SYS_WAIT AC_CHECK_TYPE([ssize_t], [int]) +AC_CHECK_TYPE([magic_t], [ + AC_DEFINE(HAVE_MAGIC_T, 1, [Define if magic.h declares magic_t])], [], [ +#ifdef HAVE_MAGIC_H +#include +#endif]) AC_MSG_CHECKING([for in_addr_t]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include @@ -1333,9 +1470,6 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[struct tm tim; tim.t AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])])]) -AC_FUNC_ALLOCA -AC_FUNC_MMAP - AC_CHECK_PROGS(PERL, perl, false) SYSDEP_SOURCES= @@ -1355,6 +1489,9 @@ case "${host}" in hppa*-*-linux*) SIGNAL_HANDLER=include/pa-signal.h ;; + hppa*-hp-hpux*) + SIGNAL_HANDLER=include/hppa-signal.h + ;; ia64-*-linux*) SIGNAL_HANDLER=include/dwarf2-signal.h ;; @@ -1383,7 +1520,7 @@ case "${host}" in mips*-*-linux*) SIGNAL_HANDLER=include/mips-signal.h ;; - *-*-darwin*) + powerpc*-*-darwin*) SIGNAL_HANDLER=include/darwin-signal.h ;; *) @@ -1412,7 +1549,36 @@ else multilib_arg= fi - +# See if we support thread-local storage. +GCC_CHECK_TLS + +# For _Unwind_GetIPInfo. +GCC_CHECK_UNWIND_GETIPINFO + +# See if linker supports anonymous version scripts. +AC_CACHE_CHECK([whether ld supports anonymous version scripts], + [libjava_cv_anon_version_script], + [save_CFLAGS="$CFLAGS"; save_LDFLAGS="$LDFLAGS" + libjava_cv_anon_version_script=no + CFLAGS="$CFLAGS -fPIC"; LDFLAGS="$LDFLAGS -shared -Wl,--version-script,conftest.map" + echo '{ global: globalsymb*; local: *; };' > conftest.map + AC_TRY_LINK(void globalsymbol (void) {} void localsymbol (void) {},, + [libjava_cv_anon_version_script=yes], []) + CFLAGS="$save_CFLAGS"; LDFLAGS="$save_LDFLAGS" + ]) +AM_CONDITIONAL(ANONVERSCRIPT, test "$libjava_cv_anon_version_script" = yes) + +# Check if linker supports static linking on a per library basis +LD_START_STATIC_SPEC= +LD_FINISH_STATIC_SPEC= +if $LD --help 2>&1 | grep -q -e -call_shared ; then + if $LD --help 2>&1 | grep -q -e -non_shared ; then + LD_START_STATIC_SPEC='%{static-libgcj:-non_shared}' + LD_FINISH_STATIC_SPEC='%{static-libgcj:-call_shared}' + fi +fi +AC_SUBST(LD_START_STATIC_SPEC) +AC_SUBST(LD_FINISH_STATIC_SPEC) here=`${PWDCMD-pwd}` AC_SUBST(here) @@ -1430,12 +1596,14 @@ include/Makefile testsuite/Makefile ]) +AC_CONFIG_FILES([scripts/jar], [chmod +x scripts/jar]) + AC_CONFIG_COMMANDS([default], [# Only add multilib support code if we just rebuilt top-level Makefile. case " $CONFIG_FILES " in *" Makefile "*) LD="${ORIGINAL_LD_FOR_MULTILIBS}" - ac_file=Makefile . ${libgcj_basedir}/../config-ml.in + ac_file=Makefile . ${multi_basedir}/./libjava/../config-ml.in ;; esac for ac_multi_file in $CONFIG_FILES; do @@ -1451,7 +1619,7 @@ target=${target} with_multisubdir=${with_multisubdir} ac_configure_args="${multilib_arg} ${ac_configure_args}" CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -libgcj_basedir=${libgcj_basedir} +multi_basedir=${multi_basedir} CC="${CC}" CXX="${CXX}" ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}"