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

EAPI=8

JAVA_PKG_IUSE="doc source"
MAVEN_ID="com.google.guava:guava:${PV}-jre"

inherit java-pkg-2 java-pkg-simple

DESCRIPTION="A collection of Google's core Java libraries"
HOMEPAGE="https://github.com/google/guava"
SRC_URI="https://github.com/google/guava/archive/v${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${P}"

LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~arm64"

CP_DEPEND="
	>=dev-java/error-prone-annotations-2.41.0:0
	dev-java/j2objc-annotations:0
	dev-java/jspecify:0
"

DEPEND="
	${CP_DEPEND}
	>=dev-java/checker-framework-qual-3.49.5:0
	dev-java/jsr305:0
	>=virtual/jdk-11:*
"

RDEPEND="
	${CP_DEPEND}
	>=virtual/jre-1.8:*
"

JAVA_CLASSPATH_EXTRA="jsr305"

src_prepare() {
	java-pkg-2_src_prepare

	# Get module-info.class into versions/9
	mkdir -p futures/failureaccess/src9 || die "mkdir futures"
	mv futures/failureaccess/src{,9}/module-info.java || die "mv futures"
	mkdir -p guava/src9 || die "mkdir guava"
	mv guava/src{,9}/module-info.java || die "mv guava"
}

src_compile() {
	einfo "Compiling failureaccess.jar"
	JAVA_INTERMEDIATE_JAR_NAME="com.google.common.util.concurrent.internal"
	JAVA_JAR_FILENAME="failureaccess.jar"
	JAVA_RELEASE_SRC_DIRS=( ["9"]="futures/failureaccess/src9" )
	JAVA_SRC_DIR="futures/failureaccess/src"
	java-pkg-simple_src_compile
	JAVA_GENTOO_CLASSPATH_EXTRA+=":failureaccess.jar"
	rm -r target || die

	einfo "Compiling guava.jar"
	JAVA_CLASSPATH_EXTRA="checker-framework-qual"
	JAVA_INTERMEDIATE_JAR_NAME="com.google.common"
	JAVA_JAR_FILENAME="guava.jar"
	JAVA_RELEASE_SRC_DIRS=( ["9"]="guava/src9" )
	JAVA_SRC_DIR="guava/src"
	java-pkg-simple_src_compile
	JAVA_GENTOO_CLASSPATH_EXTRA+=":guava.jar"
	rm -r target || die

	JAVADOC_CLASSPATH="${JAVA_GENTOO_CLASSPATH}"
	JAVADOC_SRC_DIRS=( {futures/failureaccess,guava}/src )
	use doc && ejavadoc
}

src_install() {
	java-pkg-simple_src_install
	java-pkg_dojar failureaccess.jar
}