1PORTNAME= openjdk 2PORTVERSION= ${JDK_MAJOR_VERSION}.${JDK_UPDATE_VERSION}.${JDK_BUILD_NUMBER}.${BSD_JDK_VERSION} 3CATEGORIES= java devel 4MASTER_SITES= FREEBSD_LOCAL/jkim:jtreg 5PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} 6 7MAINTAINER= ports@MidnightBSD.org 8COMMENT?= Java Development Kit ${JDK_MAJOR_VERSION} 9WWW= https://openjdk.java.net/ 10 11LICENSE= gpl2 12 13BUILD_DEPENDS= zip:archivers/zip \ 14 autoconf>0:devel/autoconf \ 15 ${LOCALBASE}/include/cups/cups.h:print/cups \ 16 bash:shells/bash 17LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ 18 libfreetype.so:print/freetype2 \ 19 libinotify.so:devel/libinotify 20RUN_DEPENDS= javavm:java/javavmwrapper \ 21 dejavu>0:x11-fonts/dejavu 22 23USES= compiler:features cpe gmake iconv pkgconfig 24 25CPE_VENDOR= oracle 26 27USE_GITHUB= yes 28GH_ACCOUNT= battleblow 29GH_PROJECT= jdk8u 30GH_TAGNAME= jdk${JDK_MAJOR_VERSION}u${JDK_UPDATE_VERSION}-b${JDK_BUILD_NUMBER}.${BSD_JDK_VERSION} 31 32_MAKE_JOBS= # 33CPPFLAGS+= -I${LOCALBASE}/include 34LDFLAGS+= -L${LOCALBASE}/lib 35MAKE_ENV= CLASSPATH="" JAVA_HOME="" LD_LIBRARY_PATH="" 36MAKE_ENV+= IGNORE_OLD_CONFIG=true 37MAKE_ENV+= COMPILER_WARNINGS_FATAL="false" 38 39JDK_BUILDDIR= ${WRKSRC}/build/${JDK_OSARCH}-normal-${JDK_BUILD_JVM}-${JDK_BUILD_TYPE} 40.if !defined(BUILD_JRE) 41JDK_IMAGEDIR= ${JDK_BUILDDIR}/images/j2sdk-image 42JRE_IMAGEDIR= ${JDK_BUILDDIR}/images/j2sdk-image/jre 43.else 44JRE_IMAGEDIR= ${JDK_BUILDDIR}/images/j2re-image 45.endif 46JDK_JVMDIR= lib/${ARCH:C/armv.*/arm/:S/powerpc64/ppc64/} 47JDK_OSARCH= bsd-${ARCH:S/amd64/x86_64/:C/armv.*/arm/:S/i386/x86/:S/powerpc64/ppc64/} 48INSTALLDIR= ${PREFIX}/${PKGBASE} 49 50NOPRECIOUSMAKEVARS= yes 51 52JDK_MAJOR_VERSION= 8 53JDK_UPDATE_VERSION= 332 54JDK_BUILD_NUMBER= 09 55BSD_JDK_VERSION= 1 56PORTREVISION= 1 57JTREG_VERSION= 4.1 58JTREG_BUILD_NUMBER= b08 59 60JDK_BUG_URL= https://bugreport.midnightbsd.org/ 61 62GNU_CONFIGURE= yes 63CONFIGURE_ARGS= --with-boot-jdk=${BOOTSTRAPJDKDIR} 64CONFIGURE_ARGS+= --with-build-number="b${JDK_BUILD_NUMBER}" 65.if ${JDK_UPDATE_VERSION} > 0 66CONFIGURE_ARGS+= --with-update-version=${JDK_UPDATE_VERSION} 67.endif 68CONFIGURE_ARGS+= --with-vendor-name="OpenJDK BSD Porting Team" \ 69 --with-vendor-url="https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/" \ 70 --with-vendor-bug-url="${JDK_BUG_URL}" \ 71 --with-vendor-vm-bug-url="${JDK_BUG_URL}" 72.if defined(NO_CCACHE) 73CONFIGURE_ARGS+= --disable-ccache 74.endif 75CONFIGURE_ARGS+= --disable-freetype-bundling \ 76 --disable-zip-debug-info \ 77 --with-cacerts-file=${FILESDIR}/cacerts \ 78 --with-cups=${LOCALBASE} \ 79 --with-debug-level=${JDK_BUILD_TYPE} \ 80 --with-freetype=${LOCALBASE} \ 81 --with-freetype-include=${LOCALBASE}/include/freetype2 \ 82 --with-jobs=${MAKE_JOBS_NUMBER} \ 83 --with-jvm-variants=${JDK_BUILD_JVM} \ 84 --with-milestone=fcs \ 85 --with-package-path=${LOCALBASE} \ 86 --with-zlib=system \ 87 --with-extra-cflags="-fno-delete-null-pointer-checks -Wno-register" \ 88 --with-extra-cxxflags="-fno-delete-null-pointer-checks -Wno-register" \ 89 --with-extra-ldflags="-Wl,--undefined-version" 90CONFIGURE_SCRIPT= ../../configure 91CONFIGURE_WRKSRC= ${WRKSRC}/common/autoconf 92 93OPTIONS_DEFINE= ALSA POLICY TZUPDATE X11 FONTCONFIG 94OPTIONS_DEFINE_armv6= FPUHACK 95OPTIONS_DEFINE_armv7= FPUHACK 96OPTIONS_DEFAULT= ALSA POLICY TZUPDATE X11 FONTCONFIG 97OPTIONS_DEFAULT_armv6= FPUHACK 98OPTIONS_DEFAULT_armv7= FPUHACK 99FPUHACK_DESC= Hack denormalized numbers in flush-to-zero mode 100POLICY_DESC= Install the Unlimited Strength Policy Files 101TZUPDATE_DESC= Update the time zone data 102 103ALSA_CONFIGURE_ENV_OFF= ALSA_NOT_NEEDED=yes 104ALSA_CONFIGURE_ON= --with-alsa=${LOCALBASE} 105ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib 106FPUHACK_EXTRA_PATCHES= ${PATCHDIR}/fpuhack.patch 107POLICY_CONFIGURE_ENABLE= unlimited-crypto 108TZUPDATE_RUN_DEPENDS= java-zoneinfo>0:java/java-zoneinfo 109X11_BUILD_DEPENDS_OFF= ${LOCALBASE}/include/X11/Xlib.h:x11/libX11 \ 110 ${LOCALBASE}/include/X11/extensions/Xdbe.h:x11/libXext \ 111 ${LOCALBASE}/include/X11/extensions/Xrender.h:x11/libXrender \ 112 ${LOCALBASE}/include/X11/Intrinsic.h:x11-toolkits/libXt 113X11_CONFIGURE_OFF= --disable-headful 114X11_CONFIGURE_ON= --with-giflib=system \ 115 --x-includes=${LOCALBASE}/include \ 116 --x-libraries=${LOCALBASE}/lib 117X11_LIB_DEPENDS= libgif.so:graphics/giflib 118X11_MAKE_ENV_OFF= BUILD_HEADLESS_ONLY=1 \ 119 MAKEFLAGS=X_CFLAGS="-I${LOCALBASE}/include" 120X11_USES= xorg 121X11_USE= XORG=x11,xext,xi,xrender,xt,xtst 122FONTCONFIG_EXTRA_PATCHES= ${PATCHDIR}/fontconfig.patch 123FONTCONFIG_IMPLIES= X11 124 125JAVAVMS_COMMENT= OpenJDK${JDK_MAJOR_VERSION} 126 127.if !defined(BUILD_JRE) 128OPTIONS_DEFINE+= TEST 129OPTIONS_DEFAULT+= RELEASE 130OPTIONS_SINGLE= BUILD 131OPTIONS_SINGLE_BUILD= DEBUG DEBUGFAST RELEASE 132BUILD_DESC= Select OpenJDK build type 133DEBUG_DESC= Build for debugging (without optimizations) 134DEBUGFAST_DESC= Build for debugging (with optimizations) 135RELEASE_DESC= Build for release (default) 136TEST_DESC= Run regression tests 137 138DEBUG_VARS= JDK_BUILD_TYPE=slowdebug 139DEBUGFAST_VARS= JDK_BUILD_TYPE=fastdebug 140RELEASE_BUILD_DEPENDS_OFF= ${LOCALBASE}/bin/objcopy:devel/binutils 141RELEASE_CONFIGURE_ON= --disable-debug-symbols 142RELEASE_VARS= JDK_BUILD_TYPE=release 143RELEASE_VARS_OFF= OBJCOPY=${LOCALBASE}/bin/objcopy 144TEST_ALL_TARGET= test 145TEST_ALL_TARGET_OFF= images 146TEST_CONFIGURE_ON= --with-jtreg=${WRKDIR}/jtreg 147TEST_DISTFILES= jtreg${JTREG_VERSION}-${JTREG_BUILD_NUMBER}${EXTRACT_SUFX}:jtreg 148.else 149ALL_TARGET= images 150CONFIGURE_ARGS+= --disable-debug-symbols 151JAVAVMS_COMMENT+= JRE 152JDK_BUILD_TYPE= release 153.endif 154 155# XXX configure script rejects CC/CPP/CXX with absolute paths. 156.for t in CC CPP CXX 157.if defined(${t}) && ${${t}:M/*} 158BUILD_${t}= ${${t}:C|.*/||g} 159CONFIGURE_ENV+= ${t}="${BUILD_${t}}" 160TOOLS_DIR+= ${${t}:S|/${BUILD_${t}}$||} 161.endif 162.endfor 163.if defined(TOOLS_DIR) 164CONFIGURE_ARGS+= --with-tools-dir="${TOOLS_DIR:u:S/ /:/g}" 165.endif 166 167.include <bsd.port.pre.mk> 168 169BOOTSTRAP_JDKS= ${LOCALBASE}/openjdk8 \ 170 ${LOCALBASE}/openjdk7 \ 171 ${LOCALBASE}/bootstrap-openjdk8 172 173# do we have valid native jdk installed? 174.for BJDK in ${BOOTSTRAP_JDKS} 175. if !defined(BOOTSTRAPJDKDIR) && exists(${BJDK}/bin/javac) 176BOOTSTRAPJDKDIR= ${BJDK} 177. endif 178.endfor 179 180# if no valid jdk found, set dependency 181.if !defined(BOOTSTRAPJDKDIR) || defined(MAGUS) || defined(INDEXING) 182BOOTSTRAPJDKDIR?= ${LOCALBASE}/bootstrap-openjdk8 183BUILD_DEPENDS+= ${BOOTSTRAPJDKDIR}/bin/javac:java/bootstrap-openjdk8 184.endif 185 186.if ${ARCH} == armv6 || ${ARCH} == armv7 || ${ARCH} == i386 187# XXX We must limit max heap size for 32-bit targets. 188CONFIGURE_ARGS+= --with-boot-jdk-jvmargs="-Xmx768m" 189MAKE_ENV+= JAVADOC_CMD_MEM="-Xmx768m" 190.endif 191 192.if ${ARCH} == i386 193CONFIGURE_ARGS+= --disable-jfr 194# Fix the build for i386 when WITH_LLD_IS_LD is set 195# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225741 196MAKE_ENV+= LFLAGS="-Wl,-z,notext" 197.endif 198 199.if ${ARCH} == aarch64 || ${ARCH} == amd64 || ${ARCH} == i386 || ${ARCH:Mpowerpc64*} 200JDK_BUILD_JVM= server 201.else 202JDK_BUILD_JVM= zero 203LIB_DEPENDS+= libffi.so:devel/libffi 204.endif 205 206.if ${COMPILER_TYPE} == clang 207MAKE_ENV+= COMPILER_WARNINGS_FATAL=false USE_CLANG=true 208CONFIGURE_ENV+= LIBCXX="-lc++" 209.endif 210 211# GCC is broken with PCH: https://lists.freebsd.org/pipermail/svn-src-all/2015-March/101722.html 212.if ${COMPILER_TYPE} == gcc 213CONFIGURE_ARGS+= --with-toolchain-type=gcc 214.if ${ARCH} == "powerpc64" 215MAKE_ARGS+= USE_PRECOMPILED_HEADER=1 216.else 217MAKE_ARGS+= USE_PRECOMPILED_HEADER=0 218.endif 219.endif 220 221.if ${ARCH} == powerpc64le 222MAKE_ARGS+= USE_PRECOMPILED_HEADER=0 223.endif 224 225.if empty(ICONV_LIB) 226ICONV_CPPFLAGS= -DLIBICONV_PLUG 227.else 228ICONV_CPPFLAGS= -I${LOCALBASE}/include 229ICONV_LDFLAGS= -L${LOCALBASE}/lib ${ICONV_LIB} 230.endif 231 232post-extract-TEST-on: 233 @${LN} -sf ${WRKDIR}/jtreg/linux/bin ${WRKDIR}/jtreg/ 234 235post-patch: 236 @${FIND} ${WRKSRC} -name '*.orig' -delete 237 @${SED} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ 238 ${FILESDIR}/bsd.fontconfig.properties.in > \ 239 ${WRKSRC}/jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties 240 @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ 241 -e 's|%%OBJCOPY%%|${OBJCOPY}|' \ 242 ${WRKSRC}/configure \ 243 ${WRKSRC}/common/autoconf/toolchain.m4 \ 244 ${WRKSRC}/jdk/make/lib/NioLibraries.gmk \ 245 ${WRKSRC}/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java \ 246 ${WRKSRC}/jdk/src/share/classes/sun/print/PSPrinterJob.java \ 247 ${WRKSRC}/jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java 248 @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ 249 -e 's|%%ICONV_CPPFLAGS%%|${ICONV_CPPFLAGS}|' \ 250 -e 's|%%ICONV_LDFLAGS%%|${ICONV_LDFLAGS}|' \ 251 ${WRKSRC}/jdk/make/lib/Awt2dLibraries.gmk 252 @${REINPLACE_CMD} -e 's|%%ICONV_CPPFLAGS%%|${ICONV_CPPFLAGS}|' \ 253 -e 's|%%ICONV_LDFLAGS%%|${ICONV_LDFLAGS}|' \ 254 ${WRKSRC}/jdk/make/lib/CoreLibraries.gmk \ 255 ${WRKSRC}/jdk/make/lib/ServiceabilityLibraries.gmk 256.if defined(BUILD_JRE) 257 @${REINPLACE_CMD} -e 's|-f Images.gmk$$|& jre-image|' \ 258 -e 's|-f Images.gmk overlay-images$$|-f Images.gmk jre-overlay-image|' \ 259 ${WRKSRC}/jdk/make/BuildJdk.gmk 260.endif 261 @${CHMOD} 755 ${WRKSRC}/configure 262 263post-patch-ALSA-off: 264 @${REINPLACE_CMD} '/EXTRA_SOUND_JNI_LIBS += jsoundalsa/d' \ 265 ${WRKSRC}/jdk/make/lib/SoundLibraries.gmk 266 267post-build: 268.if !defined(BUILD_JRE) 269 @${BOOTSTRAPJDKDIR}/bin/jar cfe \ 270 ${JRE_IMAGEDIR}/lib/compilefontconfig.jar \ 271 build.tools.compilefontconfig.CompileFontConfig \ 272 -C ${JDK_BUILDDIR}/jdk/btclasses build/tools/compilefontconfig 273 @${BOOTSTRAPJDKDIR}/bin/jar cfe \ 274 ${JRE_IMAGEDIR}/lib/javazic.jar \ 275 build.tools.tzdb.TzdbZoneRulesCompiler \ 276 -C ${JDK_BUILDDIR}/jdk/btclasses build/tools/tzdb 277.endif 278 279post-build-TZUPDATE-on: 280 @# Update time zones 281 -${RM} -r ${JRE_IMAGEDIR}/lib/zi 282 @${LN} -sf ${LOCALBASE}/share/java/zi ${JRE_IMAGEDIR}/lib 283 284do-install: 285 @${MKDIR} ${INSTALLDIR} 286.if !defined(BUILD_JRE) 287 @cd ${JDK_IMAGEDIR} && ${COPYTREE_SHARE} . ${INSTALLDIR} 288 @cd ${INSTALLDIR} && \ 289 ${FIND} bin jre/bin -type f -exec ${CHMOD} ${BINMODE} {} \; && \ 290 ${CHMOD} ${BINMODE} jre/${JDK_JVMDIR}/jexec \ 291 jre/${JDK_JVMDIR}/jspawnhelper ${JDK_JVMDIR}/jexec 292 @${ECHO_CMD} "@dir ${PKGBASE}/jre/lib/applet" >> ${TMPPLIST} 293.else 294 @cd ${JRE_IMAGEDIR} && ${COPYTREE_SHARE} . ${INSTALLDIR} 295 @cd ${INSTALLDIR} && \ 296 ${FIND} bin -type f -exec ${CHMOD} ${BINMODE} {} \; && \ 297 ${CHMOD} ${BINMODE} ${JDK_JVMDIR}/jexec ${JDK_JVMDIR}/jspawnhelper 298 @${ECHO_CMD} "@dir ${PKGBASE}/lib/applet" >> ${TMPPLIST} 299.endif 300 @${ECHO_CMD} "@javavm ${PKGBASE}/bin/java" >> ${TMPPLIST} 301 @-${FIND} ${INSTALLDIR} -type f -name '*.so' -exec ${STRIP_CMD} {} + 302 @-${FIND} ${INSTALLDIR} -type f -perm +111 -exec ${STRIP_CMD} {} + 303 @${FIND} ${INSTALLDIR} -not -type d | ${SORT} | \ 304 ${SED} -e 's|^${PREFIX}/||' >> ${TMPPLIST} 305 306.include <bsd.port.post.mk> 307