This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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])
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]