# Maintainer: Celeste <cielesti@protonmail.com>
maintainer="Celeste <cielesti@protonmail.com>"
pkgname=ocaml5-loongarch
pkgver=5.3.0
pkgrel=0
_gittag="${pkgver%.0}-la"
pkgdesc="Loongarch port of the OCaml programming language"
url="https://github.com/loongson/ocaml"
arch="loongarch64"
provides="ocaml5=$pkgver-r$pkgrel"
license="LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception"
depends="$pkgname-runtime=$pkgver-r$pkgrel gcc"
makedepends="autoconf"
checkdepends="parallel"
subpackages="
	$pkgname-doc
	$pkgname-ocamldoc
	$pkgname-compiler-libs:_compiler_libs
	$pkgname-runtime
	"
source="https://github.com/loongson/ocaml/archive/refs/tags/v$_gittag/ocaml5-$_gittag.tar.gz"
builddir="$srcdir/ocaml-$_gittag"

prepare() {
	default_prepare

	autoconf
}

build() {
	want_check && local extra_conf_opts="--enable-ocamltest"

	./configure \
		--prefix=/usr \
		--bindir=/usr/bin \
		--libdir=/usr/lib/ocaml \
		--mandir=/usr/share/man \
		--docdir=/usr/share/doc/ocaml5 \
		--enable-native-compiler \
		--enable-native-toplevel \
		--disable-installing-bytecode-programs \
		--disable-installing-source-artifacts \
		$extra_conf_opts \
		CC="${CC:-gcc}"
	make world.opt
}

check() {
	make ocamltest
	make -C testsuite parallel
}

package() {
	make DESTDIR="$pkgdir" install
}

doc() {
	provides="ocaml5-doc=$pkgver-r$pkgrel"
	default_doc
}

ocamldoc() {
	pkgdesc="$pkgdesc (documentation generator)"
	depends="$pkgname=$pkgver-r$pkgrel"
	provides="ocaml5-ocamldoc=$pkgver-r$pkgrel"

	amove usr/bin/ocamldoc*
	amove usr/lib/ocaml/ocamldoc
}

_compiler_libs() {
	pkgdesc="$pkgdesc (compiler libraries)"
	depends="$pkgname=$pkgver-r$pkgrel"
	provides="
		ocaml5-compiler-libs=$pkgver-r$pkgrel
		ocaml5-dev=$pkgver-r$pkgrel
		"

	amove usr/lib/ocaml/compiler-libs
}

runtime() {
	pkgdesc="$pkgdesc (runtime environment)"
	depends=
	provides="ocaml5-runtime=$pkgver-r$pkgrel"

	amove usr/bin/ocamlrun*
	amove usr/lib/ocaml/ld.conf

	local i; for i in \
		'*.cmo' \
		'*.cmi' \
		'*.cma' \
		'stublibs' \
		'threads/*.cmi' \
		'threads/*.cma'
	do
		amove "usr/lib/ocaml/$i"
	done
}

sha512sums="
04f2464b3b56193664a5c1ccefe825e2c9aa99124d2490f4acd1cbb8d025e326495ff13d16bfbb9128f16c1bf8a2bfc9bb924957aad7b2975baae67d7472c61f  ocaml5-5.3-la.tar.gz
"
