diff --git a/java/openjdk23/Makefile b/java/openjdk23/Makefile index cf2ac0b7a798..e3d7e1c96d6d 100644 --- a/java/openjdk23/Makefile +++ b/java/openjdk23/Makefile @@ -1,190 +1,191 @@ 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} +PORTREVISION= 1 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 # On FreeBSD 14 and 15 the i386 build fails with a segfault in java during the # buildtools_create_symbols_javac__the.COMPILE_CREATE_SYMBOLS_batch build step. # BROKEN_FreeBSD_13_i386= Build failed for target 'images' in configuration 'bsd-x86-server-release' BROKEN_FreeBSD_14_i386= Build failed for target 'images' in configuration 'bsd-x86-server-release' BROKEN_FreeBSD_15_i386= Build failed for target 'images' in configuration 'bsd-x86-server-release' 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= 2 JDK_BUILD_NUMBER= 7 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 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 diff --git a/java/openjdk23/files/patch-src_java.desktop_share_native_libfontmanager_freetypeScaler.c b/java/openjdk23/files/patch-src_java.desktop_share_native_libfontmanager_freetypeScaler.c deleted file mode 100644 index 537ecdc3047c..000000000000 --- a/java/openjdk23/files/patch-src_java.desktop_share_native_libfontmanager_freetypeScaler.c +++ /dev/null @@ -1,209 +0,0 @@ ---- 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 - - #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; - }