*) 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]
+)
+
# It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
GCC_NO_EXECUTABLES
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], 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
+ AC_MSG_ERROR([cannot find neither zip nor jar, cannot continue])
+ fi
+else
+ # InfoZIP available, use the 'guaranteed' Bourne-shell JAR to build libjava
+ JAR=`pwd`/scripts/jar
+fi
AC_PROG_INSTALL
AC_SUBST(LIBGCJ_JAVAFLAGS)
AC_SUBST(LIBGCJ_LD_SYMBOLIC)
-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"
peerlibs="`echo ${enable_java_awt} | tr ',' ' '`"
use_xlib_awt=""
use_gtk_awt=""
+use_qt_awt=""
# The default toolkit to use is the first one specified.
TOOLKIT=
AC_SUBST(TOOLKIT)
echo "*** xlib peers requested but no X library available" 1>&2
exit 1
else
- # This code has bit-rotted a bit.
- echo "*** xlib peers can't currently be compiled -- disabling" 1>&2
-# use_xlib_awt="yes"
-# if test -z "$TOOLKIT"; then
-# TOOLKIT=gnu.awt.xlib.XToolkit
-# fi
+ use_xlib_awt="yes"
+ if test -z "$TOOLKIT"; then
+ TOOLKIT=gnu.awt.xlib.XToolkit
+ fi
fi
;;
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
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
+ ;;
no)
use_xlib_awt=
use_gtk_awt=
+ use_qt_awt=
break
;;
*)
done
AM_CONDITIONAL(XLIB_AWT, test "$use_xlib_awt" = yes)
-AM_CONDITIONAL(GTK_AWT, test "$use_gtk_awt" = yes)
+# Create standard.omit based on decisions we just made.
+cp $srcdir/standard.omit.in standard.omit
+if test "$use_xlib_awt" != yes; then
+ echo gnu/awt/xlib >> standard.omit
+ echo gnu/gcj/xlib >> standard.omit
+fi
if test -z "${with_multisubdir}"; then
builddotdot=.
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
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(GCJH)
-AC_SUBST(ZIP)
# Create it, so that compile/link tests don't fail
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"
+ac_configure_args="$ac_configure_args --enable-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"
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"
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
dnl --with-gcj=$GCJ
dnl --with-javah=$GCJH
dnl gjdoc?
TARGET_ECOS="$with_ecos"
)
-supply_backtrace=no
-
PLATFORM_INNER_NAT_HDRS=
case "$TARGET_ECOS" in
no) case "$host" in
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[[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
+ ;;
+esac
+AC_SUBST(extra_ldflags_libjava)
+
# Allow the GC to be disabled. Can be useful when debugging.
AC_MSG_CHECKING([for garbage collector to use])
AC_ARG_ENABLE(java-gc,
THREADDEPS=
THREADH=
THREADSPEC=
+THREADSTARTFILESPEC=
case "$THREADS" in
posix)
case "$host" 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'
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)
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
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 \
+ access stat lstat mkdir rename rmdir unlink utime chmod readlink \
nl_langinfo setlocale \
inet_pton uname inet_ntoa \
- fork execvp pipe sigaction ftruncate])
+ fork execvp pipe 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(execinfo.h unistd.h dlfcn.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
- ])
+ 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
AC_CHECK_FILES(/proc/self/exe, [
AC_DEFINE(HAVE_PROC_SELF_EXE, 1, [Define if you have /proc/self/exe])])
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
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.
#--------------------------------------------------------------------
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
if test ! -f gnu/classpath/Configuration.java; then
test -d gnu || mkdir gnu
test -d gnu/classpath || mkdir gnu/classpath
- sed -e "s,@LIBGCJDEBUG@,$LIBGCJDEBUG," \
- -e "s,@TOOLKIT@,$TOOLKIT," \
- < $srcdir/gnu/classpath/Configuration.java.in \
+ # Note that it is not crucial that all the values here be correct.
+ sed -e "s,@prefix@,$prefix," \
+ -e "s,@VERSION@,$VERSION," \
+ -e "s,@LIBDEBUG@,false," \
+ -e "s,@INIT_LOAD_LIBRARY@,false," \
+ -e "s,@@,$LIBGCJDEBUG," \
+ -e "s,@default_toolkit@,$TOOLKIT," \
+ -e "s,@JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@,false," \
+ -e "s,@GTK_CAIRO_ENABLED@,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,
# but we add /dev/null to the input list so that grep will print the
# filename of Configuration.java in case it finds any matches.
- if grep @ gnu/classpath/Configuration.java /dev/null; then
+ if grep '@.*@' gnu/classpath/Configuration.java /dev/null; then
AC_MSG_ERROR([configure.ac is missing the substitutions above])
fi
fi
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 /.
+ ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/gcj-`cat $srcdir/../gcc/BASE-VER`"
+ ;;
+ *)
+ dbexecdir='$(libdir)/'$multi_os_directory'/gcj-$(gcc_version)'
+ ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/$multi_os_directory/gcj-`cat $srcdir/../gcc/BASE-VER`"
+ ;;
+esac
+AC_SUBST(dbexecdir)
+
# Determine gcj version number.
gcjversion=`$GCJ -v 2>&1 | sed -n 's/^.*version \([[^ ]]*\).*$/\1/p'`
GCJVERSION=$gcjversion
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 ifaddrs.h])
AC_CHECK_HEADERS(inttypes.h, [
AC_DEFINE(HAVE_INTTYPES_H, 1, [Define if <inttypes.h> is available])
AC_DEFINE(JV_HAVE_INTTYPES_H, 1, [Define if <inttypes.h> is available])
[AC_MSG_RESULT(no)])])])
AC_FUNC_ALLOCA
-AC_FUNC_MMAP
AC_CHECK_PROGS(PERL, perl, false)
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
;;
multilib_arg=
fi
+# See if we support thread-local storage.
+GCC_CHECK_TLS
+# 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)
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