# Template file for 'chez-scheme'
pkgname=chez-scheme
version=9.5.4
revision=1
wrksrc="ChezScheme-${version}"
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="http://scheme.com/"
distfiles="https://github.com/cisco/ChezScheme/archive/v${version}.tar.gz
 https://github.com/nanopass/nanopass-framework-scheme/archive/v1.9.1.tar.gz"
checksum="258a4b5284bb13ac6e8b56acf89a7ab9e8726a90cc57ea1cd71c5da442323840
92afa571484e58bb0f4baa3e13f7239a116bfb3b5d4585e3c4c7b28fdbdc93c4"
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

post_extract() {
	sed -i '/xlocale\.h/d' c/expeditor.c

	# Create a dummy git repo and hack out submodules.
	# Its presence stops 'configure' from downloading its own versions of nanopass etc.

	mkdir .git
	sed -i '/git submodule/s/^/: #/' configure

	rmdir nanopass
	mv ../nanopass-framework-scheme-1.9.1 nanopass
}

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
