Skip to content

Commit

Permalink
8349859: Support static JDK in libfontmanager/freetypeScaler.c
Browse files Browse the repository at this point in the history
Reviewed-by: prr
  • Loading branch information
jianglizhou committed Feb 12, 2025
1 parent 73e1780 commit 332d87c
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
1 change: 1 addition & 0 deletions make/modules/java.desktop/lib/ClientLibraries.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -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 := \
Expand Down
14 changes: 14 additions & 0 deletions src/java.desktop/share/native/libfontmanager/freetypeScaler.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
#include <stdlib.h>
#if !defined(_WIN32) && !defined(__APPLE_)
#include <dlfcn.h>
#include "jvm.h"
#endif
#include <math.h>
#include "ft2build.h"
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 332d87c

Please sign in to comment.