This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch] Encode the libgcj soversion in libjava's private dir
- From: Matthias Klose <doko at ubuntu dot com>
- To: GCJ-patches <java-patches at gcc dot gnu dot org>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 05 Jul 2007 15:26:11 +0200
- Subject: [patch] Encode the libgcj soversion in libjava's private dir
The following patch encodes the libgcj soversion in the name of the private
libjava subdirectory. Currently a directory gcj-X.Y.Z is used, the patch changes
that to gcj-X.Y.Z-N. This allows installation of multiple gcj versions within
the same prefix, when the soname changes, but not the gcj version number. This
usually happens, if vendors backport more recent versions of libjava to stable
branches (as seen with Fedora, Debian and Ubuntu). There should not be any
references to the private subdirectory, besides from libjava itself. The patch
is in use without problems in the gcj builds for Debian and Ubuntu, and tested
on i686-linux on the trunk.
Ok for trunk?
Matthias
2007-07-05 Matthias Klose <doko@ubuntu.com>
* configure.ac: Encode the libgcj soversion in dbexecdir,
pass --with-native-libdir to classpath configure.
* configure: Regenerate.
Index: configure.ac
===================================================================
--- configure.ac (revision 126356)
+++ configure.ac (working copy)
@@ -1359,25 +1359,27 @@
AC_SUBST(toolexecmainlibdir)
AC_SUBST(toolexeclibdir)
+# Determine gcj and libgcj version number.
+gcjversion=`$GCJ -v 2>&1 | sed -n 's/^.*version \([[^ ]]*\).*$/\1/p'`
+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.
multi_os_directory=`$CC -print-multi-os-directory`
case $multi_os_directory in
.)
- dbexecdir='$(libdir)/gcj-$(gcc_version)' # Avoid /.
+ dbexecdir='$(libdir)/gcj-$(gcc_version)'-$libgcj_soversion # Avoid /.
;;
*)
- dbexecdir='$(libdir)/'$multi_os_directory'/gcj-$(gcc_version)'
+ dbexecdir='$(libdir)/'$multi_os_directory'/gcj-$(gcc_version)'-$libgcj_soversion
;;
esac
AC_SUBST(dbexecdir)
+ac_configure_args="$ac_configure_args --with-native-libdir=\$\(toolexeclibdir\)/gcj-$gcjversion-$libgcj_soversion"
-# 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.5.0", [Compatibility version string])
AC_DEFINE(JV_API_VERSION, "1.5", [API compatibility version string])