# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit cmake elisp-common java-pkg-2 java-ant-2

PATCHSET_VER="2"

DESCRIPTION="Advanced development platform for intelligent, distributed applications"
HOMEPAGE="http://mozart2.org/"
SRC_URI="https://github.com/mozart/mozart2/archive/v${PV}.tar.gz -> ${P}.tar.gz
	https://dev.gentoo.org/~keri/distfiles/mozart/${P}-gentoo-patchset-${PATCHSET_VER}.tar.gz"

LICENSE="BSD-2"
SLOT="0"
KEYWORDS="amd64 ~x86"
IUSE="emacs test"
RESTRICT="!test? ( test )"

RDEPEND="dev-libs/boost:=
	dev-libs/gmp:0
	dev-lang/tcl:0
	dev-lang/tk:0
	emacs? ( >=app-editors/emacs-23.1:* )"

DEPEND="${RDEPEND}
	dev-java/ant-core
	>=virtual/jdk-1.8:=
	dev-lang/scala:2.12
	test? ( dev-cpp/gtest:= )"

SITEFILE="50${PN}-gentoo.el"

S="${WORKDIR}/${PN}2-${PV}"

src_prepare() {
	if [[ -d "${WORKDIR}"/${PV} ]] ; then
		eapply "${WORKDIR}"/${PV}
	fi

	touch stdlib/CMakeLists.txt || die
	touch vm/vm/test/gtest/CMakeLists.txt || die

	cmake_src_prepare
}

src_configure() {
	local mycmakeargs=(
		-DMOZART_BOOST_USE_STATIC_LIBS=OFF
		-DEMACS=$(usex emacs "/usr/bin/emacs" "")
	)

	cmake_src_configure
}

src_compile() {
	EANT_GENTOO_CLASSPATH="scala:2.12"
	pushd bootcompiler > /dev/null || die
	ANT_OPTS="-Xss2M" eant jar
	popd > /dev/null || die

	cmake_src_compile
}

src_test() {
	cmake_build vmtest platform-test
	cmake_src_test -V
}

src_install() {
	cmake_src_install

	dolib.so "${BUILD_DIR}"/vm/vm/main/libmozartvm.so
	dolib.so "${BUILD_DIR}"/vm/boostenv/main/libmozartvmboost.so

	if use emacs; then
		elisp-install ${PN} "${S}"/opi/emacs/*.el
		elisp-site-file-install "${FILESDIR}"/"${SITEFILE}" \
			|| die "elsip-site-file-install failed"
	fi
}

pkg_postinst() {
	if use emacs; then
		xdg_icon_cache_update
		xdg_desktop_database_update
		elisp-site-regen
	fi
}

pkg_postrm() {
	if use emacs; then
		xdg_icon_cache_update
		xdg_desktop_database_update
		elisp-site-regen
	fi
}