1
# DP: - Add /usr/lib/jni and /usr/lib/<multiarch>/jni to java.library.path.
2
# DP: - When running the i386 binaries on amd64, look in
3
# DP: - /usr/lib32/gcj-x.y and /usr/lib32/jni instead.
5
Index: b/src/libjava/configure.ac
6
===================================================================
7
--- a/src/libjava/configure.ac
8
+++ b/src/libjava/configure.ac
9
@@ -1520,6 +1520,9 @@ AC_CHECK_SIZEOF(void *)
13
+MULTIARCH_DIR=$(dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true)
14
+AC_SUBST(MULTIARCH_DIR)
19
Index: b/src/libjava/Makefile.am
20
===================================================================
21
--- a/src/libjava/Makefile.am
22
+++ b/src/libjava/Makefile.am
23
@@ -364,6 +364,7 @@ AM_CXXFLAGS = \
26
-DPREFIX="\"$(prefix)\"" \
27
+ -DMULTIARCH_DIR="\"$(MULTIARCH_DIR)\"" \
28
-DTOOLEXECLIBDIR="\"$(toolexeclibdir)\"" \
29
-DJAVA_HOME="\"$(JAVA_HOME_DIR)\"" \
30
-DBOOT_CLASS_PATH="\"$(BOOT_CLASS_PATH_DIR)\"" \
31
Index: b/src/libjava/Makefile.in
32
===================================================================
33
--- a/src/libjava/Makefile.in
34
+++ b/src/libjava/Makefile.in
35
@@ -639,6 +639,7 @@ MAINT = @MAINT@
39
+MULTIARCH_DIR = @MULTIARCH_DIR@
43
@@ -1022,6 +1023,7 @@ AM_CXXFLAGS = \
46
-DPREFIX="\"$(prefix)\"" \
47
+ -DMULTIARCH_DIR="\"$(MULTIARCH_DIR)\"" \
48
-DTOOLEXECLIBDIR="\"$(toolexeclibdir)\"" \
49
-DJAVA_HOME="\"$(JAVA_HOME_DIR)\"" \
50
-DBOOT_CLASS_PATH="\"$(BOOT_CLASS_PATH_DIR)\"" \
51
Index: b/src/libjava/gnu/classpath/natSystemProperties.cc
52
===================================================================
53
--- a/src/libjava/gnu/classpath/natSystemProperties.cc
54
+++ b/src/libjava/gnu/classpath/natSystemProperties.cc
55
@@ -141,6 +141,44 @@ PrependVersionedLibdir (::java::lang::St
60
+AppendJniLibdir (char *path, struct utsname *u)
63
+ const char* jnilibdir = "/usr/lib/jni";
65
+ const char* jnilibdir2 = "/usr/lib/" MULTIARCH_DIR "/jni";
66
+ jsize len2 = strlen (jnilibdir2) + 2;
71
+#if defined(__linux__) && defined (__i386__)
72
+ if (! strcmp ("x86_64", u->machine))
73
+ jnilibdir = "/usr/lib32/jni";
78
+ jsize total = strlen (path)
79
+ + (sizeof (PATH_SEPARATOR) - 1) + strlen (jnilibdir) +len2 + 1;
80
+ retval = (char*) _Jv_Malloc (total);
81
+ strcpy (retval, path);
82
+ strcat (retval, PATH_SEPARATOR);
83
+ strcat (retval, jnilibdir);
87
+ retval = (char*) _Jv_Malloc (strlen (jnilibdir) + len2 + 1);
88
+ strcpy (retval, jnilibdir);
91
+ strcat (retval, PATH_SEPARATOR);
92
+ strcat (retval, jnilibdir2);
98
gnu::classpath::SystemProperties::insertSystemProperties (::java::util::Properties *newprops)
100
@@ -373,8 +411,13 @@ gnu::classpath::SystemProperties::insert
101
// Prepend GCJ_VERSIONED_LIBDIR to the module load path so that
102
// libgcj will find its own JNI libraries, like libgtkpeer.so.
103
char* val = PrependVersionedLibdir (path);
104
- _Jv_SetDLLSearchPath (val);
106
+ // Append jnilibdir
107
+ char* val2 = AppendJniLibdir (val, &u);
109
+ _Jv_SetDLLSearchPath (val2);
115
@@ -382,9 +425,12 @@ gnu::classpath::SystemProperties::insert
117
char *libpath = getenv (LTDL_SHLIBPATH_VAR);
118
char* val = _Jv_PrependVersionedLibdir (libpath);
119
- SET ("java.library.path", val);
120
- _Jv_SetDLLSearchPath (val);
121
+ // Append jnilibdir
122
+ char* val2 = AppendJniLibdir (val, &u);
123
+ SET ("java.library.path", val2);
124
+ _Jv_SetDLLSearchPath (val2);
128
SET ("java.library.path", "");