[PATCH v3] 8214332: Add a flag for overriding default JNI library search path (original) (raw)
Jakub Vaněk linuxtardis at gmail.com
Wed Nov 28 21:02:24 UTC 2018
- Previous message (by thread): [PATCH v2] Add a flag for overriding default JNI library search path
- Next message (by thread): [PATCH v3] 8214332: Add a flag for overriding default JNI library search path
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 2018-11-29 at 06:54 +1000, David Holmes wrote:
Hi Jakub,
Are you ready to have this pushed? I can sponsor it if so. David
Hi David,
thanks for your reply, I wasn't responding yesterday and today. I added one more change to handle the situation when the --with flag is used without its argument.
I'd want to settle on this version of the patch, because it maintains compatibility with current status of things and is the easiest to implement.
Thanks,
Jakub
HG changeset patch
User Jakub Vaněk <linuxtardis at gmail.com>
Date 1543266969 -3600
Mon Nov 26 22:16:09 2018 +0100
Node ID 0e938f324f9601d7d86f8acbb6a3f7c65cfc852e
Parent e017d2f176d0119cdc70c9f2ee98e78c0c13f0c7
Add an option for overriding default JNI library search path
diff --git a/doc/building.html b/doc/building.html --- a/doc/building.html +++ b/doc/building.html @@ -464,6 +464,10 @@
--with-jvm-
features=[,...]
- Use the
specified JVM features when building Hotspot. The list of features will
be enabled on top of the default list. For the custom
JVM
variant, this default list is empty. A complete list of available JVM
features can be found using bash configure --help
.--with-target-bits=
- Create a target
binary suitable for running on a
platform.
Use this to create 32-bit output on a 64-bit build platform, instead of
doing a full cross-compile. (This is known as a reduced
build.)On Linux, BSD and AIX, it is possible to override where Java by
default searches for runtime/JNI libraries. This can be useful in
situations where there is a special shared directory for system JNI
libraries. This setting can in turn be overriden at runtime by setting
the java.library.path
property.
-
+
--with-jni-libpath=
- Use the specified path as a default when searching for runtime libraries.
+
Configure Arguments for Native Compilation
--with-devkit=
- Use this devkit for compilers, tools and resources
diff --git a/doc/building.md b/doc/building.md
--- a/doc/building.md
+++ b/doc/building.md
@@ -662,6 +662,14 @@
platform, instead of doing a full cross-compile. (This is known as
a
reduced build.)
--with-jni-libpath=<path>
- Use the specified path as a default
- when searching for runtime libraries.
Configure Arguments for Native Compilation
--with-devkit=<path>
- Use this devkit for compilers, tools and
Override default library path
- AC_ARG_WITH([jni-libpath], [AS_HELP_STRING([--with-jni-libpath],
[override default JNI library search path])])
- AC_MSG_CHECKING([for jni library path])
- if test "x${with_jni_libpath}" = "x" || test "x${with_jni_libpath}" = "xno"; then
- AC_MSG_RESULT([default])
- elif test "x${with_jni_libpath}" = "xyes"; then
- AC_MSG_RESULT([invalid])
- AC_MSG_ERROR([The --with-jni-libpath option requires an
- else
- HOTSPOT_OVERRIDE_LIBPATH=${with_jni_libpath}
- if test "x$OPENJDK_TARGET_OS" != "xlinux" &&
test "x$OPENJDK_TARGET_OS" != "xbsd" &&
test "x$OPENJDK_TARGET_OS" != "xaix"; then
AC_MSG_RESULT([fail])
AC_MSG_ERROR([Overriding JNI library path is supported only on
fi
AC_MSG_RESULT(${HOTSPOT_OVERRIDE_LIBPATH})
fi
AC_SUBST(HOTSPOT_OVERRIDE_LIBPATH)
])
######################################################################
- JVM_CFLAGS += -DOVERRIDE_LIBPATH='"$(HOTSPOT_OVERRIDE_LIBPATH)"' +endif diff --git a/src/hotspot/os/aix/os_aix.cpp b/src/hotspot/os/aix/os_aix.cpp --- a/src/hotspot/os/aix/os_aix.cpp +++ b/src/hotspot/os/aix/os_aix.cpp @@ -541,7 +541,11 @@
- #define DEFAULT_LIBPATH "/lib:/usr/lib"
- #define DEFAULT_LIBPATH OVERRIDE_LIBPATH
- #define DEFAULT_LIBPATH "/lib:/usr/lib"
- #ifndef OVERRIDE_LIBPATH
- #define DEFAULT_LIBPATH "/lib:/usr/lib"
- #else
- #define DEFAULT_LIBPATH OVERRIDE_LIBPATH
- #endif
- #define DEFAULT_LIBPATH "/usr/lib64:/lib64:/lib:/usr/lib"
- #if defined(AMD64) || (defined(_LP64) && defined(SPARC)) ||
- #define DEFAULT_LIBPATH "/usr/lib64:/lib64:/lib:/usr/lib"
- #else
- #define DEFAULT_LIBPATH "/lib:/usr/lib"
- #endif
- #define DEFAULT_LIBPATH "/lib:/usr/lib"
- #define DEFAULT_LIBPATH OVERRIDE_LIBPATH
- Previous message (by thread): [PATCH v2] Add a flag for overriding default JNI library search path
- Next message (by thread): [PATCH v3] 8214332: Add a flag for overriding default JNI library search path
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
+On Linux, BSD and AIX, it is possible to override where Java by
default
+searches for runtime/JNI libraries. This can be useful in situations
where
+there is a special shared directory for system JNI libraries. This
setting
+can in turn be overriden at runtime by setting the java.library.path
property.
+
resources
diff --git a/make/autoconf/jdk-options.m4 b/make/autoconf/jdk-
options.m4
--- a/make/autoconf/jdk-options.m4
+++ b/make/autoconf/jdk-options.m4
@@ -244,6 +244,28 @@
COPYRIGHT_YEAR=$DATE +'%Y'
fi
AC_SUBST(COPYRIGHT_YEAR)
+
argument.])
Linux, BSD and AIX.])
######### diff --git a/make/autoconf/spec.gmk.in b/make/autoconf/spec.gmk.in --- a/make/autoconf/spec.gmk.in +++ b/make/autoconf/spec.gmk.in @@ -274,6 +274,9 @@
Control wether Hotspot builds gtest tests
BUILD_GTEST := @BUILD_GTEST@
+# Allow overriding the default hotspot library path +HOTSPOT_OVERRIDE_LIBPATH := @HOTSPOT_OVERRIDE_LIBPATH@ +
Control use of precompiled header in hotspot libjvm build
USE_PRECOMPILED_HEADER := @USE_PRECOMPILED_HEADER@
diff --git a/make/hotspot/lib/JvmFlags.gmk b/make/hotspot/lib/JvmFlags.gmk --- a/make/hotspot/lib/JvmFlags.gmk +++ b/make/hotspot/lib/JvmFlags.gmk @@ -95,3 +95,7 @@ ifeq ($(USE_PRECOMPILED_HEADER), false) JVM_CFLAGS += -DDONT_USE_PRECOMPILED_HEADER endif + +ifneq ($(HOTSPOT_OVERRIDE_LIBPATH), )
void os::init_system_properties_values() {
-#define DEFAULT_LIBPATH "/lib:/usr/lib" +#ifndef OVERRIDE_LIBPATH
+#else
+#endif #define EXTENSIONS_DIR "/lib/ext"
// Buffer that fits several sprintfs. diff --git a/src/hotspot/os/bsd/os_bsd.cpp b/src/hotspot/os/bsd/os_bsd.cpp --- a/src/hotspot/os/bsd/os_bsd.cpp +++ b/src/hotspot/os/bsd/os_bsd.cpp @@ -316,7 +316,11 @@ // ... // 7: The default directories, normally /lib and /usr/lib. #ifndef DEFAULT_LIBPATH
#endif
// Base path of extensions installed on the system. diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp --- a/src/hotspot/os/linux/os_linux.cpp +++ b/src/hotspot/os/linux/os_linux.cpp @@ -323,10 +323,14 @@ // 1: ... // ... // 7: The default directories, normally /lib and /usr/lib. -#if defined(AMD64) || (defined(_LP64) && defined(SPARC)) || defined(PPC64) || defined(S390)
+#ifndef OVERRIDE_LIBPATH
defined(PPC64) || defined(S390)
#else
#endif
// Base path of extensions installed on the system.