# Created by: Jimmy Kelley <ljboiler@gmail.com>
# $FreeBSD: head/java/eclipse/Makefile 465584 2018-03-26 12:38:56Z bapt $

PORTNAME=	eclipse
PORTVERSION=	4.6
PORTREVISION=	2
CATEGORIES=	java devel
MASTER_SITES=	https://s3.amazonaws.com/freebsd-eclipse-dist/
DISTFILES=	eclipse.platform.releng.aggregator-${PORTVERSION}.xz \
		${PORTNAME}-maven-repo-${PORTVERSION}.xz
DIST_SUBDIR=	eclipse

MAINTAINER=	ljboiler@gmail.com
COMMENT=	Eclipse Neon

LICENSE=	EPL

BUILD_DEPENDS=	${LOCALBASE}/share/java/maven33/bin/mvn:devel/maven33
LIB_DEPENDS=	libcairo.so:graphics/cairo \
		libwebkitgtk-1.0.so:www/webkit-gtk2

ONLY_FOR_ARCHS=	i386 amd64
CONFLICTS_INSTALL=	eclipse

USES=		gmake pkgconfig tar:xz
USE_GL=		glu
USE_GNOME=	gconf2 gtk20 gnomevfs2 libgnome libgnomeui
USE_JAVA=	yes
JAVA_OS=	native
JAVA_VERSION=	1.8
JAVA_VENDOR=	openjdk
JAVA_BUILD=	yes
JAVA_RUN=	yes

OPTIONS_DEFINE=		SWT_GTK3_SUPPORT
SWT_GTK3_SUPPORT_DESC=	Enable GTK3 support in SWT (GUI)
OPTIONS_SINGLE=			INSTALLPKG
OPTIONS_SINGLE_INSTALLPKG=	FULL_SDK PLATFORM_SDK PLATFORM
FULL_SDK_DESC=		Full SDK (JDT, PDE, source, API docs)
PLATFORM_SDK_DESC=	Platform with source, API Docs (no Java tools)
PLATFORM_DESC=		Platform only (no Java tools, no source or docs)

OPTIONS_DEFAULT=	FULL_SDK

.include <bsd.port.options.mk>

PATCH_STRIP=	-p1

.if ${PORT_OPTIONS:MSWT_GTK3_SUPPORT}
USE_GNOME+=	gtk30
LIB_DEPENDS+=	libwebkitgtk-3.0.so:www/webkit-gtk3
MVN_SETTINGS+=	-Dmachine_gtk3=1
SWTGTK3OPT=
.else
SWTGTK3OPT=	SWT_GTK3=0
.endif

WRKSRC=${WRKDIR}/eclipse.platform.releng.aggregator-${PORTVERSION}
GITCLONE=${DISTDIR}/eclipse/eclipse-gitclone/eclipse.platform.releng.aggregator

