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

EAPI=8

inherit cmake

DESCRIPTION="Advanced molecule editor and visualizer 2 - libraries"
HOMEPAGE="https://www.openchemistry.org/ https://github.com/OpenChemistry/avogadrolibs"
SRC_URI="
	https://github.com/OpenChemistry/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz
	https://github.com/OpenChemistry/molecules/archive/refs/tags/1.0.0.tar.gz -> ${PN}-molecules-1.0.0.tar.gz
	https://github.com/OpenChemistry/crystals/archive/refs/tags/1.0.1.tar.gz -> ${PN}-crystals-1.0.1.tar.gz
	vtk? ( https://github.com/psavery/genXrdPattern/releases/download/1.0-static/linux64-genXrdPattern -> linux64-genXrdPattern-${P} )"

LICENSE="BSD GPL-2+"
SLOT="0"
KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
IUSE="archive doc hdf5 qt5 test vtk"
RESTRICT="!test? ( test )"
REQUIRED_USE="vtk? ( qt5 )"

# TODO: Not yet packaged:
# sci-libs/libmsym (https://github.com/mcodev31/libmsym)
RDEPEND="
	>=sci-chemistry/molequeue-0.7
	archive? ( app-arch/libarchive:= )
	hdf5? ( sci-libs/hdf5:= )
	qt5? (
		dev-qt/qtconcurrent:5
		dev-qt/qtcore:5
		dev-qt/qtgui:5
		dev-qt/qtnetwork:5
		dev-qt/qtsvg:5
		dev-qt/qtwidgets:5
		media-libs/glew:0=
		virtual/opengl
	)
	vtk? ( sci-libs/vtk[qt5,views] )"
DEPEND="${RDEPEND}
	dev-cpp/eigen:3
	test? ( dev-cpp/gtest )"
BDEPEND="
	doc? ( app-text/doxygen )
	qt5? ( dev-qt/linguist-tools:5 )"

PATCHES=(
	"${FILESDIR}/"${PN}-1.91.0_pre20180406-bundled-genxrdpattern.patch
	"${FILESDIR}/"${PN}-1.95.1-tests.patch
	"${FILESDIR}/"${PN}-1.95.1-usability_backport.patch
)

src_unpack() {
	default

	if use vtk; then
		cp "${DISTDIR}"/linux64-genXrdPattern-${P} "${WORKDIR}/genXrdPattern" || die
	fi

	# hardcoded assumptions in
	# avogadro/qtplugins/insertfragment/CMakeLists.txt
	mv crystals-1.0.1 crystals || die
	mv molecules-1.0.0 molecules || die
}

src_configure() {
	local mycmakeargs=(
		-DUSE_LIBARCHIVE=$(usex archive)
		-DBUILD_DOCUMENTATION=$(usex doc)
		-DUSE_HDF5=$(usex hdf5)
		-DENABLE_TRANSLATIONS=$(usex qt5)
		-DUSE_OPENGL=$(usex qt5)
		-DUSE_QT=$(usex qt5)
		-DENABLE_TESTING=$(usex test)
		-DUSE_VTK=$(usex vtk)
		# disabled libraries
		-DUSE_PYTHON=OFF
		-DUSE_PROTOCALL=OFF
		-DUSE_MMTF=OFF
		-DUSE_LIBMSYM=OFF
		# find_package(Spglib) completely broken
		-DUSE_SPGLIB=OFF
	)
	use qt5 && mycmakeargs+=(
		-DBUILD_GPL_PLUGINS=ON
		-DBUILD_STATIC_PLUGINS=ON
		-DOpenGL_GL_PREFERENCE=GLVND
	)
	use vtk && mycmakeargs+=(
		-DBUNDLED_GENXRDPATTERN="${WORKDIR}/genXrdPattern"
	)

	cmake_src_configure
}