java/openjdk23: Add port

Release notes:	https://openjdk.org/projects/jdk/23/
Reviewed by:	bofh, diizzy, emaste, glewis, jrm
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D48194
This commit is contained in:
Haral Eilertsen
2025-01-13 16:27:48 +00:00
committed by Brad Davis
parent 46ff56f152
commit c2a4fcc0bd
12 changed files with 482 additions and 4 deletions
+1 -1
View File
@@ -73,7 +73,7 @@ GUILE_DEFAULT?= 2.2
# Format: version[-flavor]
# Examples: 6-nox11, 7
IMAGEMAGICK_DEFAULT?= 7
# Possible values: 8, 11, 17, 18, 19, 20, 21, 22
# Possible values: 8, 11, 17, 18, 19, 20, 21, 22 23
JAVA_DEFAULT?= 8
# Possible values: 3.4.0, 3.99
. if (defined(WANT_LAZARUS_DEVEL) && !empty(WANT_LAZARUS_DEVEL)) || ${ARCH:Maarch64}
+6 -3
View File
@@ -23,7 +23,7 @@ Java_Include_MAINTAINER= java@FreeBSD.org
# JAVA_VERSION List of space-separated suitable java versions for the
# port. An optional "+" allows you to specify a range of
# versions. (allowed values: 8[+] 11[+] 17[+] 18[+] 19[+]
# 20[+] 21[+] 22[+])
# 20[+] 21[+] 22[+] 23[+])
#
# JAVA_OS List of space-separated suitable JDK port operating systems
# for the port. (allowed values: native linux)
@@ -160,7 +160,7 @@ SUB_LIST+= JAVA_OS="${JAVA_OS}"
. endif
# The complete list of Java versions, os and vendors supported.
__JAVA_VERSION_LIST= 8 11 17 18 19 20 21 22
__JAVA_VERSION_LIST= 8 11 17 18 19 20 21 22 23
_JAVA_VERSION_LIST= ${__JAVA_VERSION_LIST} ${__JAVA_VERSION_LIST:S/$/+/}
_JAVA_OS_LIST= native linux
_JAVA_VENDOR_LIST= openjdk oracle
@@ -183,6 +183,8 @@ _JAVA_PORT_NATIVE_OPENJDK_JDK_21_INFO= PORT=java/openjdk21 HOME=${LOCALBASE}/
VERSION=21 OS=native VENDOR=openjdk
_JAVA_PORT_NATIVE_OPENJDK_JDK_22_INFO= PORT=java/openjdk22 HOME=${LOCALBASE}/openjdk22 \
VERSION=22 OS=native VENDOR=openjdk
_JAVA_PORT_NATIVE_OPENJDK_JDK_23_INFO= PORT=java/openjdk23 HOME=${LOCALBASE}/openjdk23 \
VERSION=23 OS=native VENDOR=openjdk
_JAVA_PORT_LINUX_ORACLE_JDK_8_INFO= PORT=java/linux-oracle-jdk18 HOME=${LOCALBASE}/linux-oracle-jdk1.8.0 \
VERSION=8 OS=linux VENDOR=oracle
@@ -204,6 +206,7 @@ __JAVA_PORTS_ALL= \
JAVA_PORT_NATIVE_OPENJDK_JDK_20 \
JAVA_PORT_NATIVE_OPENJDK_JDK_21 \
JAVA_PORT_NATIVE_OPENJDK_JDK_22 \
JAVA_PORT_NATIVE_OPENJDK_JDK_23 \
JAVA_PORT_LINUX_ORACLE_JDK_8
_JAVA_PORTS_ALL= ${JAVA_PREFERRED_PORTS} \
JAVA_PORT_NATIVE_OPENJDK_JDK_${JAVA_DEFAULT} \
@@ -278,7 +281,7 @@ JAVA_RUN= jre
. undef _JAVA_PORTS_INSTALLED
. undef _JAVA_PORTS_POSSIBLE
. if defined(JAVA_VERSION)
_JAVA_VERSION= ${JAVA_VERSION:S/^8+/8 11+/:S/^11+/11 17+/:S/^17+/17 18+/:S/^18+/18 19+/:S/^19+/19 20+/:S/^20+/20 21+/:S/^21+/21 22+/:S/^22+/22/}
_JAVA_VERSION= ${JAVA_VERSION:S/^8+/8 11+/:S/^11+/11 17+/:S/^17+/17 18+/:S/^18+/18 19+/:S/^19+/19 20+/:S/^20+/20 21+/:S/^21+/21 22+/:S/^22+/22 23+/:S/^23+/23/}
. else
_JAVA_VERSION= ${__JAVA_VERSION_LIST}
. endif
+1
View File
@@ -93,6 +93,7 @@
SUBDIR += openjdk20
SUBDIR += openjdk21
SUBDIR += openjdk22
SUBDIR += openjdk23
SUBDIR += openjdk8
SUBDIR += openjdk8-jre
SUBDIR += openjfx14
+183
View File
@@ -0,0 +1,183 @@
PORTNAME= openjdk
DISTVERSIONPREFIX= jdk-
DISTVERSION= ${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION}
CATEGORIES= java devel
PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION}
MAINTAINER= java@FreeBSD.org
COMMENT= Java Development Kit ${JDK_MAJOR_VERSION}
WWW= https://openjdk.java.net/projects/jdk/23/
LICENSE= GPLv2
ONLY_FOR_ARCHS= aarch64 amd64 i386 powerpc64 powerpc64le
BUILD_DEPENDS= zip:archivers/zip \
${LOCALBASE}/include/cups/cups.h:print/cups \
bash:shells/bash \
gsed:textproc/gsed
LIB_DEPENDS= libasound.so:audio/alsa-lib \
libfontconfig.so:x11-fonts/fontconfig \
libfreetype.so:print/freetype2 \
libgif.so:graphics/giflib \
libharfbuzz.so:print/harfbuzz \
liblcms2.so:graphics/lcms2 \
libpng.so:graphics/png
RUN_DEPENDS= javavm:java/javavmwrapper \
xorg-fonts-truetype>0:x11-fonts/xorg-fonts-truetype
USES= autoreconf:build compiler:features cpe gmake iconv jpeg pkgconfig xorg
USE_XORG= x11 xext xi xrandr xrender xt xtst
CPE_VENDOR= oracle
USE_GITHUB= yes
GH_ACCOUNT= battleblow
GH_PROJECT= jdk23u
NO_CCACHE= yes
_MAKE_JOBS= #
USE_LOCALE="C"
MAKE_ENV= CLASSPATH="" \
JAVA_HOME="" \
LD_LIBRARY_PATH="" \
MAKEFLAGS=""
JDK_OSARCH= bsd-${ARCH:S/amd64/x86_64/:S/i386/x86/:S/powerpc64/ppc64/}
JDK_BUILDDIR= ${WRKSRC}/build/${JDK_OSARCH}-${JDK_BUILD_JVM}-${JDK_BUILD_TYPE}
.if defined(BUILD_JRE)
JDK_IMAGEDIR= ${JDK_BUILDDIR}/images/jre
.else
JDK_IMAGEDIR= ${JDK_BUILDDIR}/images/jdk
.endif
INSTALLDIR= ${PREFIX}/${PKGBASE}
NOPRECIOUSMAKEVARS= yes
JDK_MAJOR_VERSION= 23
JDK_MINOR_VERSION= 0
JDK_PATCH_VERSION= 1
JDK_BUILD_NUMBER= 11
BSD_JDK_VERSION= 1
JDK_BUG_URL= https://bugs.freebsd.org/bugzilla/enter_bug.cgi?product=Ports%20%26%20Packages&component=Individual%20Port(s)&short_desc=java/${PORTNAME}${JDK_MAJOR_VERSION}%3A%20
GNU_CONFIGURE= yes
CONFIGURE_ENV= ac_cv_path_SED=${LOCALBASE}/bin/gsed
CONFIGURE_ARGS= --with-boot-jdk=${BOOTSTRAPJDKDIR} \
--disable-ccache \
--disable-javac-server \
--with-alsa=${LOCALBASE} \
--with-cups=${LOCALBASE} \
--with-fontconfig=${LOCALBASE} \
--with-freetype=system \
--with-libjpeg=system \
--with-giflib=system \
--with-giflib-include=${LOCALBASE}/include \
--with-giflib-lib=${LOCALBASE}/lib \
--with-harfbuzz=system \
--with-libpng=system \
--with-zlib=system \
--with-lcms=system \
--x-includes=${LOCALBASE}/include \
--x-libraries=${LOCALBASE}/lib \
--with-version-string=${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION} \
--with-native-debug-symbols=none \
--with-debug-level=release \
--with-vendor-name="OpenJDK BSD Porting Team" \
--with-vendor-url="https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/" \
--with-vendor-bug-url="${JDK_BUG_URL}" \
--with-vendor-vm-bug-url="${JDK_BUG_URL}"
JAVAVMS_COMMENT= OpenJDK${JDK_MAJOR_VERSION}
.if defined(BUILD_JRE)
ALL_TARGET= legacy-images
.else
ALL_TARGET= images
.endif
JDK_BUILD_TYPE= release
.include <bsd.port.pre.mk>
BOOTSTRAP_JDKS= ${LOCALBASE}/openjdk23 ${LOCALBASE}/openjdk22
# do we have valid native jdk installed?
.for BJDK in ${BOOTSTRAP_JDKS}
. if !defined(BOOTSTRAPJDKDIR) && exists(${BJDK}/bin/javac)
BOOTSTRAPJDKDIR= ${BJDK}
. endif
.endfor
# if no valid jdk found, set dependency
.if !defined(BOOTSTRAPJDKDIR)
BOOTSTRAPJDKDIR?= ${LOCALBASE}/openjdk22
BUILD_DEPENDS+= ${BOOTSTRAPJDKDIR}/bin/javac:java/openjdk22
.endif
JDK_BUILD_JVM= server
MAKE_ENV+= --with-toolchain-type=${COMPILER_TYPE}
CONFIGURE_ARGS+= --with-toolchain-type=${COMPILER_TYPE}
CONFIGURE_ARGS+= --disable-warnings-as-errors
.if ${COMPILER_TYPE} == gcc
USE_GCC= yes
CONFIGURE_ARGS+= --with-extra-ldflags="-Wl,-rpath=${LOCALBASE}/lib/gcc${GCC_DEFAULT} -L${LOCALBASE}/lib/gcc${GCC_DEFAULT}" \
--with-extra-cflags="-Wl,-rpath=${LOCALBASE}/lib/gcc${GCC_DEFAULT}" \
--with-extra-cxxflags="-Wl,-rpath=${LOCALBASE}/lib/gcc${GCC_DEFAULT}"
.else
MAKE_ENV+= USE_CLANG=true
EXTRA_CFLAGS+= -Wno-unused-but-set-parameter
EXTRA_CFLAGS+= -Wno-bitwise-instead-of-logical
EXTRA_CFLAGS+= -Wno-error=deprecated-non-prototype
CONFIGURE_ARGS+= --with-extra-cflags="${EXTRA_CFLAGS}"
CONFIGURE_ARGS+= --with-extra-cxxflags="${EXTRA_CFLAGS}"
.endif
.if ${ARCH} == aarch64
CONFIGURE_ARGS+= --with-boot-jdk-jvmargs=-XX:-UseCompressedClassPointers --disable-dtrace
MAKE_ENV+= JAVA_TOOL_OPTIONS="-XX:-UseCompressedClassPointers"
.endif
.if empty(ICONV_LIB)
ICONV_CFLAGS= -DLIBICONV_PLUG
.else
ICONV_CFLAGS= -I${LOCALBASE}/include
ICONV_LDFLAGS= -L${LOCALBASE}/lib
ICONV_LIBS= ${ICONV_LIB}
.endif
post-patch:
@${RM} ${WRKSRC}/src/hotspot/os_cpu/bsd_ppc/thread_bsd_ppc.cpp
@${MV} ${WRKSRC}/src/hotspot/os_cpu/bsd_ppc/thread_bsd_ppc.hpp \
${WRKSRC}/src/hotspot/os_cpu/bsd_ppc/javaThread_bsd_ppc.hpp
@${FIND} ${WRKSRC} -name '*.orig' -delete
@${CHMOD} 755 ${WRKSRC}/configure
@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \
${WRKSRC}/configure \
${WRKSRC}/src/hotspot/os/bsd/os_bsd.cpp
@${REINPLACE_CMD} -e 's|%%ICONV_CFLAGS%%|${ICONV_CFLAGS}|' \
-e 's|%%ICONV_LDFLAGS%%|${ICONV_LDFLAGS}|' \
-e 's|%%ICONV_LIBS%%|${ICONV_LIBS}|' \
${WRKSRC}/make/autoconf/libraries.m4
post-build:
.if defined(OPENJDK_SYMLINK_CACERTS)
@${RM} ${JDK_IMAGEDIR}/lib/security/cacerts
@${LN} -sf ${OPENJDK_SYMLINK_CACERTS} ${JDK_IMAGEDIR}/lib/security/cacerts
.endif
do-install:
@${MKDIR} ${STAGEDIR}${INSTALLDIR}
@cd ${JDK_IMAGEDIR} && ${COPYTREE_SHARE} . ${STAGEDIR}${INSTALLDIR}
@cd ${STAGEDIR}${INSTALLDIR} && \
${FIND} bin -type f -exec ${CHMOD} ${BINMODE} {} \;
@${CHMOD} ${BINMODE} ${STAGEDIR}${INSTALLDIR}/lib/jspawnhelper
@${ECHO} "@javavm ${INSTALLDIR}/bin/java" >> ${TMPPLIST}
@${FIND} ${STAGEDIR}${INSTALLDIR} -not -type d | ${SORT} | \
${SED} -e 's|^${STAGEDIR}${PREFIX}/||' >> ${TMPPLIST}
.include <bsd.port.post.mk>
+3
View File
@@ -0,0 +1,3 @@
TIMESTAMP = 1735117726
SHA256 (battleblow-jdk23u-jdk-23.0.1+11-1_GH0.tar.gz) = 4341003687aa7c9f4b0175a30ffbb4c01c0bb7a68160ab4975e63d75168df4bc
SIZE (battleblow-jdk23u-jdk-23.0.1+11-1_GH0.tar.gz) = 117320724
+14
View File
@@ -0,0 +1,14 @@
--- configure.orig 2019-03-12 12:38:39.648907000 -0700
+++ configure 2019-03-12 12:39:04.275572000 -0700
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!%%LOCALBASE%%/bin/bash
#
# Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -32,4 +32,4 @@
# Delegate to wrapper, forcing wrapper to believe $0 is this script by using -c.
# This trick is needed to get autoconf to co-operate properly.
# The ${-:+-$-} construction passes on bash options.
-bash ${-:+-$-} -c ". $this_script_dir/make/autoconf/configure" $this_script_dir/configure CHECKME $this_script_dir "$@"
+%%LOCALBASE%%/bin/bash ${-:+-$-} -c ". $this_script_dir/make/autoconf/configure" $this_script_dir/configure CHECKME $this_script_dir "$@"
@@ -0,0 +1,13 @@
--- make/autoconf/flags-cflags.m4.orig 2020-01-08 09:12:31 UTC
+++ make/autoconf/flags-cflags.m4
@@ -770,6 +770,10 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
# for all archs except arm and ppc, prevent gcc to omit frame pointer
$1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer"
fi
+ elif test "x$OPENJDK_TARGET_OS_ENV" = xbsd.freebsd; then
+ if test "x$FLAGS_CPU" = xppc64; then
+ $1_CFLAGS_CPU_JVM="${$1_CFLAGS_CPU_JVM} -DABI_ELFv2 -mcpu=powerpc64 -mtune=power5"
+ fi
fi
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
@@ -0,0 +1,15 @@
--- make/autoconf/libraries.m4~ 2019-08-12 19:10:36.292217000 -0700
+++ make/autoconf/libraries.m4 2019-08-12 19:18:15.523606000 -0700
@@ -188,9 +188,9 @@
ICONV_LDFLAGS="-L/usr/local/lib"
ICONV_LIBS=-liconv
elif test "x$OPENJDK_TARGET_OS_ENV" = "xbsd.freebsd"; then
- ICONV_CFLAGS=-DLIBICONV_PLUG
- ICONV_LDFLAGS=
- ICONV_LIBS=
+ ICONV_CFLAGS=%%ICONV_CFLAGS%%
+ ICONV_LDFLAGS=%%ICONV_LDFLAGS%%
+ ICONV_LIBS=%%ICONV_LIBS%%
else
ICONV_CFLAGS=
ICONV_LDFLAGS=
@@ -0,0 +1,11 @@
--- src/hotspot/os/bsd/os_bsd.cpp.orig 2021-09-29 21:25:10 UTC
+++ src/hotspot/os/bsd/os_bsd.cpp
@@ -361,7 +361,7 @@
#elif defined(__NetBSD__)
#define DEFAULT_LIBPATH "/usr/lib:/usr/pkg/lib"
#else
- #define DEFAULT_LIBPATH "/usr/lib:/usr/local/lib"
+ #define DEFAULT_LIBPATH "/usr/lib:%%LOCALBASE%%/lib"
#endif
#else
#define DEFAULT_LIBPATH OVERRIDE_LIBPATH
@@ -0,0 +1,209 @@
--- src/java.desktop/share/native/libfontmanager/freetypeScaler.c.orig 2020-07-08 21:34:01 UTC
+++ src/java.desktop/share/native/libfontmanager/freetypeScaler.c
@@ -43,6 +43,7 @@
#include FT_SYNTHESIS_H
#include FT_LCD_FILTER_H
#include FT_MODULE_H
+#include <fontconfig/fontconfig.h>
#include "fontscaler.h"
@@ -87,6 +88,133 @@ typedef struct FTScalerContext {
int ptsz; /* size in points */
} FTScalerContext;
+typedef struct {
+ FT_Render_Mode ftRenderMode;
+ int ftLoadFlags;
+ FT_LcdFilter ftLcdFilter;
+} RenderingProperties;
+
+static FcPattern* matchedPattern(const FcChar8* family, double ptSize) {
+ FcPattern* pattern = FcPatternCreate();
+ if (!pattern)
+ return 0;
+
+ FcPatternAddString(pattern, FC_FAMILY, family);
+ FcPatternAddBool(pattern, FC_SCALABLE, FcTrue);
+ FcPatternAddDouble(pattern, FC_SIZE, ptSize);
+
+ FcConfigSubstitute(0, pattern, FcMatchPattern);
+ FcDefaultSubstitute(pattern);
+
+ FcResult res;
+ FcPattern *match = FcFontMatch(0, pattern, &res);
+ FcPatternDestroy(pattern);
+ return (res == FcResultMatch) ? match : NULL;
+}
+
+static void readFontconfig(const FcChar8* family, double ptSize, jint aaType, RenderingProperties* rp) {
+ FcPattern *pattern = matchedPattern(family, ptSize);
+
+ FT_Render_Mode ftRenderMode = FT_RENDER_MODE_NORMAL;
+ int ftLoadFlags = FT_LOAD_DEFAULT;
+ FT_LcdFilter ftLcdFilter = FT_LCD_FILTER_DEFAULT;
+ FcBool fcAntialias = 0;
+ char horizontal = 1;
+
+ // subpixel order
+ if (aaType == TEXT_AA_ON)
+ ftRenderMode = FT_RENDER_MODE_NORMAL;
+ else if (aaType == TEXT_AA_OFF)
+ ftRenderMode = FT_RENDER_MODE_MONO;
+ else {
+ int fcRGBA = FC_RGBA_UNKNOWN;
+ if (pattern)
+ FcPatternGetInteger(pattern, FC_RGBA, 0, &fcRGBA);
+ switch (fcRGBA) {
+ case FC_RGBA_NONE:
+ ftRenderMode = FT_RENDER_MODE_NORMAL;
+ break;
+ case FC_RGBA_RGB:
+ case FC_RGBA_BGR:
+ ftRenderMode = FT_RENDER_MODE_LCD;
+ horizontal = 1;
+ break;
+ case FC_RGBA_VRGB:
+ case FC_RGBA_VBGR:
+ ftRenderMode = FT_RENDER_MODE_LCD_V;
+ horizontal = 0;
+ break;
+ default:
+ ftRenderMode = FT_RENDER_MODE_NORMAL;
+ break;
+ }
+ }
+
+ // loading mode
+ if (aaType == TEXT_AA_OFF)
+ ftLoadFlags |= FT_LOAD_TARGET_MONO;
+ else {
+ int fcHintStyle = FC_HINT_NONE;
+ if (pattern)
+ FcPatternGetInteger(pattern, FC_HINT_STYLE, 0, &fcHintStyle);
+ switch (fcHintStyle) {
+ case FC_HINT_NONE:
+ ftLoadFlags |= FT_LOAD_NO_HINTING;
+ break;
+ case FC_HINT_SLIGHT:
+ ftLoadFlags |= FT_LOAD_TARGET_LIGHT;
+ break;
+ case FC_HINT_MEDIUM:
+ ftLoadFlags |= FT_LOAD_TARGET_NORMAL;
+ break;
+ case FC_HINT_FULL:
+ if (aaType == TEXT_AA_ON)
+ ftLoadFlags |= FT_LOAD_TARGET_NORMAL;
+ else
+ ftLoadFlags |= horizontal ? FT_LOAD_TARGET_LCD : FT_LOAD_TARGET_LCD_V;
+ break;
+ default:
+ ftLoadFlags |= FT_LOAD_TARGET_NORMAL;
+ break;
+ }
+ }
+
+ // autohinting
+ FcBool fcAutohint = 0;
+ if (pattern && FcPatternGetBool(pattern, FC_AUTOHINT, 0, &fcAutohint) == FcResultMatch)
+ if (fcAutohint)
+ ftLoadFlags |= FT_LOAD_FORCE_AUTOHINT;
+
+ // LCD filter
+ int fcLCDFilter = FC_LCD_DEFAULT;
+ if (pattern)
+ FcPatternGetInteger(pattern, FC_LCD_FILTER, 0, &fcLCDFilter);
+ switch (fcLCDFilter) {
+ case FC_LCD_NONE:
+ ftLcdFilter = FT_LCD_FILTER_NONE;
+ break;
+ case FC_LCD_DEFAULT:
+ ftLcdFilter = FT_LCD_FILTER_DEFAULT;
+ break;
+ case FC_LCD_LIGHT:
+ ftLcdFilter = FT_LCD_FILTER_LIGHT;
+ break;
+ case FC_LCD_LEGACY:
+ ftLcdFilter = FT_LCD_FILTER_LEGACY;
+ break;
+ default:
+ ftLcdFilter = FT_LCD_FILTER_DEFAULT;
+ break;
+ }
+
+ if (pattern)
+ FcPatternDestroy(pattern);
+
+ rp->ftRenderMode = ftRenderMode;
+ rp->ftLoadFlags = ftLoadFlags;
+ rp->ftLcdFilter = ftLcdFilter;
+}
+
#ifdef DEBUG
/* These are referenced in the freetype sources if DEBUG macro is defined.
To simplify work with debuging version of freetype we define
@@ -868,29 +996,12 @@ static jlong
renderFlags |= FT_LOAD_NO_HINTING;
}
- if (!context->useSbits) {
- renderFlags |= FT_LOAD_NO_BITMAP;
- }
+ RenderingProperties renderingProperties;
+ readFontconfig((const FcChar8 *) scalerInfo->face->family_name,
+ context->ptsz, context->aaType, &renderingProperties);
- /* NB: in case of non identity transform
- we might also prefer to disable transform before hinting,
- and apply it explicitly after hinting is performed.
- Or we can disable hinting. */
-
- /* select appropriate hinting mode */
- if (context->aaType == TEXT_AA_OFF) {
- target = FT_LOAD_TARGET_MONO;
- } else if (context->aaType == TEXT_AA_ON) {
- target = FT_LOAD_TARGET_NORMAL;
- } else if (context->aaType == TEXT_AA_LCD_HRGB ||
- context->aaType == TEXT_AA_LCD_HBGR) {
- target = FT_LOAD_TARGET_LCD;
- } else {
- target = FT_LOAD_TARGET_LCD_V;
- }
- renderFlags |= target;
-
- error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderFlags);
+ FT_Library_SetLcdFilter(scalerInfo->library, renderingProperties.ftLcdFilter);
+ error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderingProperties.ftLoadFlags);
if (error) {
//do not destroy scaler yet.
//this can be problem of particular context (e.g. with bad transform)
@@ -915,11 +1026,11 @@ static jlong
glyphInfo = getNullGlyphImage();
return ptr_to_jlong(glyphInfo);
}
- error = FT_Render_Glyph(ftglyph, FT_LOAD_TARGET_MODE(target));
- if (error != 0) {
- return ptr_to_jlong(getNullGlyphImage());
- }
}
+ error = FT_Render_Glyph(ftglyph, renderingProperties.ftRenderMode);
+ if (error != 0) {
+ return ptr_to_jlong(getNullGlyphImage());
+ }
if (renderImage) {
width = (UInt16) ftglyph->bitmap.width;
@@ -1134,9 +1245,11 @@ static FT_Outline* getFTOutline(JNIEnv* env, jobject f
return NULL;
}
- renderFlags = FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP;
+ RenderingProperties renderingProperties;
+ readFontconfig((const FcChar8 *) scalerInfo->face->family_name,
+ context->ptsz, context->aaType, &renderingProperties);
- error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderFlags);
+ error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderingProperties.ftLoadFlags);
if (error) {
return NULL;
}
+8
View File
@@ -0,0 +1,8 @@
FreeBSD port of OpenJDK 23
This version of the port passes basic smoke testing. It has been successfully
built on some combinations of FreeBSD 13 and 14 for the aarch64 and amd64
architectures.
Although these are untested, it may also build on other recent FreeBSD releases
for the x86 and powerpc64 architectures.
+18
View File
@@ -0,0 +1,18 @@
[
{ type: install
message: <<EOM
This OpenJDK implementation requires fdescfs(5) mounted on /dev/fd and
procfs(5) mounted on /proc.
If you have not done it yet, please do the following:
mount -t fdescfs fdesc /dev/fd
mount -t procfs proc /proc
To make it permanent, you need the following lines in /etc/fstab:
fdesc /dev/fd fdescfs rw 0 0
proc /proc procfs rw 0 0
EOM
}
]