X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libjava%2Fconfigure.ac;h=664011ea6cb5f024b9134bbbcedf303be1c1074f;hb=8cc1badaec84b9cbe3cd88c9e41a22119cb0fc13;hp=28702b00bf7deb51eb074a388a916080b2e76b54;hpb=63a06cfe12a56f95dfc1060f07f4480819fc74c0;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libjava/configure.ac b/libjava/configure.ac index 28702b00bf7..664011ea6cb 100644 --- a/libjava/configure.ac +++ b/libjava/configure.ac @@ -1,5 +1,5 @@ dnl # Process this with autoconf to create configure -AC_PREREQ(2.59) +AC_PREREQ(2.64) # Still use "libjava" here to placate dejagnu. AC_INIT([libjava], [version-unused],, [libjava]) @@ -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,60 +55,133 @@ 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(browser-plugin, + AS_HELP_STRING([--enable-browser-plugin], + [build gcjwebplugin web browser plugin]), + [case "$enableval" in + yes) browser_plugin_enabled=yes ;; + no) browser_plugin_enabled=no ;; + *) AC_MSG_ERROR([Unknown argument to enable/disable browser plugin]);; + esac], + [browser_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_WITH([antlr-jar], + [AS_HELP_STRING([--with-antlr-jar=file],[Use ANTLR from the specified jar file])], + [ + ANTLR_JAR=$withval + ], + [ + ANTLR_JAR= + ]) + +AC_MSG_CHECKING([for antlr.jar]) +if test "x$ANTLR_JAR" = x; then + for antlr_lib_home in `ls -d /usr/local/share/antlr* 2> /dev/null` \ + /usr/share/antlr/lib /usr/share/java /usr/lib; + do + if test -f "$antlr_lib_home/antlr.jar"; then + # FIXME: version check for antlr needed without using a VM + ANTLR_JAR="$antlr_lib_home/antlr.jar" + break + fi + done + if test "x$ANTLR_JAR" = x; then + AC_MSG_RESULT([not found]) + else + AC_MSG_RESULT($ANTLR_JAR) + fi +else + if test -f "${ANTLR_JAR}"; then + AC_MSG_RESULT($ANTLR_JAR) + else + AC_MSG_ERROR([antlr jar file not found: $ANTLR_JAR]) + fi +fi +AC_SUBST(ANTLR_JAR) + +AC_ARG_ENABLE([gjdoc], + [AS_HELP_STRING(--disable-gjdoc,compile GJDoc (disabled by --disable-gjdoc) [default=yes])], + [case "${enableval}" in + yes) BUILD_GJDOC=yes ;; + no) BUILD_GJDOC=no ;; + *) BUILD_GJDOC=yes ;; + esac], + [BUILD_GJDOC=maybe]) + +AC_MSG_CHECKING([whether to build gjdoc]) +if test "x$BUILD_GJDOC" = xmaybe; then + if test -f "${ANTLR_JAR}"; then + BUILD_GJDOC=yes + AC_MSG_RESULT(yes) + else + BUILD_GJDOC=no + AC_MSG_RESULT([no, antlr.jar not found]) + fi +else + AC_MSG_RESULT($BUILD_GJDOC) +fi +AM_CONDITIONAL(CREATE_GJDOC, test "x${BUILD_GJDOC}" = xyes) + +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 -# (1) We use an abnormal CXX (without library references), so we -# must cache it under a different name. -# (2) CC, CFLAGS, CXX, CXXFLAGS, LDFLAGS must not be 'precious', or -# the non-multilib-adjusted value will be used in multilibs. -# (3) As a side effect, we must SUBST CXXFLAGS, CFLAGS, and LDFLAGS ourselves. -# (4) As another side effect, automake doesn't automatically include them -# in Makefile.in. -# (5) For libstdc++-v3, -fno-builtin must be present here so that a +# 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" CXXFLAGS="$CXXFLAGS -fno-builtin" AC_PROG_CC AC_PROG_CXX CXXFLAGS="$save_CXXFLAGS" -m4_rename([glibcxx_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) -AC_SUBST(CFLAGS) -AC_SUBST(CXXFLAGS) -AC_SUBST(LDFLAGS) -AM_INIT_AUTOMAKE([1.9.0]) +AM_INIT_AUTOMAKE([no-dist 1.9.0]) AC_CHECK_TOOL(AS, as) AC_CHECK_TOOL(LD, ld) AC_CHECK_TOOL(AR, ar) AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(DLLTOOL, dlltool, :) AC_PROG_AWK -AC_CHECK_PROGS([JAR], [jar fastjar], no) +AC_CHECK_PROGS([JAR], [jar fastjar gjar], no) AC_PATH_PROG([ZIP], [zip], no) AC_PATH_PROG([UNZIP], [unzip], unzip) -AM_CONDITIONAL(BASH_JAR, test "$JAR" = no) -if test "$ZIP" = no; then - if test "$JAR" = no; then + +# 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 -else - # InfoZIP available, use the 'guaranteed' Bourne-shell JAR to build libjava - JAR=`pwd`/scripts/jar fi AC_PROG_INSTALL @@ -140,21 +194,40 @@ AC_EXEEXT # libgcj_cflags - host specific C compiler flags # libgcj_cxxflags - host specific C++ compiler flags # libgcj_javaflags - host specific Java compiler flags +# libgcj_sublib_ltflags - host specific Libtool flags +# libgcj_sublib_core_extra_deps - host specific extra +# dependencies for core sublib +# (these last two only used when building sublibs) +# and a number of others; see the list at the start of the file. libgcj_cflags= libgcj_cxxflags= libgcj_javaflags= +libgcj_sublib_ltflags= +libgcj_sublib_core_extra_deps= . ${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_SUBLIB_LTFLAGS="${libgcj_sublib_ltflags}" +LIBGCJ_SUBLIB_CORE_EXTRA_DEPS="${libgcj_sublib_core_extra_deps}" 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_SUBLIB_LTFLAGS) +AC_SUBST(LIBGCJ_SUBLIB_CORE_EXTRA_DEPS) AC_SUBST(LIBGCJ_LD_SYMBOLIC) +AC_SUBST(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) # Only use libltdl for non-newlib builds. if test "x${with_newlib}" = "x" || test "x${with_newlib}" = "xno"; then @@ -163,6 +236,26 @@ fi AC_CONFIG_HEADERS([include/config.h gcj/libgcj-config.h]) +# Possibly build libgcj as many sub-libraries. +AC_ARG_ENABLE(libgcj-sublibs, + AS_HELP_STRING([--enable-libgcj-sublibs], + [build libgcj as many sub-libraries])) + +if test -z "$enable_libgcj_sublibs"; then + enable_libgcj_sublibs=$enable_libgcj_sublibs_default +fi +AM_CONDITIONAL(BUILD_SUBLIBS, test "$enable_libgcj_sublibs" = yes) +if test "$enable_libgcj_sublibs" = yes ; then + # In theory we could make do with only one override and simply + # tag "_bc" onto the end of it when we use it to generate the + # spec, but that's an ugly thing to do when there are multiple + # words in the string and you're relying on the ordering to + # append the correct one. + libgcj_spec_lgcj_override="-lgcj-noncore -lgcj" + libgcj_spec_lgcj_bc_override="-lgcj-noncore -lgcj_bc" +fi + + # See if the user has requested runtime debugging. LIBGCJDEBUG="disable" AC_SUBST(LIBGCJDEBUG) @@ -170,10 +263,28 @@ AC_ARG_ENABLE(libgcj-debug, AS_HELP_STRING([--enable-libgcj-debug], [enable runtime debugging code]), [if test "$enable_libgcj_debug" = yes; then - AC_DEFINE(DEBUG, 1, [Define this if you want runtime debugging enabled.]) + AC_DEFINE(__GCJ_DEBUG, 1, [Define this if you want runtime debugging enabled.]) 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], @@ -183,6 +294,7 @@ 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) @@ -223,10 +335,17 @@ for peer in $peerlibs ; do 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 ;; *) @@ -236,7 +355,16 @@ for peer in $peerlibs ; do done AM_CONDITIONAL(XLIB_AWT, test "$use_xlib_awt" = yes) -AM_CONDITIONAL(QT_AWT, test "$use_qt_awt" = yes) +AM_CONDITIONAL(X_AWT, test "$use_x_awt" = yes) + +AC_DEFINE_UNQUOTED(AWT_TOOLKIT, "$TOOLKIT", [Name of default AWT toolkit]) + +expanded_prefix=$prefix +if test "X$prefix" = XNONE; then + expanded_prefix=${ac_default_prefix} +fi + +AC_DEFINE_UNQUOTED(LIBGCJ_PREFIX, "$expanded_prefix", [Installation prefix]) # Create standard.omit based on decisions we just made. cp $srcdir/standard.omit.in standard.omit @@ -244,10 +372,17 @@ if test "$use_xlib_awt" != yes; then echo gnu/awt/xlib >> standard.omit echo gnu/gcj/xlib >> standard.omit fi -if test "$use_qt_awt" != yes; then - echo gnu/java/awt/peer/qt >> 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 @@ -256,19 +391,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) @@ -294,28 +433,42 @@ else which_gcj=path fi fi +libgcjdir=`${PWDCMD-pwd}` +case $GCJ in +*" -B"*) + # Just in case there is a comma in the build dir, quote it for the + # sed command below. + case $libgcjdir in + *[[,\\]]*) qlibgcjdir=`echo "$libgcjdir" | sed 's:[[,\\]]:\\&:g'`;; + *) qlibgcjdir=$libgcjdir;; + esac + GCJ=`echo "$GCJ" | sed "s, -B, -B$qlibgcjdir/&,"` + ;; +*) + GCJ=$GCJ" -B$libgcjdir/" + ;; +esac 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' ;; cross) if test "x${with_newlib}" = "xyes"; then # FIXME (comment): Why is this needed? GCC_UNWIND_INCLUDE= - GCJ="${target_noncanonical}-gcj" - else - GCJ="${target_noncanonical}-gcj -B`${PWDCMD-pwd}`/" fi GCJH='$(target_noncanonical)-gcjh' ;; path) - GCJ="gcj -B`${PWDCMD-pwd}`/" GCJH=gcjh ;; esac +JAVAC="$GCJ -C" +export JAVAC +AC_SUBST(GCJ_FOR_ECJX) AC_SUBST(GCJH) +AC_SUBST(host_exeext) # Create it, so that compile/link tests don't fail test -f libgcj.spec || touch libgcj.spec @@ -324,6 +477,8 @@ test -f libgcj.spec || touch libgcj.spec # Set up to configure Classpath. # FIXME: no supported way to pass args in autoconf. +# 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" @@ -334,8 +489,17 @@ 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 "$browser_plugin_enabled" != yes; then + ac_configure_args="$ac_configure_args --disable-plugin" +else + ac_configure_args="$ac_configure_args --enable-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" @@ -343,9 +507,24 @@ 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 +if test "x$BUILD_GJDOC" = xno; then + ac_configure_args="$ac_configure_args --disable-gjdoc" +fi +# -Werror causes unavoidable problems in code using alsa. +ac_configure_args="$ac_configure_args --disable-regen-headers" +ac_configure_args="$ac_configure_args --disable-Werror" dnl --with-gcj=$GCJ dnl --with-javah=$GCJH -dnl gjdoc? dnl gtk-cairo -- just export here... dnl --enable-regen-headers? @@ -408,6 +587,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]), @@ -415,6 +611,24 @@ AC_ARG_WITH(java-home, AM_CONDITIONAL(JAVA_HOME_SET, test ! -z "$JAVA_HOME") AC_SUBST(JAVA_HOME) +suppress_libgcj_bc=no +AC_ARG_ENABLE(libgcj-bc, + AS_HELP_STRING([--enable-libgcj-bc], + [enable(default) or disable BC ABI for portions of libgcj]), + [if test "$enable_libgcj_bc" = "no"; then + suppress_libgcj_bc=yes + fi]) +AM_CONDITIONAL(SUPPRESS_LIBGCJ_BC, test "$suppress_libgcj_bc" = "yes") + +build_libgcj_reduced_reflection=no +AC_ARG_ENABLE(reduced-reflection, + AS_HELP_STRING([--enable-reduced-reflection], + [enable or disable(default) -freduced-reflection when building portions of libgcj]), + [if test "$enable_reduced_reflection" = "yes"; then + build_libgcj_reduced_reflection=yes + fi]) +AM_CONDITIONAL(BUILD_LIBGCJ_REDUCED_REFLECTION, test "$build_libgcj_reduced_reflection" = "yes") + # What is the native OS API for MinGW? AC_ARG_WITH(win32-nlsapi, AS_HELP_STRING([--with-win32-nlsapi=ansi or unicows or unicode], @@ -465,6 +679,7 @@ if test "$libgcj_interpreter" = yes; then fi INTERPRETER="$libgcj_interpreter" AC_SUBST(INTERPRETER) +AM_CONDITIONAL(INTERPRETER, test "$libgcj_interpreter" = yes) AC_MSG_CHECKING([for exception model to use]) AC_LANG_PUSH(C++) @@ -496,6 +711,9 @@ if AC_TRY_EVAL(ac_compile); then enable_sjlj_exceptions=yes elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=no + elif grep __cxa_end_cleanup conftest.s >/dev/null 2>&1 ; then + # ARM EH ABI. + enable_sjlj_exceptions=no fi fi CXXFLAGS="$old_CXXFLAGS" @@ -572,7 +790,6 @@ AC_ARG_WITH(ecos, TARGET_ECOS="$with_ecos" ) -PLATFORM_INNER_NAT_HDRS= case "$TARGET_ECOS" in no) case "$host" in *mingw*) @@ -585,7 +802,6 @@ case "$TARGET_ECOS" in PLATFORM=Posix PLATFORMNET=Posix PLATFORMH=posix.h - PLATFORM_INNER_NAT_HDRS='java/lang/ConcreteProcess$$ProcessManager.h' ;; esac ;; @@ -596,7 +812,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, @@ -617,10 +833,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 ])) @@ -631,14 +845,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. @@ -647,13 +860,21 @@ 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) +# Likewise for natVMSecureRandom.cc +test -d gnu/java/security || mkdir gnu/java/security +test -d gnu/java/security/jce || mkdir gnu/java/security/jce +test -d gnu/java/security/jce/prng || mkdir gnu/java/security/jce/prng +AC_CONFIG_LINKS(gnu/java/security/jce/prng/natVMSecureRandom.cc:gnu/java/security/jce/prng/natVMSecureRandom${FILE-${PLATFORM}}.cc) + case "${host}" in *mingw*) SYSTEMSPEC="-lgdi32 -lws2_32" @@ -661,15 +882,15 @@ case "${host}" in SYSTEMSPEC="-lunicows $SYSTEMSPEC" fi ;; + *-*-darwin[[912]]*) + SYSTEMSPEC="-allow_stack_execute" + ;; *) SYSTEMSPEC= ;; esac AC_SUBST(SYSTEMSPEC) -LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -rpath `${PWDCMD-pwd}`/.libs" -AC_SUBST(LIBGCJTESTSPEC) - AC_ARG_WITH(system-zlib, AS_HELP_STRING([--with-system-zlib], [use installed libz])) @@ -680,24 +901,12 @@ 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 +LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -rpath `${PWDCMD-pwd}`/.libs" + +LIBSTDCXXSPEC= # extra LD Flags which are required for targets case "${host}" in *-*-darwin[[0-7]].*) @@ -706,8 +915,38 @@ case "${host}" in # on Darwin -single_module speeds up loading of the dynamic libraries. extra_ldflags_libjava=-Wl,-single_module ;; +arm*linux*eabi) + # Some of the ARM unwinder code is actually in libstdc++. We + # could in principle replicate it in libgcj, but it's better to + # have a dependency on libstdc++. + extra_ldflags='-L$(here)/../libstdc++-v3/src/.libs -lstdc++' + LIBSTDCXXSPEC=-lstdc++ + LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -L`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -rpath `${PWDCMD-pwd}`/.libs:`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -lstdc++" + ;; +*-*-cygwin) + extra_ldflags_libjava=-liconv + ;; esac + +# Check for --no-merge-exidx-entries, an ARM-specific linker option. +AC_CACHE_CHECK([for --no-merge-exidx-entries], [libgcj_cv_exidx], + [saved_ldflags="$LDFLAGS" + LDFLAGS="${LDFLAGS} -Wl,--no-merge-exidx-entries" + AC_LINK_IFELSE([int main(void){ return 0;} ], + [eval "libgcj_cv_exidx=yes"], + [eval "libgcj_cv_exidx=no"]) + LDFLAGS="${saved_ldflags}"] +) +if test "${libgcj_cv_exidx}" = "yes"; then + SYSTEMSPEC="${SYSTEMSPEC} --no-merge-exidx-entries" + extra_ldflags="${extra_ldflags} -Wl,--no-merge-exidx-entries" +fi + AC_SUBST(extra_ldflags_libjava) +AC_SUBST(extra_ldflags) +AC_SUBST(LIBSTDCXXSPEC) + +AC_SUBST(LIBGCJTESTSPEC) # Allow the GC to be disabled. Can be useful when debugging. AC_MSG_CHECKING([for garbage collector to use]) @@ -761,7 +1000,7 @@ case "$THREADS" in no | none | single) THREADS=none ;; - posix | posix95 | pthreads) + aix | posix | posix95 | pthreads) THREADS=posix case "$host" in *-*-linux*) @@ -786,6 +1025,7 @@ THREADINCS= THREADDEPS= THREADH= THREADSPEC= +THREADSTARTFILESPEC= case "$THREADS" in posix) case "$host" in @@ -837,6 +1077,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) @@ -848,17 +1102,38 @@ 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) +if test "$enable_shared" != yes; then + use_libgcj_bc=no +fi +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_LGCJ=-lgcj +LIBGCJ_SPEC_LGCJ_BC=-lgcj_bc +if test x"$libgcj_spec_lgcj_override" != x ; then + LIBGCJ_SPEC_LGCJ=$libgcj_spec_lgcj_override +fi +if test x"$libgcj_spec_lgcj_bc_override" != x ; then + LIBGCJ_SPEC_LGCJ_BC=$libgcj_spec_lgcj_bc_override +fi +LIBGCJ_SPEC="%{s-bc-abi:} $LIBGCJ_SPEC_LGCJ" +if test "$use_libgcj_bc" = yes; then + LIBGCJ_SPEC="%{static|static-libgcj|!s-bc-abi:$LIBGCJ_SPEC_LGCJ;:$LIBGCJ_SPEC_LGCJ_BC}" + LIBGCJ_BC_SPEC="%{findirect-dispatch:-fPIC}" +fi +AC_SUBST(LIBGCJ_SPEC) +AC_SUBST(LIBGCJ_BC_SPEC) + HASH_SYNC_SPEC= # Hash synchronization is only useful with posix threads right now. if test "$enable_hash_synchronization" = yes && test "$THREADS" != "none"; then @@ -870,7 +1145,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 @@ -881,41 +1156,43 @@ if test "x${with_newlib}" = "xyes"; then # we'll have. AC_DEFINE(HAVE_MEMMOVE, 1, [Define if you have memmove.]) AC_DEFINE(HAVE_MEMCPY, 1, [Define if you have memcpy.]) - AC_DEFINE(HAVE_STRERROR, 1, [Define if you have strerror.]) AC_DEFINE(HAVE_TIME, 1, [Define if you have time.]) AC_DEFINE(HAVE_GMTIME_R, 1, [Define if you have the 'gmtime_r' function]) AC_DEFINE(HAVE_LOCALTIME_R, 1, [Define if you have the 'localtime_r' function.]) 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_r select fstat open fsync sleep opendir \ + localtime_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 mmap]) + getrlimit sigaction ftruncate mmap \ + getifaddrs]) AC_CHECK_FUNCS(inet_aton inet_addr, break) - AC_CHECK_HEADERS(execinfo.h unistd.h dlfcn.h) + 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, [ 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"$build" = x"$host"; then + 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 @@ -1006,9 +1283,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. @@ -1144,7 +1418,16 @@ else # On Solaris, and maybe other architectures, the Boehm collector # requires -ldl. if test "$GC" = boehm; then - AC_CHECK_LIB(dl, main, SYSTEMSPEC="$SYSTEMSPEC -ldl") + case "${host}" in + mips-sgi-irix6*) + # IRIX 6 lacks a N64 libdl.so, but only the N32 (default multilib) + # libgcj.spec is used, so override here + SYSTEMSPEC="$SYSTEMSPEC %{!mabi=64:-ldl}" + ;; + *) + AC_CHECK_LIB(dl, main, SYSTEMSPEC="$SYSTEMSPEC -ldl") + ;; + esac fi fi @@ -1166,7 +1449,7 @@ if test ! -f gnu/classpath/Configuration.java; then test -d gnu || mkdir gnu test -d gnu/classpath || mkdir gnu/classpath # Note that it is not crucial that all the values here be correct. - sed -e "s,@prefix@,$prefix," \ + sed -e "s,@prefix@,$expanded_prefix," \ -e "s,@VERSION@,$VERSION," \ -e "s,@LIBDEBUG@,false," \ -e "s,@INIT_LOAD_LIBRARY@,false," \ @@ -1174,6 +1457,8 @@ 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@,," \ + -e "s,@WANT_NATIVE_BIG_INTEGER@,false," \ < $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, @@ -1215,9 +1500,12 @@ AC_SUBST(CHECKREFSPEC) AC_SUBST(EXCEPTIONSPEC) AC_SUBST(BACKTRACESPEC) AC_SUBST(IEEESPEC) +AC_SUBST(ATOMICSPEC) 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) +AM_CONDITIONAL(INSTALL_BINARIES, test -z "${with_multisubdir}") AC_SUBST(GCC_UNWIND_INCLUDE) # Process the option "--enable-version-specific-runtime-libs" @@ -1253,22 +1541,30 @@ AC_SUBST(toolexecdir) AC_SUBST(toolexecmainlibdir) AC_SUBST(toolexeclibdir) -# Determine where the standard .db file is found. +# Determine gcj and libgcj version number. +gcjversion=`cat "$srcdir/../gcc/BASE-VER"` +libgcj_soversion=`awk -F: '/^[[^#]].*:/ { print $1 }' $srcdir/libtool-version` +GCJVERSION=$gcjversion +AC_SUBST(GCJVERSION) +AC_DEFINE_UNQUOTED(GCJVERSION, "$GCJVERSION", [Short GCJ version ID]) + +# Determine where the standard .db file and GNU Classpath JNI +# libraries are found. +gcjsubdir=gcj-$gcjversion-$libgcj_soversion 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)' ;; + .) + dbexecdir='$(libdir)/'$gcjsubdir # Avoid /. + ;; + *) + dbexecdir='$(libdir)/'$multi_os_directory/$gcjsubdir + ;; esac AC_SUBST(dbexecdir) +AC_SUBST(gcjsubdir) -# 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 @@ -1279,16 +1575,28 @@ TL_AC_GXX_INCLUDE_DIR # for now. If you change this, you also must update natFile.cc. 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 \ + sys/socket.h netinet/in.h arpa/inet.h netdb.h \ pwd.h sys/config.h stdint.h langinfo.h locale.h \ - dirent.h sys/rw_lock.h]) + dirent.h sys/rw_lock.h magic.h ifaddrs.h]) + +# sys/socket.h is a prerequisite for net/if.h on Solaris. +AC_CHECK_HEADERS(net/if.h, [], [], [ +#ifdef HAVE_SYS_SOCKET_H +#include +#endif +]) + 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 @@ -1355,8 +1663,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_CHECK_PROGS(PERL, perl, false) SYSDEP_SOURCES= @@ -1407,9 +1713,15 @@ case "${host}" in mips*-*-linux*) SIGNAL_HANDLER=include/mips-signal.h ;; - *-*-darwin*) + m68*-*-linux*) + SIGNAL_HANDLER=include/dwarf2-signal.h + ;; + powerpc*-*-darwin* | i?86-*-darwin[[912]]* | x86_64-*-darwin[[912]]*) SIGNAL_HANDLER=include/darwin-signal.h ;; + powerpc*-*-aix*) + SIGNAL_HANDLER=include/aix-signal.h + ;; *) SIGNAL_HANDLER=include/default-signal.h ;; @@ -1439,6 +1751,22 @@ 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= @@ -1457,6 +1785,205 @@ AC_SUBST(here) # We get this from the environment. AC_SUBST(GCJFLAGS) +AC_ARG_WITH([python-dir], + AS_HELP_STRING([--with-python-dir], + [the location to install Python modules. This path should NOT include the prefix.]), + [with_python_dir=$withval], [with_python_dir=""]) + +if test "x${with_python_dir}" = "x" +then + # Needed for installing Python modules during make install. + python_mod_dir="\${prefix}/share/python" + # Needed for substituting into aot-compile* + python_mod_dir_expanded="${expanded_prefix}/share/python" +else + python_mod_dir="\${prefix}${with_python_dir}" + python_mod_dir_expanded="${expanded_prefix}${with_python_dir}" +fi +AC_MSG_RESULT(Python modules dir: ${python_mod_dir_expanded}); +AC_SUBST(python_mod_dir) +AC_SUBST(python_mod_dir_expanded) + +# needed for aot-compile-rpm +MAKE=`which make` +AC_SUBST(MAKE) + +AC_ARG_ENABLE([aot-compile-rpm], + [AS_HELP_STRING([--enable-aot-compile-rpm], + [enable installation of aot-compile-rpm [default=no]])], + [case "${enableval}" in + yes) AOT_RPM_ENABLED=yes ;; + no) AOT_RPM_ENABLED=no ;; + *) AC_MSG_ERROR([Unknown argument to enable/disable aot-compile-rpm]) ;; + esac], + [AOT_RPM_ENABLED=no] +) +AM_CONDITIONAL(INSTALL_AOT_RPM, test "x${AOT_RPM_ENABLED}" = xyes) + +AC_ARG_ENABLE([java-home], + [AS_HELP_STRING([--enable-java-home], + [create a standard JDK-style directory layout in the install tree [default=no]])], + [case "${enableval}" in + yes) JAVA_HOME_ENABLED=yes ;; + no) JAVA_HOME_ENABLED=no ;; + *) AC_MSG_ERROR([Unknown argument to enable/disable java-home]) ;; + esac], + [JAVA_HOME_ENABLED=no] +) +AM_CONDITIONAL(CREATE_JAVA_HOME, test "x${JAVA_HOME_ENABLED}" = xyes) + +# Only do these checks if java-home above is enabled. +if test "x${JAVA_HOME_ENABLED}" = xyes +then + + AC_ARG_WITH([gcc-suffix], + AS_HELP_STRING([--with-gcc-suffix], + [the GCC tool suffix (defaults to empty string)]), + [gcc_suffix=$withval], [gcc_suffix=""]) + AC_MSG_RESULT(GCC suffix: ${gcc_suffix}) + AC_SUBST(gcc_suffix) + + AC_ARG_WITH([arch-directory], + AS_HELP_STRING([--with-arch-directory], + [the arch directory under jre/lib (defaults to auto-detect)]), + [host_cpu=$withval], [host_cpu=""]) + + AC_ARG_WITH([os-directory], + AS_HELP_STRING([--with-os-directory], + [the os directory under include (defaults to auto-detect)]), + [host_os=$withval], [host_os=""]) + + AC_ARG_WITH([origin-name], + AS_HELP_STRING([--with-origin-name], + [the JPackage origin name of this package (default is gcj${gcc_suffix}]), + [origin_name=$withval], [origin_name=gcj${gcc_suffix}]) + AC_MSG_RESULT(JPackage origin name: ${origin_name}) + + AC_ARG_WITH([arch-suffix], + AS_HELP_STRING([--with-arch-suffix], + [the arch directory suffix (default is the empty string]), + [arch_suffix=$withval], [arch_suffix=""]) + AC_MSG_RESULT(arch suffix: ${arch_suffix}) + + AC_ARG_WITH([jvm-root-dir], + AS_HELP_STRING([--with-jvm-root-dir], + [where to install SDK (default is ${prefix}/lib/jvm)]), + [jvm_root_dir=$withval], [jvm_root_dir="\${prefix}/lib/jvm"]) + AC_MSG_RESULT(JVM root installation directory: ${jvm_root_dir}) + + AC_ARG_WITH([jvm-jar-dir], + AS_HELP_STRING([--with-jvm-jar-dir], + [where to install jars (default is ${prefix}/lib/jvm-exports)]), + [jvm_jar_dir=$withval], [jvm_jar_dir=\${prefix}/lib/jvm-exports]) + AC_MSG_RESULT(JAR root installation directory: ${jvm_jar_dir}) + + JAVA_VERSION=1.5.0 + BUILD_VERSION=0 + AC_SUBST(JAVA_VERSION) + AC_SUBST(BUILD_VERSION) + AC_MSG_RESULT(Java version: ${JAVA_VERSION}) + + jre_dir=jre + jre_lnk=jre-${JAVA_VERSION}-${origin_name} + sdk_lnk=java-${JAVA_VERSION}-${origin_name} + + JVM_ROOT_DIR=${jvm_root_dir} + AC_SUBST(JVM_ROOT_DIR) + AC_MSG_RESULT(JVM ROOT directory: ${JVM_ROOT_DIR}) + + JVM_JAR_ROOT_DIR=${jvm_jar_dir} + AC_SUBST(JVM_JAR_ROOT_DIR) + AC_MSG_RESULT(JVM JAR ROOT directory: ${JVM_JAR_ROOT_DIR}) + + JVM_JAR_DIR=${jvm_jar_dir} + AC_SUBST(JVM_JAR_DIR) + AC_MSG_RESULT(JVM JAR directory: ${JVM_JAR_DIR}) + + JRE_DIR=${jre_dir} + AC_SUBST(JRE_DIR) + + JRE_LNK=${jre_lnk} + AC_SUBST(JRE_LNK) + + SDK_LNK=${sdk_lnk} + AC_SUBST(SDK_LNK) + + SDK_BIN_DIR=${jvm_root_dir}/bin + AC_SUBST(SDK_BIN_DIR) + AC_MSG_RESULT(SDK tools directory: ${SDK_BIN_DIR}) + + SDK_LIB_DIR=${jvm_root_dir}/lib + AC_SUBST(SDK_LIB_DIR) + AC_MSG_RESULT(SDK jar directory: ${SDK_LIB_DIR}) + + SDK_INCLUDE_DIR=${jvm_root_dir}/include + AC_SUBST(SDK_INCLUDE_DIR) + AC_MSG_RESULT(SDK include directory: ${SDK_INCLUDE_DIR}) + + JRE_BIN_DIR=${jvm_root_dir}/${jre_dir}/bin + AC_SUBST(JRE_BIN_DIR) + AC_MSG_RESULT(JRE tools directory: ${JRE_BIN_DIR}) + + JRE_LIB_DIR=${jvm_root_dir}/${jre_dir}/lib + AC_SUBST(JRE_LIB_DIR) + AC_MSG_RESULT(JRE lib directory: ${JRE_LIB_DIR}) + + # Find gcj prefix using gcj found in PATH. + gcj_prefix=`which gcj${gcc_suffix} | sed "s%/bin/gcj${gcc_suffix}%%"` + + # Where do the gcj binaries live? + # For jhbuild based builds, they all live in a sibling of bin called + # gcj-bin. Check for gcj-bin first, and use bin otherwise. + GCJ_BIN_DIR=`if test -d ${gcj_prefix}/gcj-bin; then echo ${gcj_prefix}/gcj-bin; else echo ${gcj_prefix}/bin; fi` + AC_SUBST(GCJ_BIN_DIR) + AC_MSG_RESULT(GCJ tools directory: ${GCJ_BIN_DIR}) + + AC_MSG_RESULT(host is ${host}) + if test "x${host_cpu}" = "x" + then + case ${host} in + *-mingw* | *-cygwin*) + host_cpu=x86;; + i486-* | i586-* | i686-*) + host_cpu=i386;; + x86_64-*) + host_cpu=amd64;; + *) + host_cpu=${host_cpu};; + esac + fi + AC_MSG_RESULT(arch directory: ${host_cpu}) + CPU=${host_cpu} + AC_SUBST(CPU) + + if test "x${host_os}" = "x" + then + case ${host} in + *-mingw* | *-cygwin*) + host_os=win32;; + *-linux*) + host_os=linux;; + *) + host_os=${host_os};; + esac + fi + echo os directory: ${host_os} + OS=${host_os} + AC_SUBST(OS) + + # make an expanded $libdir, for substituting into + # scripts (and other non-Makefile things). + LIBDIR=$libdir + if test "x${exec_prefix}" = "xNONE" + then + lib_exec_prefix=$expanded_prefix + else + lib_exec_prefix=$exec_prefix + fi + LIBDIR=`echo $libdir | sed "s:\\\${exec_prefix}:$lib_exec_prefix:g"` + AC_SUBST(LIBDIR) +fi + AC_CONFIG_FILES([ Makefile libgcj.pc @@ -1465,35 +1992,18 @@ libgcj-test.spec gcj/Makefile include/Makefile testsuite/Makefile +contrib/aotcompile.py +contrib/aot-compile +contrib/aot-compile-rpm +contrib/generate-cacerts.pl +contrib/rebuild-gcj-db ]) -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 - ;; -esac -for ac_multi_file in $CONFIG_FILES; do - case $ac_multi_file in - */Makefile) - grep "^MULTI[[^ ]]* =" Makefile >> "$ac_multi_file" ;; - esac -done -], -srcdir=${srcdir} -host=${host} -target=${target} -with_multisubdir=${with_multisubdir} -ac_configure_args="${multilib_arg} ${ac_configure_args}" -CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -libgcj_basedir=${libgcj_basedir} -CC="${CC}" -CXX="${CXX}" -ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}" -) +if test ${multilib} = yes; then + multilib_arg="--enable-multilib" +else + multilib_arg= +fi +AC_CONFIG_FILES([scripts/jar], [chmod +x scripts/jar]) AC_OUTPUT