PORTNAME=	gprbuild
DISTVERSIONPREFIX=	v
DISTVERSION=	25.0.0	# Upgrade with devel/libgpr + textproc/xmlada
PORTREVISION=	1
PORTEPOCH=	1
CATEGORIES=	devel

MAINTAINER=	ports@FreeBSD.org
COMMENT=	Adacore multi-language software build tool
WWW=		https://www.adacore.com/gems/gem-65

LICENSE=	GPLv3+ GPLv3RLE
LICENSE_COMB=	multi
LICENSE_FILE=	${WRKSRC}/COPYING3

USES=		ada:12,run gmake
USE_BINUTILS=	yes

USE_GITHUB=	yes
GH_ACCOUNT=	AdaCore
GH_PROJECT=	gprconfig_kb:kb xmlada:xa

BOOTPATH=	${WRKSRC}/bootstrap/bin
MAKE_JOBS_NUMBER_LIMIT=	4
DISABLE_MAKE_JOBS=yes	# to avoid "raised ADA.IO_EXCEPTIONS.END_ERROR : a-tigeli.adb:96"
#MAKE_ARGS=     PROCESSORS=${MAKE_JOBS_NUMBER} ENABLE_SHARED=yes
MAKE_ARGS=	PROCESSORS=1 ENABLE_SHARED=yes
XMLADA_SRC=	${WRKDIR}/xmlada-${PORTVERSION}
PLATFORM=	${OPSYS:tl}${OSREL}
GARCH=		${ARCH:S/amd64/x86_64/}
CONFIGURE_TARGET=	${GARCH}-portbld-${PLATFORM}
MAKE_ENV+=	GPR_PROJECT_PATH=${WRKSRC}/bootstrap/share/gpr
ALL_TARGET=	all	# libgpr.build.static
INSTALL_TARGET=	install	# libgpr.install
P2STRIP=	libexec/gprbuild/gprbind libexec/gprbuild/gprlib bin/gprname	\
		bin/gprslave bin/gprbuild bin/gprconfig bin/gprls bin/gprinstall\
		bin/gprclean

GCC_VER=	12
PLIST_SUB=	GCC_VER=${GCC_VER}

OPTIONS_DEFINE=	DOCS EXAMPLES
DOCSDIR=	${PREFIX}/gnat${GCC_VER}/share/doc/${PORTNAME}
EXAMPLESDIR=	${PREFIX}/gnat${GCC_VER}/share/examples/${PORTNAME}
PORTDOCS=	*
PORTEXAMPLES=	*
DOCS_BUILD_DEPENDS=	sphinx-build:textproc/py-sphinx

pre-configure:
	${REINPLACE_CMD} -e '/^LIB_INSTALLER/s|prefix=|prefix=${STAGEDIR}|'	\
		${WRKSRC}/${MAKEFILE}
	@${ECHO} "*** Build the boostrap script"
	(cd ${WRKSRC} &&	\
	${SETENV} ${CONFIGURE_ENV} ./bootstrap.sh	\
		--with-xmlada=${XMLADA_SRC}	\
		--with-kb=${WRKDIR}/gprconfig_kb-${PORTVERSION}	\
		--prefix=./bootstrap )

do-configure:
	@${ECHO} "*** Make setup"
	(cd ${WRKSRC} &&	\
	${DO_MAKE_BUILD} setup )
	@${ECHO} "*** Register our Ada compiler gnat${GCC_VER}"
	(cd ${WRKSRC} &&	\
	${SETENV} PATH=${PATH}:${LOCALBASE}/gnat${GCC_VER}/bin	\
	./gprconfig --batch --target=${CONFIGURE_TARGET}	\
	--config=Ada,,default,${LOCALBASE}/gnat${GCC_VER}/bin,GNAT )

pre-build:
	@${ECHO} "*** Bootstrap xmlada (configure)"
	(cd ${XMLADA_SRC} &&	\
	${SETENV} ${CONFIGURE_ENV} ./configure --prefix=${WRKSRC}/bootstrap )
	@${ECHO} "*** Bootstrap xmlada (build)"
	(cd ${XMLADA_SRC} &&	\
	${DO_MAKE_BUILD:C|PATH=|PATH=${WRKSRC}/bootstrap/bin:|} all )
	@${ECHO} "*** Bootstrap xmlada (install)"
	(cd ${XMLADA_SRC} &&	\
	${DO_MAKE_BUILD:C|PATH=|PATH=${WRKSRC}/bootstrap/bin:|} install )

do-build:
	@${ECHO} "*** Final build of gprbuild"
	(cd ${WRKSRC} &&	\
	${DO_MAKE_BUILD:C|PATH=|PATH=${WRKSRC}/bootstrap/bin:|} ${ALL_TARGET} )

do-build-DOCS-on:
	@${ECHO} "*** Build docs"
	(cd ${WRKSRC}/doc &&	\
	${DO_MAKE_BUILD} html )

do-install:
	@${ECHO} "*** Installation of gprbuild"
	(cd ${WRKSRC} &&	\
	${SETENVI} ${WRK_ENV} ${MAKE_ENV:C|PATH=|PATH=${WRKSRC}/bootstrap/bin:|} ${FAKEROOT} \
	${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET} )
.for p in ${P2STRIP}
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/gnat${GCC_VER}/${p}
.endfor

.include <bsd.port.mk>
