Index: head/java/openjdk8/Makefile =================================================================== --- head/java/openjdk8/Makefile (revision 507305) +++ head/java/openjdk8/Makefile (revision 507306) @@ -1,298 +1,296 @@ # $FreeBSD$ PORTNAME= openjdk PORTVERSION= ${JDK_MAJOR_VERSION}.${JDK_UPDATE_VERSION}.${JDK_BUILD_NUMBER:S/^0//}.${BSD_JDK_VERSION} CATEGORIES= java devel MASTER_SITES= LOCAL/jkim:jtreg PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} MAINTAINER= java@FreeBSD.org COMMENT?= Java Development Kit ${JDK_MAJOR_VERSION} LICENSE= GPLv2 BUILD_DEPENDS= zip:archivers/zip \ autoconf>0:devel/autoconf \ ${LOCALBASE}/include/cups/cups.h:print/cups \ bash:shells/bash LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 \ libinotify.so:devel/libinotify RUN_DEPENDS= javavm:java/javavmwrapper \ dejavu>0:x11-fonts/dejavu USES= compiler:features gmake iconv pkgconfig shebangfix USE_GITHUB= yes GH_ACCOUNT= battleblow GH_PROJECT= openjdk-jdk8u GH_TAGNAME= jdk${JDK_MAJOR_VERSION}u${JDK_UPDATE_VERSION}-b${JDK_BUILD_NUMBER}.${BSD_JDK_VERSION} ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc powerpc64 SHEBANG_FILES= configure _MAKE_JOBS= # CPPFLAGS+= -I${LOCALBASE}/include LDFLAGS+= -L${LOCALBASE}/lib MAKE_ENV= CLASSPATH="" JAVA_HOME="" LD_LIBRARY_PATH="" MAKE_ENV+= IGNORE_OLD_CONFIG=true MAKE_ENV+= COMPILER_WARNINGS_FATAL="false" JDK_BUILDDIR= ${WRKSRC}/build/${JDK_OSARCH}-normal-${JDK_BUILD_JVM}-${JDK_BUILD_TYPE} .if !defined(BUILD_JRE) JDK_IMAGEDIR= ${JDK_BUILDDIR}/images/j2sdk-image JRE_IMAGEDIR= ${JDK_BUILDDIR}/images/j2sdk-image/jre .else JRE_IMAGEDIR= ${JDK_BUILDDIR}/images/j2re-image .endif JDK_JVMDIR= lib/${ARCH:C/armv.*/arm/:S/powerpc64/ppc64/} JDK_OSARCH= bsd-${ARCH:S/amd64/x86_64/:C/armv.*/arm/:S/i386/x86/:S/powerpc64/ppc64/} INSTALLDIR= ${PREFIX}/${PKGBASE} NOPRECIOUSMAKEVARS= yes JDK_MAJOR_VERSION= 8 JDK_UPDATE_VERSION= 222 JDK_BUILD_NUMBER= 10 BSD_JDK_VERSION= 1 JTREG_VERSION= 4.1 JTREG_BUILD_NUMBER= b08 GNU_CONFIGURE= yes CONFIGURE_ARGS= --with-boot-jdk=${BOOTSTRAPJDKDIR} CONFIGURE_ARGS+= --with-build-number="b${JDK_BUILD_NUMBER}" .if ${JDK_UPDATE_VERSION} > 0 CONFIGURE_ARGS+= --with-update-version=${JDK_UPDATE_VERSION} .endif .if defined(NO_CCACHE) CONFIGURE_ARGS+= --disable-ccache .endif CONFIGURE_ARGS+= --disable-freetype-bundling \ --disable-zip-debug-info \ --with-cacerts-file=${FILESDIR}/cacerts \ --with-cups=${LOCALBASE} \ --with-debug-level=${JDK_BUILD_TYPE} \ --with-freetype=${LOCALBASE} \ --with-freetype-include=${LOCALBASE}/include/freetype2 \ --with-jobs=${MAKE_JOBS_NUMBER} \ --with-jvm-variants=${JDK_BUILD_JVM} \ --with-milestone=fcs \ --with-package-path=${LOCALBASE} \ --with-zlib=system CONFIGURE_SCRIPT= ../../configure CONFIGURE_WRKSRC= ${WRKSRC}/common/autoconf OPTIONS_DEFINE= ALSA POLICY TZUPDATE X11 FONTCONFIG OPTIONS_DEFINE_armv6= FPUHACK OPTIONS_DEFINE_armv7= FPUHACK OPTIONS_DEFAULT= ALSA POLICY TZUPDATE X11 OPTIONS_DEFAULT_armv6= FPUHACK OPTIONS_DEFAULT_armv7= FPUHACK FPUHACK_DESC= Hack denormalized numbers in flush-to-zero mode POLICY_DESC= Install the Unlimited Strength Policy Files TZUPDATE_DESC= Update the time zone data ALSA_CONFIGURE_ENV_OFF= ALSA_NOT_NEEDED=yes ALSA_CONFIGURE_ON= --with-alsa=${LOCALBASE} ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib FPUHACK_EXTRA_PATCHES= ${PATCHDIR}/fpuhack.patch POLICY_CONFIGURE_ENABLE= unlimited-crypto TZUPDATE_RUN_DEPENDS= java-zoneinfo>0:java/java-zoneinfo X11_BUILD_DEPENDS_OFF= ${LOCALBASE}/include/X11/Xlib.h:x11/libX11 \ ${LOCALBASE}/include/X11/extensions/Xdbe.h:x11/libXext \ ${LOCALBASE}/include/X11/extensions/Xrender.h:x11/libXrender \ ${LOCALBASE}/include/X11/Intrinsic.h:x11-toolkits/libXt X11_CONFIGURE_OFF= --disable-headful X11_CONFIGURE_ON= --with-giflib=system \ --x-includes=${LOCALBASE}/include \ --x-libraries=${LOCALBASE}/lib X11_LIB_DEPENDS= libgif.so:graphics/giflib X11_MAKE_ENV_OFF= BUILD_HEADLESS_ONLY=1 \ MAKEFLAGS=X_CFLAGS="-I${LOCALBASE}/include" X11_MAKE_ENV_ON= MAKEFLAGS="" X11_USE= XORG=x11,xext,xi,xrender,xt,xtst +FONTCONFIG_EXTRA_PATCHES= ${PATCHDIR}/fontconfig.patch FONTCONFIG_IMPLIES= X11 JAVAVMS_COMMENT= OpenJDK${JDK_MAJOR_VERSION} .if !defined(BUILD_JRE) OPTIONS_DEFINE+= TEST OPTIONS_DEFAULT+= RELEASE OPTIONS_SINGLE= BUILD OPTIONS_SINGLE_BUILD= DEBUG DEBUGFAST RELEASE BUILD_DESC= Select OpenJDK build type DEBUG_DESC= Build for debugging (without optimizations) DEBUGFAST_DESC= Build for debugging (with optimizations) RELEASE_DESC= Build for release (default) TEST_DESC= Run regression tests DEBUG_VARS= JDK_BUILD_TYPE=slowdebug DEBUGFAST_VARS= JDK_BUILD_TYPE=fastdebug RELEASE_BUILD_DEPENDS_OFF= ${LOCALBASE}/bin/objcopy:devel/binutils RELEASE_CONFIGURE_ON= --disable-debug-symbols RELEASE_VARS= JDK_BUILD_TYPE=release RELEASE_VARS_OFF= OBJCOPY=${LOCALBASE}/bin/objcopy TEST_ALL_TARGET= test TEST_ALL_TARGET_OFF= images TEST_CONFIGURE_ON= --with-jtreg=${WRKDIR}/jtreg TEST_DISTFILES= jtreg${JTREG_VERSION}-${JTREG_BUILD_NUMBER}${EXTRACT_SUFX}:jtreg .else ALL_TARGET= images CONFIGURE_ARGS+= --disable-debug-symbols JAVAVMS_COMMENT+= JRE JDK_BUILD_TYPE= release .endif # XXX configure script rejects CC/CPP/CXX with absolute paths. .for t in CC CPP CXX .if defined(${t}) && ${${t}:M/*} BUILD_${t}= ${${t}:C|.*/||g} CONFIGURE_ENV+= ${t}="${BUILD_${t}}" TOOLS_DIR+= ${${t}:S|/${BUILD_${t}}$||} .endif .endfor .if defined(TOOLS_DIR) CONFIGURE_ARGS+= --with-tools-dir="${TOOLS_DIR:u:S/ /:/g}" .endif .include BOOTSTRAP_JDKS= ${LOCALBASE}/openjdk8 \ ${LOCALBASE}/openjdk7 \ ${LOCALBASE}/bootstrap-openjdk8 # 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}/bootstrap-openjdk8 BUILD_DEPENDS+= ${BOOTSTRAPJDKDIR}/bin/javac:java/bootstrap-openjdk8 .endif .if ${ARCH} == armv6 || ${ARCH} == armv7 || ${ARCH} == i386 # XXX We must limit max heap size for 32-bit targets. CONFIGURE_ARGS+= --with-boot-jdk-jvmargs="-Xmx768m" MAKE_ENV+= JAVADOC_CMD_MEM="-Xmx768m" .endif .if ${ARCH} == i386 # Fix the build for i386 when WITH_LLD_IS_LD is set # https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225741 MAKE_ENV+= LFLAGS="-Wl,-z,notext" .endif .if ${ARCH} == amd64 || ${ARCH} == i386 || ${ARCH} == powerpc64 JDK_BUILD_JVM= server .else JDK_BUILD_JVM= zero LIB_DEPENDS+= libffi.so:devel/libffi .endif .if ${COMPILER_TYPE} == clang .if ${COMPILER_VERSION} >= 35 MAKE_ENV+= COMPILER_WARNINGS_FATAL=false .endif MAKE_ENV+= USE_CLANG=true .if ${COMPILER_FEATURES:Mlibc++} CONFIGURE_ENV+= LIBCXX="-lc++" .endif .endif # GCC is broken with PCH: https://lists.freebsd.org/pipermail/svn-src-all/2015-March/101722.html .if ${COMPILER_TYPE} == gcc CONFIGURE_ARGS+= --with-toolchain-type=gcc .if ${ARCH} == "powerpc64" MAKE_ARGS+= USE_PRECOMPILED_HEADER=1 .else MAKE_ARGS+= USE_PRECOMPILED_HEADER=0 .endif .endif .if empty(ICONV_LIB) ICONV_CPPFLAGS= -DLIBICONV_PLUG .else ICONV_CPPFLAGS= -I${LOCALBASE}/include ICONV_LDFLAGS= -L${LOCALBASE}/lib ${ICONV_LIB} .endif post-extract-TEST-on: @${LN} -sf ${WRKDIR}/jtreg/linux/bin ${WRKDIR}/jtreg/ - -do-patch-FONTCONFIG-on: - @${PATCH} -d ${PATCH_WRKSRC} < ${PATCHDIR}/fontconfig.patch post-patch: @${FIND} ${WRKSRC} -name '*.orig' -delete @${SED} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ ${FILESDIR}/bsd.fontconfig.properties.in > \ ${WRKSRC}/jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ -e 's|%%OBJCOPY%%|${OBJCOPY}|' \ ${WRKSRC}/configure \ ${WRKSRC}/common/autoconf/toolchain.m4 \ ${WRKSRC}/jdk/make/lib/Awt2dLibraries.gmk \ ${WRKSRC}/jdk/make/lib/NioLibraries.gmk \ ${WRKSRC}/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java \ ${WRKSRC}/jdk/src/share/classes/sun/print/PSPrinterJob.java \ ${WRKSRC}/jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java @${REINPLACE_CMD} -e 's|/usr/local/share/java/classes|${LOCALBASE}/share/java/classes|' \ ${WRKSRC}/jdk/src/bsd/doc/man/*.1 @${REINPLACE_CMD} -e 's|%%ICONV_CPPFLAGS%%|${ICONV_CPPFLAGS}|' \ -e 's|%%ICONV_LDFLAGS%%|${ICONV_LDFLAGS}|' \ ${WRKSRC}/jdk/make/lib/Awt2dLibraries.gmk \ ${WRKSRC}/jdk/make/lib/CoreLibraries.gmk \ ${WRKSRC}/jdk/make/lib/ServiceabilityLibraries.gmk .if defined(BUILD_JRE) @${REINPLACE_CMD} -e 's|-f Images.gmk$$|& jre-image|' \ -e 's|-f Images.gmk overlay-images$$|-f Images.gmk jre-overlay-image|' \ ${WRKSRC}/jdk/make/BuildJdk.gmk .endif @${CHMOD} 755 ${WRKSRC}/configure post-patch-ALSA-off: @${REINPLACE_CMD} '/EXTRA_SOUND_JNI_LIBS += jsoundalsa/d' \ ${WRKSRC}/jdk/make/lib/SoundLibraries.gmk post-build: .if !defined(BUILD_JRE) @${BOOTSTRAPJDKDIR}/bin/jar cfe \ ${JRE_IMAGEDIR}/lib/compilefontconfig.jar \ build.tools.compilefontconfig.CompileFontConfig \ -C ${JDK_BUILDDIR}/jdk/btclasses build/tools/compilefontconfig @${BOOTSTRAPJDKDIR}/bin/jar cfe \ ${JRE_IMAGEDIR}/lib/javazic.jar \ build.tools.tzdb.TzdbZoneRulesCompiler \ -C ${JDK_BUILDDIR}/jdk/btclasses build/tools/tzdb .endif post-build-TZUPDATE-on: @# Update time zones @${RM} -r ${JRE_IMAGEDIR}/lib/zi @${LN} -sf ${LOCALBASE}/share/java/zi ${JRE_IMAGEDIR}/lib do-install: @${MKDIR} ${STAGEDIR}${INSTALLDIR} .if !defined(BUILD_JRE) @cd ${JDK_IMAGEDIR} && ${COPYTREE_SHARE} . ${STAGEDIR}${INSTALLDIR} @cd ${STAGEDIR}${INSTALLDIR} && \ ${FIND} bin jre/bin -type f -exec ${CHMOD} ${BINMODE} {} \; && \ ${CHMOD} ${BINMODE} jre/${JDK_JVMDIR}/jexec \ jre/${JDK_JVMDIR}/jspawnhelper ${JDK_JVMDIR}/jexec @${ECHO} "@dir ${INSTALLDIR}/jre/lib/applet" >> ${TMPPLIST} .else @cd ${JRE_IMAGEDIR} && ${COPYTREE_SHARE} . ${STAGEDIR}${INSTALLDIR} @cd ${STAGEDIR}${INSTALLDIR} && \ ${FIND} bin -type f -exec ${CHMOD} ${BINMODE} {} \; && \ ${CHMOD} ${BINMODE} ${JDK_JVMDIR}/jexec ${JDK_JVMDIR}/jspawnhelper @${ECHO} "@dir ${INSTALLDIR}/lib/applet" >> ${TMPPLIST} .endif @${ECHO} "@javavm ${INSTALLDIR}/bin/java" >> ${TMPPLIST} @${FIND} ${STAGEDIR}${INSTALLDIR} -not -type d | ${SORT} | \ ${SED} -e 's|^${STAGEDIR}${PREFIX}/||' >> ${TMPPLIST} .include Index: head/java/openjdk8/files/fontconfig.patch =================================================================== --- head/java/openjdk8/files/fontconfig.patch (revision 507305) +++ head/java/openjdk8/files/fontconfig.patch (revision 507306) @@ -1,222 +1,221 @@ --- jdk/src/share/native/sun/font/freetypeScaler.c.orig 2017-01-20 17:04:07 UTC +++ jdk/src/share/native/sun/font/freetypeScaler.c @@ -38,6 +38,8 @@ #include FT_SIZES_H #include FT_OUTLINE_H #include FT_SYNTHESIS_H +#include FT_LCD_FILTER_H +#include #include "fontscaler.h" @@ -693,6 +695,132 @@ static void CopyFTSubpixelVToSubpixel(co } } +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; +} /* * Class: sun_font_FreetypeFontScaler -@@ -726,32 +850,15 @@ Java_sun_font_FreetypeFontScaler_getGlyp +@@ -698,31 +826,15 @@ return ptr_to_jlong(getNullGlyphImage()); } -- /* if algorithmic styling is required then we do not request bitmap */ -- if (context->doBold || context->doItalize) { -- renderFlags = FT_LOAD_DEFAULT; +- 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; -+ RenderingProperties renderingProperties; -+ readFontconfig((const FcChar8 *) scalerInfo->face->family_name, -+ context->ptsz, context->aaType, &renderingProperties); - +- glyph_index = FT_Get_Char_Index(scalerInfo->face, glyphCode); - 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) @@ -770,9 +877,7 @@ Java_sun_font_FreetypeFontScaler_getGlyp /* generate bitmap if it is not done yet e.g. if algorithmic styling is performed and style was added to outline */ - if (ftglyph->format == FT_GLYPH_FORMAT_OUTLINE) { - FT_Render_Glyph(ftglyph, FT_LOAD_TARGET_MODE(target)); - } + FT_Render_Glyph(ftglyph, renderingProperties.ftRenderMode); width = (UInt16) ftglyph->bitmap.width; height = (UInt16) ftglyph->bitmap.rows; @@ -1001,11 +1106,14 @@ static FT_Outline* getFTOutline(JNIEnv* 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); glyph_index = FT_Get_Char_Index(scalerInfo->face, glyphCode); - error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderFlags); + error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderingProperties.ftLoadFlags); + if (error) { return NULL; } --- jdk/make/lib/Awt2dLibraries.gmk.orig 2015-07-18 14:30:01.000000000 -0700 +++ jdk/make/lib/Awt2dLibraries.gmk 2015-07-18 14:30:08.000000000 -0700 @@ -943,7 +943,7 @@ LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \ LDFLAGS_SUFFIX_solaris := -lawt -lawt_headless -lc $(LIBM) $(LIBCXX) -ljava -ljvm, \ LDFLAGS_SUFFIX_aix := -lawt -lawt_headless $(LIBM) $(LIBCXX) -ljava -ljvm,\ - LDFLAGS_SUFFIX_bsd := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \ + LDFLAGS_SUFFIX_bsd := -L%%LOCALBASE%%/lib -lfontconfig -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \ LDFLAGS_SUFFIX_macosx := -lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup \ -ljava -ljvm, \ LDFLAGS_SUFFIX_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \