X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libjava%2Fconfigure.ac;h=93b25df27e62b2fa91ae7e62d131d4d53afe4091;hb=257278ce24d0d3498754fc30ed0d5d2d3690f4d8;hp=b2037d2815290ac95a4d75157724436dcddb00ad;hpb=7d89f9e4085cf696c712c111119d2c5f4a48b9d6;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libjava/configure.ac b/libjava/configure.ac index b2037d28152..93b25df27e6 100644 --- a/libjava/configure.ac +++ b/libjava/configure.ac @@ -142,34 +142,22 @@ 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_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_force([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 gjar], no) AC_PATH_PROG([ZIP], [zip], no) @@ -178,7 +166,7 @@ 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 + echo $srcdir/configure.ac | $JAR -cf@ config-test.jar >/dev/null 2>&1 if test -f config-test.jar; then rm -f config-test.jar else @@ -207,13 +195,16 @@ AC_EXEEXT # libgcj_cxxflags - host specific C++ compiler flags # libgcj_javaflags - host specific Java compiler flags # libgcj_sublib_ltflags - host specific Libtool flags -# (only used when building sublibs) +# 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 @@ -223,18 +214,32 @@ if test -z "$libgcj_ld_symbolic"; then libgcj_ld_symbolic=$SYMBOLIC_LDFLAGS fi +# for windows native targets enforce export of all symbols for shared libgcj. +libgcj_ld_export_all= +case "$host" in + *mingw*) + libgcj_ld_export_all=-Wl,--export-all-symbols + ;; + *) + ;; +esac + 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}" +LIBGCJ_LD_EXPORT_ALL="${libgcj_ld_export_all}" 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) +AC_SUBST(LIBGCJ_LD_EXPORT_ALL) # Only use libltdl for non-newlib builds. if test "x${with_newlib}" = "x" || test "x${with_newlib}" = "xno"; then @@ -401,7 +406,8 @@ NATIVE=yes # Which gcj and host gcj (for ecjx) do we use? which_gcj=default host_exeext=${ac_exeext} -GCJ_FOR_ECJX= +GCJ_FOR_ECJX='$(GCJ)' +GCC_FOR_ECJX='$(CXX)' 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 @@ -409,6 +415,7 @@ if test -n "${with_cross_host}"; then NATIVE=no cross_host_exeext= GCJ_FOR_ECJX="${with_cross_host}-gcj" + GCC_FOR_ECJX="${with_cross_host}-gcc" case "${with_cross_host}" in *mingw* | *cygwin*) cross_host_exeext=.exe @@ -462,7 +469,7 @@ case "${which_gcj}" in cross) if test "x${with_newlib}" = "xyes"; then # FIXME (comment): Why is this needed? - GCC_UNWIND_INCLUDE= + LIBGCC_UNWIND_INCLUDE= fi GCJH='$(target_noncanonical)-gcjh' ;; @@ -474,6 +481,7 @@ JAVAC="$GCJ -C" export JAVAC AC_SUBST(GCJ_FOR_ECJX) +AC_SUBST(GCC_FOR_ECJX) AC_SUBST(GCJH) AC_SUBST(host_exeext) @@ -551,6 +559,7 @@ AC_SUBST(INCLTDL) AC_SUBST(LIBLTDL) AC_SUBST(DIRLTDL) AC_PROG_LIBTOOL +ACX_LT_HOST_FLAGS AM_PROG_GCJ AM_PROG_CC_C_O @@ -889,6 +898,9 @@ case "${host}" in SYSTEMSPEC="-lunicows $SYSTEMSPEC" fi ;; + *-*-darwin[[912]]*) + SYSTEMSPEC="%{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}" + ;; *) SYSTEMSPEC= ;; @@ -919,10 +931,7 @@ case "${host}" in # on Darwin -single_module speeds up loading of the dynamic libraries. extra_ldflags_libjava=-Wl,-single_module ;; -*-*-darwin[[912]]*) - extra_gij_ldflags=-Wl,-allow_stack_execute - ;; -arm*linux*eabi) +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++. @@ -933,11 +942,47 @@ arm*linux*eabi) *-*-cygwin) extra_ldflags_libjava=-liconv ;; +*-*-mingw*) + extra_ldflags_libjava=-lws2_32 + ;; esac + +LIBMATHSPEC= +# extra LD Flags which are required for targets +case "${host}" in +*-*-darwin*) + ;; +*) + LIBMATHSPEC=-lm + ;; +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" + # The IRIX 6 ld doesn't recognize --no-merge-exidx-entries, but only + # warns about unknown options, which breaks the testsuite. So enable + # AC_LANG_WERROR, but there's currently (autoconf 2.64) no way to turn + # it off again. As a workaround, save and restore werror flag like + # AC_PATH_XTRA. + ac_xsave_[]_AC_LANG_ABBREV[]_werror_flag=$ac_[]_AC_LANG_ABBREV[]_werror_flag + AC_LANG_WERROR + AC_LINK_IFELSE([int main(void){ return 0;} ], + [eval "libgcj_cv_exidx=yes"], + [eval "libgcj_cv_exidx=no"]) + ac_[]_AC_LANG_ABBREV[]_werror_flag=$ac_xsave_[]_AC_LANG_ABBREV[]_werror_flag + 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_gij_ldflags) AC_SUBST(extra_ldflags) AC_SUBST(LIBSTDCXXSPEC) +AC_SUBST(LIBMATHSPEC) AC_SUBST(LIBGCJTESTSPEC) @@ -993,7 +1038,7 @@ case "$THREADS" in no | none | single) THREADS=none ;; - aix | posix | posix95 | pthreads) + aix | posix | pthreads) THREADS=posix case "$host" in *-*-linux*) @@ -1003,7 +1048,7 @@ case "$THREADS" in ;; win32) ;; - decosf1 | irix | mach | os2 | solaris | dce | vxworks) + dce | vxworks) AC_MSG_ERROR(thread package $THREADS not yet supported) ;; *) @@ -1025,7 +1070,7 @@ case "$THREADS" in *-*-cygwin*) # Don't set THREADLIBS here. Cygwin doesn't have -lpthread. ;; - *-*-freebsd[[1234]]*) + *-*-freebsd[[34]].*) # Before FreeBSD 5, it didn't have -lpthread (or any library which # merely adds pthread_* functions) but it does have a -pthread switch # which is required at link-time to select -lc_r *instead* of -lc. @@ -1049,6 +1094,23 @@ case "$THREADS" in THREADLIBS='-lpthread -lrt' THREADSPEC='-lpthread -lrt' ;; + *-*-solaris2.8) + # Always use alternate thread library on Solaris 8. Need libthread + # for TLS support. + # Need -Wl,-R to get it through libtool ... + THREADLIBS='-L/usr/lib/lwp$(MULTISUBDIR) -Wl,-R -Wl,/usr/lib/lwp$(MULTISUBDIR) -lpthread -lthread' + # ... while ld only accepts -R. + THREADSPEC='-L/usr/lib/lwp%{m64:/64} -R/usr/lib/lwp%{m64:/64} -lpthread -lthread' + ;; + *-*-solaris2.9) + # As on Solaris 8, need libthread for TLS support. + THREADLIBS='-lpthread -lthread' + THREADSPEC='-lpthread -lthread' + ;; + *-*-darwin*) + # Don't set THREADLIBS or THREADSPEC as Darwin already + # provides pthread via libSystem. + ;; *) THREADLIBS=-lpthread THREADSPEC=-lpthread @@ -1083,9 +1145,14 @@ case "$THREADS" in # 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' + case "$host" in + *-w64-mingw*) + ;; + *) + THREADSTARTFILESPEC='crtmt%O%s' + ;; + esac ;; - none) THREADH=no-threads.h ;; @@ -1137,8 +1204,8 @@ 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$(multi_basedir)/./libjava/../gcc' +# We're in the tree with libgcc, and need to include some of its headers. +LIBGCC_UNWIND_INCLUDE='-I$(multi_basedir)/./libjava/../libgcc' if test "x${with_newlib}" = "xyes"; then # We are being configured with a cross compiler. AC_REPLACE_FUNCS @@ -1193,6 +1260,8 @@ else AM_ICONV AM_LC_MESSAGES AC_STRUCT_TIMEZONE + LDLIBICONV=`echo " $LIBICONV " | sed "s/${acl_cv_wl--Wl,}/ /g; s/,/ /g"` + AC_SUBST([LDLIBICONV]) AC_CHECK_FUNCS(gethostbyname_r, [ AC_DEFINE(HAVE_GETHOSTBYNAME_R, 1, @@ -1413,13 +1482,14 @@ else if test "$GC" = boehm; then 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}" - ;; + # While IRIX 6 has libdl for the O32 and N32 ABIs, the N64 one is + # missing. It's unnecessary anyway since dlopen lives in libc. + ;; + *-*-darwin*) + ;; *) AC_CHECK_LIB(dl, main, SYSTEMSPEC="$SYSTEMSPEC -ldl") - ;; + ;; esac fi fi @@ -1499,7 +1569,7 @@ 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) +AC_SUBST(LIBGCC_UNWIND_INCLUDE) # Process the option "--enable-version-specific-runtime-libs" # Calculate toolexeclibdir @@ -1568,9 +1638,17 @@ 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 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]) @@ -1654,11 +1732,12 @@ SYSDEP_SOURCES= SIGNAL_HANDLER_AUX= case "${host}" in + alpha*-dec-osf* | mips-sgi-irix* | *-*-solaris2*) + SIGNAL_HANDLER=include/posix-signal.h + ;; i?86-*-linux*) SIGNAL_HANDLER=include/i386-signal.h - ;; - sparc*-sun-solaris*) - SIGNAL_HANDLER=include/sparc-signal.h + SIGNAL_HANDLER_AUX=include/x86_64-signal.h ;; # ia64-*) # SYSDEP_SOURCES=sysdep/ia64.c @@ -1742,21 +1821,48 @@ 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" + [AC_ARG_ENABLE(symvers, + AS_HELP_STRING([--disable-symvers], + [disable symbol versioning for libjava]), + [case "$enableval" in + yes|gnu*) libjava_cv_anon_version_script=yes ;; + no) libjava_cv_anon_version_script=no ;; + *) AC_MSG_ERROR([Unknown argument to enable/disable symvers]);; + esac], + [libjava_cv_anon_version_script=yes] + ) + if test x$libjava_cv_anon_version_script = xyes; then + save_CFLAGS="$CFLAGS"; save_LDFLAGS="$LDFLAGS" + 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=gnu], + [libjava_cv_anon_version_script=no]) + if test x$libjava_cv_anon_version_script = xno; then + case "$target_os" in + solaris2*) + LDFLAGS="$save_LDFLAGS" + LDFLAGS="$LDFLAGS -shared -Wl,-M,conftest.map" + # Sun ld doesn't understand wildcards here. + echo '{ global: globalsymbol; local: *; };' > conftest.map + AC_TRY_LINK(void globalsymbol (void) {} void localsymbol (void) {},, + [libjava_cv_anon_version_script=sun], []) + ;; + esac + fi + CFLAGS="$save_CFLAGS"; LDFLAGS="$save_LDFLAGS" + fi ]) -AM_CONDITIONAL(ANONVERSCRIPT, test "$libjava_cv_anon_version_script" = yes) +AM_CONDITIONAL(ANONVERSCRIPT, test "$libjava_cv_anon_version_script" != no) +AM_CONDITIONAL(ANONVERSCRIPT_GNU, test "$libjava_cv_anon_version_script" = gnu) +AM_CONDITIONAL(ANONVERSCRIPT_SUN, test "$libjava_cv_anon_version_script" = sun) # 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 +if $LD --help 2>&1 | grep -- -call_shared >/dev/null 2>&1; then + if $LD --help 2>&1 | grep -- -non_shared >/dev/null 2>&1; then LD_START_STATIC_SPEC='%{static-libgcj:-non_shared}' LD_FINISH_STATIC_SPEC='%{static-libgcj:-call_shared}' fi @@ -1770,21 +1876,18 @@ AC_SUBST(here) # We get this from the environment. AC_SUBST(GCJFLAGS) +default_python_dir="/share/gcc-`cat ${srcdir}/../gcc/BASE-VER`/python/libjava" 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=""]) + [with_python_dir=$withval], [with_python_dir="${default_python_dir}"]) + +# Needed for installing Python modules during make install. +python_mod_dir="\${prefix}${with_python_dir}" + +# Needed for substituting into aot-compile* +python_mod_dir_expanded="${expanded_prefix}${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)