Index: head/java/openjdk14/Makefile =================================================================== --- head/java/openjdk14/Makefile (revision 542039) +++ head/java/openjdk14/Makefile (revision 542040) @@ -1,174 +1,176 @@ # $FreeBSD$ PORTNAME= openjdk DISTVERSIONPREFIX= jdk- DISTVERSION= ${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION} +PORTREVISION= 1 CATEGORIES= java devel PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} MAINTAINER= java@FreeBSD.org COMMENT= Java Development Kit ${JDK_MAJOR_VERSION} LICENSE= GPLv2 ONLY_FOR_ARCHS= amd64 i386 powerpc64 BUILD_DEPENDS= zip:archivers/zip \ autoconf>0:devel/autoconf \ ${LOCALBASE}/include/cups/cups.h:print/cups \ bash:shells/bash LIB_DEPENDS= libasound.so:audio/alsa-lib \ libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 \ libgif.so:graphics/giflib \ liblcms2.so:graphics/lcms2 \ libpng.so:graphics/png -RUN_DEPENDS= javavm:java/javavmwrapper +RUN_DEPENDS= javavm:java/javavmwrapper \ + xorg-fonts-truetype>0:x11-fonts/xorg-fonts-truetype USES= compiler:features gmake iconv jpeg pkgconfig xorg USE_XORG= x11 xext xi xrandr xrender xt xtst USE_GITHUB= yes GH_ACCOUNT= battleblow GH_PROJECT= jdk14u NO_CCACHE= yes _MAKE_JOBS= # MAKE_ENV= LANG="C" \ LC_ALL="C" \ CLASSPATH="" \ JAVA_HOME="" \ LD_LIBRARY_PATH="" \ CC=${CC} \ CXX=${CXX} \ CPP=${CPP} \ 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} JDK_IMAGEDIR= ${JDK_BUILDDIR}/images/jdk INSTALLDIR= ${PREFIX}/${PKGBASE} NOPRECIOUSMAKEVARS= yes JDK_MAJOR_VERSION= 14 JDK_MINOR_VERSION= 0 JDK_PATCH_VERSION= 1 JDK_BUILD_NUMBER= 7 BSD_JDK_VERSION= 1 GNU_CONFIGURE= yes CONFIGURE_ENV= CC=${CC} \ CXX=${CXX} \ CPP=${CPP} CONFIGURE_ARGS= --with-boot-jdk=${BOOTSTRAPJDKDIR} \ --disable-ccache \ --disable-javac-server \ --disable-hotspot-gtest \ --with-alsa=${LOCALBASE} \ --with-cups=${LOCALBASE} \ --with-fontconfig=${LOCALBASE} \ --with-freetype=system \ --with-freetype-include=${LOCALBASE}/include/freetype2 \ --with-freetype-lib=${LOCALBASE}/lib \ --with-libjpeg=system \ --with-giflib=system \ --with-giflib-include=${LOCALBASE}/include \ --with-giflib-lib=${LOCALBASE}/lib \ --with-libpng=system \ --with-zlib=system \ --with-lcms=system \ --x-includes=${LOCALBASE}/include \ --x-libraries=${LOCALBASE}/lib \ --with-cacerts-file=${FILESDIR}/cacerts \ --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 JAVAVMS_COMMENT= OpenJDK${JDK_MAJOR_VERSION} ALL_TARGET= images JDK_BUILD_TYPE= release .include # Support aarch64 on FreeBSD 12 and up .if ${OSVERSION} >= 1200500 ONLY_FOR_ARCHS+=aarch64 .endif BOOTSTRAP_JDKS= ${LOCALBASE}/openjdk14 \ ${LOCALBASE}/openjdk13 # 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}/openjdk13 BUILD_DEPENDS+= ${BOOTSTRAPJDKDIR}/bin/javac:java/openjdk13 .endif JDK_BUILD_JVM= server MAKE_ENV+= --with-toolchain-type=${COMPILER_TYPE} CONFIGURE_ARGS+= --with-toolchain-type=${COMPILER_TYPE} .if ${COMPILER_TYPE} == gcc USE_GCC= yes CONFIGURE_ARGS+= --with-extra-ldflags="-Wl,-rpath=${LOCALBASE}/lib/gcc${GCC_DEFAULT} -L/usr/local/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 .endif .if ${ARCH} == aarch64 || ${ARCH} == powerpc64 CONFIGURE_ARGS+= --disable-warnings-as-errors \ --disable-dtrace .endif .if defined(PPC_ABI) && ${PPC_ABI} == ELFv2 CONFIGURE_ARGS+= --disable-precompiled-headers .endif .if ${ARCH} != amd64 CONFIGURE_ARGS+= --enable-aot=no .endif .if ${ARCH} == powerpc64 && ${OSREL:C/\.[0-9]//} == 12 EXTRA_PATCHES= ${PATCHDIR}/extra-patch-src_hotspot_cpu_ppc_vm__version__ppc.hpp .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: @${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 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 Index: head/java/openjdk14/files/patch-make_lib_Awt2dLibraries.gmk =================================================================== --- head/java/openjdk14/files/patch-make_lib_Awt2dLibraries.gmk (nonexistent) +++ head/java/openjdk14/files/patch-make_lib_Awt2dLibraries.gmk (revision 542040) @@ -0,0 +1,11 @@ +--- make/lib/Awt2dLibraries.gmk.orig 2020-07-08 21:33:08 UTC ++++ make/lib/Awt2dLibraries.gmk +@@ -631,7 +631,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \ + LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ + LDFLAGS_aix := -Wl$(COMMA)-berok, \ + LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \ +- LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \ ++ LIBS_unix := -lfontconfig -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \ + LIBS_macosx := -lawt_lwawt -framework CoreText -framework CoreFoundation \ + -framework CoreGraphics, \ + LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \ Property changes on: head/java/openjdk14/files/patch-make_lib_Awt2dLibraries.gmk ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/java/openjdk14/files/patch-src_java.desktop_share_native_libfontmanager_freetypeScaler.c =================================================================== --- head/java/openjdk14/files/patch-src_java.desktop_share_native_libfontmanager_freetypeScaler.c (nonexistent) +++ head/java/openjdk14/files/patch-src_java.desktop_share_native_libfontmanager_freetypeScaler.c (revision 542040) @@ -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 + + #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; + } Property changes on: head/java/openjdk14/files/patch-src_java.desktop_share_native_libfontmanager_freetypeScaler.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property