1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-19 00:13:33 +00:00
freebsd-ports/java/openjfx14/Makefile
Nuno Teixeira 3572ca3e01 */*: Bump consumers of x11-toolkits/gtk30
New version of gtk3 in tree
2023-12-23 18:14:14 +00:00

178 lines
7.2 KiB
Makefile

PORTNAME= openjfx
DISTVERSION= 14.0.2.1+1
PORTREVISION= 15
CATEGORIES= java x11-toolkits devel
MASTER_SITES= https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-core/7.7.1/:core \
https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-grouping/7.7.1/:grouping \
https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-queries/7.7.1/:queries \
https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-queryparser/7.7.1/:queryparser \
https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-sandbox/7.7.1/:sandbox \
https://repo1.maven.org/maven2/org/antlr/antlr4/4.7.2/:antlr
PKGNAMESUFFIX= 14
DISTFILES= lucene-core-7.7.1.jar:core \
lucene-grouping-7.7.1.jar:grouping \
lucene-queries-7.7.1.jar:queries \
lucene-queryparser-7.7.1.jar:queryparser \
lucene-sandbox-7.7.1.jar:sandbox \
antlr4-4.7.2-complete.jar:antlr
MAINTAINER= ports@FreeBSD.org
COMMENT= JavaFX SDK overlay for OpenJDK 11
WWW= https://openjdk.java.net/projects/openjfx/
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/LICENSE
ONLY_FOR_ARCHS= aarch64 amd64 i386 powerpc64 powerpc64le
BUILD_DEPENDS= zip:archivers/zip \
apache-ant>0:devel/apache-ant \
gradle62>=6.2:devel/gradle62 \
${JAVALIBDIR}/junit.jar:java/junit
LIB_DEPENDS= libasound.so:audio/alsa-lib \
libfontconfig.so:x11-fonts/fontconfig \
libfreetype.so:print/freetype2
USES= gettext-runtime gl gnome jpeg localbase:ldflags ninja pkgconfig \
sqlite xorg
USE_GITHUB= yes
GH_ACCOUNT= openjdk
GH_PROJECT= jfx
USE_GL= gl
USE_GNOME= atk cairo gdkpixbuf2 glib20 gtk20 gtk30 pango
USE_JAVA= yes
JAVA_VERSION= 11
USE_LDCONFIG= yes
USE_XORG= x11 xtst xxf86vm
CFLAGS+= -Wno-unused-command-line-argument \
-Wno-int-conversion
PLIST_SUB= INSTALLDIR=${_INSTALLDIR}
OPTIONS_DEFINE= MEDIA SWT TEST WEBKIT
OPTIONS_DEFAULT= MEDIA WEBKIT
OPTIONS_SUB= yes
MEDIA_DESC= Media module
SWT_DESC= SWT support
MEDIA_LIB_DEPENDS= libavcodec.so.58:multimedia/ffmpeg4 \
libsndio.so:audio/sndio
MEDIA_USES= gmake
MEDIA_VARS= COMPILE_MEDIA=true
SWT_BUILD_DEPENDS= swt>0:x11-toolkits/swt
SWT_RUN_DEPENDS= swt>0:x11-toolkits/swt
SWT_VARS= COMPILE_SWT=true
TEST_USES= display:test
TEST_VARS= AWT_TEST=true FULL_TEST=true
# Gradle calls CMake during the build
WEBKIT_IMPLIES= MEDIA
WEBKIT_BUILD_DEPENDS= cmake:devel/cmake-core
WEBKIT_LIB_DEPENDS= libicui18n.so:devel/icu
WEBKIT_USES= bison gmake gperf perl5 python:build ruby:build
WEBKIT_USE= GNOME=libxslt,libxml2 \
PERL5=build \
XORG=xcomposite,xdamage,xfixes,xrender,xt
WEBKIT_VARS= COMPILE_WEBKIT=true
# Move Gradle's home below ${WRKDIR} instead of using ${HOME}/.gradle
_GRADLE_ENV= CC=${WRKDIR}/bin/ccwrapper \
CXX=${WRKDIR}/bin/cxxwrapper \
GRADLE_USER_HOME=${WRKDIR}/gradle-home \
JAVA_VERSION=${JAVA_VERSION}
_GRADLE_RUN= ${SETENV} ${_GRADLE_ENV} gradle62 --no-daemon
_INSTALLDIR= ${PREFIX}/${PKGBASE}
.include <bsd.port.options.mk>
.if ${OPSYS} == FreeBSD && ( ${OSVERSION} >= 1400091 || ( ${OSVERSION} >= 1302507 && ${OSVERSION} < 1400000 ))
CFLAGS+= -Wno-error=incompatible-function-pointer-types
.endif
# Suppress errors with lld >= 17 due to undefined symbols.
LDFLAGS+= -Wl,--undefined-version
post-extract:
${MKDIR} ${WRKDIR}/jars
.for f in core grouping queries queryparser sandbox
${CP} ${DISTDIR}/lucene-${f}-7.7.1.jar ${WRKDIR}/jars
.endfor
${CP} ${DISTDIR}/antlr4-4.7.2-complete.jar ${WRKDIR}/jars
# The BSD Makefiles for GStreamer-lite and Jfxmedia are based on the
# Linux versions. Prepare the tree, so that we only see the changes
# from Linux's Makefile in our own patches.
pre-patch:
@${CP} -r ${WRKSRC}/modules/javafx.media/src/main/native/jfxmedia/projects/linux \
${WRKSRC}/modules/javafx.media/src/main/native/jfxmedia/projects/bsd
@${CP} -r ${WRKSRC}/modules/javafx.media/src/main/native/gstreamer/projects/linux \
${WRKSRC}/modules/javafx.media/src/main/native/gstreamer/projects/bsd
post-patch:
@${MKDIR} ${WRKDIR}/bin
@${PRINTF} '#!/bin/sh\nexport CCACHE_DIR=${CCACHE_DIR}\nexec ${CCACHE_BIN} ${CC} ${CFLAGS} ${LDFLAGS} "$$@"\n' > ${WRKDIR}/bin/ccwrapper
@${PRINTF} '#!/bin/sh\nexport CCACHE_DIR=${CCACHE_DIR}\nexec ${CCACHE_BIN} ${CXX} ${CXXFLAGS} ${LDFLAGS} "$$@"\n' > ${WRKDIR}/bin/cxxwrapper
@${CHMOD} +x ${WRKDIR}/bin/ccwrapper ${WRKDIR}/bin/cxxwrapper
@${REINPLACE_CMD} -e 's|gcc|${WRKDIR}/bin/ccwrapper|g' \
-e 's|g\+\+|${WRKDIR}/bin/cxxwrapper|g' \
${WRKSRC}/buildSrc/bsd.gradle
# Add a *BSD native audio sink to GStreamer-lite instead of using the
# bundled ALSA sink. Currently we add an sndio sink, but this is an extension
# point for eventually adding an OSS backend (or others) as an option as well.
# If you add a new one make sure it registers itself as "bsdaudiosink" as defined
# in modules/media/src/main/native/jfxmedia/platform/gstreamer/GstPipelineFactory.cpp
@${MKDIR} ${WRKSRC}/modules/javafx.media/src/main/native/gstreamer/gstreamer-lite/gst-plugins-base/ext/bsdaudio
@${CP} ${FILESDIR}/gstsndio.* ${FILESDIR}/sndiosink.* \
${WRKSRC}/modules/javafx.media/src/main/native/gstreamer/gstreamer-lite/gst-plugins-base/ext/bsdaudio
@cd ${WRKSRC}/modules/javafx.media/src/main/native/gstreamer/gstreamer-lite/gst-plugins-base/ext/bsdaudio && \
${LN} -s gstsndio.c gstbsdaudio.c && \
${LN} -s sndiosink.c bsdaudiosink.c
# Pull Java dependencies from LOCALBASE
@${REINPLACE_CMD} 's|/usr/local|${LOCALBASE}|g' \
${WRKSRC}/build.gradle ${WRKSRC}/buildSrc/build.gradle
# Remove bundled libraries. We use the system's versions instead.
@cd ${WRKSRC}/modules/javafx.web/src/main/native/Source/ThirdParty && \
${RM} -r icu libxml libxslt sqlite
@${RM} -r ${WRKSRC}/modules/javafx.web/src/main/native/Source/WTF/icu
@cd ${WRKSRC}/modules/javafx.media/src/main/native/gstreamer/3rd_party && \
${RM} -r glib libffi
# Environment variables gets lost so hardcode where we can find FFmpeg 4.x
@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
${PATCH_WRKSRC}/modules/javafx.media/src/main/native/gstreamer/projects/linux/avplugin/Makefile
do-configure:
@${MKDIR} ${WRKDIR}/gradle-home
@${ECHO_CMD} "NUM_COMPILE_THREADS = ${MAKE_JOBS_NUMBER}" > ${WRKSRC}/gradle.properties
@${ECHO_CMD} "JFX_DEPS_URL = ${WRKDIR}/jars" > ${WRKSRC}/gradle.properties
.for prop in COMPILE_MEDIA COMPILE_WEBKIT AWT_TEST FULL_TEST
@${ECHO_CMD} "${prop} = ${${prop}:Ufalse}" >> ${WRKSRC}/gradle.properties
.endfor
@${ECHO_CMD} "BSD.compileSWT = ${COMPILE_SWT:Ufalse};" >> ${WRKSRC}/buildSrc/bsd.gradle
# the java doc are not installed on FreeBSD so exclude the javadoc task
# as it'll fail otherwise
do-build:
@cd ${WRKSRC} && ${_GRADLE_RUN} zips --exclude-task javadoc
# it's not recommended to install openjfx inside openjdk directory
do-install:
@${MKDIR} ${STAGEDIR}${_INSTALLDIR} \
${STAGEDIR}${_INSTALLDIR}/lib \
${STAGEDIR}${_INSTALLDIR}/jmods
${INSTALL_DATA} ${WRKSRC}/build/javafx-exports.zip ${STAGEDIR}${_INSTALLDIR}
(cd ${WRKSRC}/build/artifacts/javafx-sdk-14.0.2.1/lib && ${COPYTREE_SHARE} . ${STAGEDIR}${_INSTALLDIR}/lib)
@${MV} ${STAGEDIR}${_INSTALLDIR}/lib/src.zip ${STAGEDIR}${_INSTALLDIR}/lib/javafx-src.zip
(cd ${WRKSRC}/build/artifacts/javafx-jmods-14.0.2.1 && ${COPYTREE_SHARE} . ${STAGEDIR}${_INSTALLDIR}/jmods)
@${FIND} ${STAGEDIR}${_INSTALLDIR}/lib -name '*.so' -exec ${STRIP_CMD} \{\} \;
do-test-TEST-on:
@cd ${WRKSRC} && ${_GRADLE_RUN} check test
.include <bsd.port.mk>