diff --git a/make/modules/java.desktop/lib/ClientLibraries.gmk b/make/modules/java.desktop/lib/ClientLibraries.gmk index 8733a8617c9..b6d1abaf268 100644 --- a/make/modules/java.desktop/lib/ClientLibraries.gmk +++ b/make/modules/java.desktop/lib/ClientLibraries.gmk @@ -407,6 +407,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \ LDFLAGS_aix := -Wl$(COMMA)-berok, \ JDK_LIBS := libawt java.base:libjava $(LIBFONTMANAGER_JDK_LIBS), \ JDK_LIBS_macosx := libawt_lwawt, \ + JDK_LIBS_unix := java.base:libjvm, \ LIBS := $(LIBFONTMANAGER_LIBS), \ LIBS_unix := $(LIBM), \ LIBS_macosx := \ diff --git a/src/java.desktop/share/native/libfontmanager/freetypeScaler.c b/src/java.desktop/share/native/libfontmanager/freetypeScaler.c index 37c6dba2a78..d76b9ea648b 100644 --- a/src/java.desktop/share/native/libfontmanager/freetypeScaler.c +++ b/src/java.desktop/share/native/libfontmanager/freetypeScaler.c @@ -32,6 +32,7 @@ #include #if !defined(_WIN32) && !defined(__APPLE_) #include +#include "jvm.h" #endif #include #include "ft2build.h" @@ -298,6 +299,19 @@ static void setInterpreterVersion(FT_Library library) { #if defined(_WIN32) || defined(__APPLE__) FT_Property_Set(library, module, property, (void*)(&version)); #else + + if (JVM_IsStaticallyLinked()) { + // The bundled libfreetype may be statically linked with + // the launcher. + if (dlsym(RTLD_DEFAULT, "FT_Property_Set") != NULL) { + FT_Property_Set(library, module, property, (void*)(&version)); + return; + } + + // libfreetype is not statically linked with the executable, + // fall through to find the system provided library dynamically. + } + void *lib = dlopen("libfreetype.so", RTLD_LOCAL|RTLD_LAZY); if (lib == NULL) { lib = dlopen("libfreetype.so.6", RTLD_LOCAL|RTLD_LAZY);