# Template file for 'chez-scheme'
pkgname=chez-scheme
version=9.5.8
revision=1
build_style=gnu-configure
hostmakedepends="git libX11-devel liblz4-devel libuuid-devel ncurses-devel zlib-devel"
makedepends="${hostmakedepends}"
short_desc="Compiler and run-time system for R6RS Scheme"
maintainer="Leah Neukirchen <leah@vuxu.org>"
license="Apache-2.0"
homepage="https://scheme.com/"
distfiles="https://github.com/cisco/ChezScheme/releases/download/v${version}/csv${version}.tar.gz"
checksum=af83e80cbfe1a9a7c868e7c069a40c449fadd5e2a1737fd0f1260fc9d4159906
alternatives="
 scheme:scheme:/usr/bin/chez-scheme
 scheme:scheme.1:/usr/share/man/man1/chez-scheme.1
"

archs="i686* x86_64* armv6l armv7l"
case "$XBPS_MACHINE" in
	i686*) _host=ti3le;;
	x86_64*) _host=ta6le;;
	arm*) _host=arm32le;;  # no threading makefile
	*) broken="unsupported host platform";;
esac
case "$XBPS_TARGET_MACHINE" in
	i686*) _target=ti3le;;
	x86_64*) _target=ta6le;;
	arm*) _target=arm32le;;
	*) broken="unsupported target platform";;
esac

do_configure() {
	# Configure such that scheme uses the zlib and lz4 system shared libs.
	# ZLIB and LZ4 is used when building the scheme kernel and use the full path.
	# LDFLAGS is extended in 'do_build' so that the rest of the scheme system links them.
	./configure --installprefix=/usr --installman=/usr/share/man \
		--nogzip-man-pages --temproot=$DESTDIR --machine=$_host \
		--installschemename=chez-scheme \
		ZLIB=-L/usr/lib/libz.so LZ4=-L/usr/lib/liblz4.so
}

post_install() {
	# make link relative
	ln -sf scheme.boot ${DESTDIR}/usr/lib/csv*/*/scheme-script.boot
}

if [ "$CROSS_BUILD" ]; then

do_build() {
	# Build host/bootstrap scheme compiler.
	make ${makejobs} CC="$BUILD_CC" CFLAGS="$BUILD_CFLAGS" \
		LD="$BUILD_LD" LDFLAGS="-lz -llz4 $BUILD_LDFLAGS"
	./workarea $_target
	# Use Mf-config created from 'do_configure'.
	# This is required. The build fails to include the scheme kernel when this is missing.
	cd $_target/c
	ln -sf ../../$_host/c/Mf-config .
	cd ..
	# Cross compile to target.
	make ${makejobs} -C s -f Mf-cross m=$_host xm=$_target base=../../$_host
	make ${makejobs} -C c CC=$CC LD=$LD CFLAGS="$CFLAGS" LDFLAGS="-lz -llz4 $LDFLAGS"
}
do_install() {
	cd $_target
	make -f ../$_host/Mf-install DESTDIR=${DESTDIR} m=$_target
}

else

do_build() {
	make ${makejobs} CC=$CC LD=$LD CFLAGS="$CFLAGS" LDFLAGS="-lz -llz4 $LDFLAGS"
}
do_install() {
	make DESTDIR=${DESTDIR} install
}

fi