MVN_LOCAL_REPO=	-Dmaven.repo.local=${WRKDIR}/eclipse-maven-repo-${PORTVERSION}/repository
MVN_TEST_FLAG=	-Dmaven.test.skip=true -DskipTests=true
MVN_SETTINGS+=	--offline
MVN_OPTS?=	MAVEN_OPTS='-Xmx1024m'
ECLIPSE_WS=	gtk
ECLIPSE_ARCH=	x86${ARCH:C/^i.86//:C/^amd/_/}
E_SHORTARCH=	${ARCH:C/^i.86//:C/^amd//}
ECLIPSE_BUILDID=I20160606-1100
SCRIPTS_ENV+=	ECLIPSE_ARCH=${ECLIPSE_ARCH} \
		E_SHORTARCH=${E_SHORTARCH}
PORTDESTDIR=	${PREFIX}/lib/eclipse

.if ${ARCH}=="i386"
EXTRA_PATCHES=  ${FILESDIR}/i386-patch-freebsd_natives
.endif

.if ${ARCH}=="amd64"
EXTRA_PATCHES=  ${FILESDIR}/amd64-patch-freebsd_natives
.endif

#  Someday it would be nice to see about moving the product selection into the patch phase (and only build the
#  product the user wants), but that may prove to be difficult if not impossible with the way the eclipse tycho
#  builder is a "all-or-nothing" thing right now.
.if ${PORT_OPTIONS:MFULL_SDK}
PRODUCT_TARFILE=	\
	${WRKSRC}/eclipse.platform.releng.tychoeclipsebuilder/sdk/target/products/org.eclipse.sdk.ide-freebsd.${ECLIPSE_WS}.${ECLIPSE_ARCH}.tar.gz
.endif
.if ${PORT_OPTIONS:MPLATFORM_SDK}
PRODUCT_TARFILE=	\
	${WRKSRC}/eclipse.platform.releng.tychoeclipsebuilder/platform.sdk/target/products/org.eclipse.platform.sdk-freebsd.${ECLIPSE_WS}.${ECLIPSE_ARCH}.tar.gz
.endif
.if ${PORT_OPTIONS:MPLATFORM}
PRODUCT_TARFILE=	\
	${WRKSRC}/eclipse.platform.releng.tychoeclipsebuilder/platform/target/products/org.eclipse.platform.ide-freebsd.${ECLIPSE_WS}.${ECLIPSE_ARCH}.tar.gz
.endif

post-patch:
	@(for f in `${GREP} -hE '(\-\-\-|%%ECLIPSE_ARCH%%)' ${FILESDIR}/patch-* | ${GREP} -B1 'ECLIPSE_ARCH' | ${GREP} '^\-\-\-' | ${SED} -e 's/^\-\-\- .\///'` ; \
	do \
	  ${ECHO_MSG} "Updating ECLIPSE_ARCH in file $$f"; \
	  ${REINPLACE_CMD} -e "s|%%ECLIPSE_ARCH%%|${ECLIPSE_ARCH}|g" ${WRKSRC}/$$f; \
	done)

do-build:
	@(cd ${WRKSRC}; ${SETENV} JAVA_HOME=${JAVA_HOME} M2_HOME=${LOCALBASE}/share/java/maven33 ${MVN_OPTS} \
		mvn ${MVN_SETTINGS} ${MVN_TEST_FLAG} ${MVN_LOCAL_REPO} clean verify -Dnative=${ECLIPSE_WS}.freebsd.${ECLIPSE_ARCH} \
		-DbuildId=${ECLIPSE_BUILDID})

do-install:
	@${RM} -r ${STAGEDIR}${PORTDESTDIR}
	@( cd ${STAGEDIR}${PREFIX}/lib; ${TAR} xfz ${PRODUCT_TARFILE} )
	@${FIND} ${STAGEDIR}${PREFIX}/lib -type f -name \*.orig -delete
	@${SED} \
	  -e "s+%%BROWSER%%+${GECKO:S/19//}+g" \
	  -e "s+%%ECLIPSE_HOME%%+${PORTDESTDIR}+g" \
	  -e "s+%%JAVA_HOME%%+${JAVA_HOME}+g" \
	  -e "s+%%JAVA_OS%%+${JAVA_OS}+g" \
	  -e "s+%%JAVA_VERSION%%+${JAVA_VERSION}+g" \
	  -e "s+%%LOCALBASE%%+${LOCALBASE}+g" \
	  -e "s+%%SWTGTK3OPT%%+${SWTGTK3OPT}+g" \
	  ${FILESDIR}/eclipse.in > ${BUILD_WRKSRC}/eclipse.tmp
.if defined(JAVA_VENDOR)
	@${REINPLACE_CMD} -e "s+%%JAVA_VENDOR_SPECIFICATION%%+JAVA_VENDOR=\"${JAVA_VENDOR}\"+g" \
	  ${BUILD_WRKSRC}/eclipse.tmp
.else
	@${REINPLACE_CMD} -e "s+%%JAVA_VENDOR_SPECIFICATION%%++g" \
	  ${BUILD_WRKSRC}/eclipse.tmp
.endif
	${INSTALL_SCRIPT} ${BUILD_WRKSRC}/eclipse.tmp ${STAGEDIR}${PREFIX}/bin/eclipse
	@(cd ${STAGEDIR}${PREFIX}; ${FIND} -s lib/eclipse -not -type d) >> ${TMPPLIST}
	@(cd ${STAGEDIR}${PREFIX}; ${FIND} -s bin/eclipse -not -type d) >> ${TMPPLIST}
	@(cd ${STAGEDIR}${PREFIX}; ${FIND} -s -d lib/eclipse -type d -empty) | ${SED} -ne "s,^,@dir ,p" >> ${TMPPLIST}
	@${ECHO_CMD} "@exec echo '-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=%D/share/eclipse/dropins' >> %D/lib/eclipse/eclipse.ini" >> ${TMPPLIST}
	@${ECHO_CMD} "@unexec ${SED} -i '' '/^-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=/d' %D/lib/eclipse/eclipse.ini" >> ${TMPPLIST}
	@${MKDIR} ${STAGEDIR}${PREFIX}/share/eclipse/dropins
	@${ECHO_CMD} "@dir share/eclipse/dropins" >> ${TMPPLIST}

distclean:
	${RM} -r ${DISTDIR}/eclipse

.include <bsd.port.mk>
