# Template file for 'nim'
pkgname=nim
version=2.2.10
revision=1
_c3version=eeab3ac46e93f10efda8e58c4db02b9438319d71
_nimbleversion=42ef70c2102a942c46f13eb76872326edd525cec
_checksumsversion=8ee781a713184dcf66ea0235aad865fa65b5c7ff
_atlasversion=ff1f4289482dce94ba9f95b3b0ae16d16e21eb3d
_satversion=e63eaea8baf00bed8bcd5a29ffd8823abb265b39
_zippyversion=a99f6a7d8a8e3e0213b3cad0daf0ea974bf58e3f
_chronosversion=785fcf4ddec1101a3df1f044d6331504d7ab95c6
_resultsversion=df8113dda4c2d74d460a8fa98252b0b771bf1f27
_stewversion=b66168735d6f3841c5239c3169d3fe5fe98b1257
build_wrksrc="Nim-$version"
depends="gcc openssl-devel"
short_desc="Nim programming language"
maintainer="Pulux <pulux@pf4sh.eu>"
license="MIT"
homepage="https://nim-lang.org/"
distfiles="https://github.com/nim-lang/Nim/archive/v${version}.tar.gz
 https://github.com/nim-lang/csources_v3/archive/${_c3version}.tar.gz>csources_v3-${_c3version}.tar.gz
 https://github.com/nim-lang/nimble/archive/${_nimbleversion}.zip
 https://github.com/nim-lang/checksums/archive/${_checksumsversion}.zip
 https://github.com/nim-lang/atlas/archive/${_atlasversion}.zip
 https://github.com/nim-lang/sat/archive/${_satversion}.zip>sat-${_satversion}.zip
 https://github.com/guzba/zippy/archive/${_zippyversion}.zip>zippy-${_zippyversion}.zip
 https://github.com/status-im/nim-chronos/archive/${_chronosversion}.zip>nim-chronos-${_chronosversion}.zip
 https://github.com/arnetheduck/nim-results/archive/${_resultsversion}.zip>nim-results-${_resultsversion}.zip
 https://github.com/status-im/nim-stew/archive/${_stewversion}.zip>nim-stew-${_stewversion}.zip"
checksum="58d8106e9f1936bf00707ee89f90ebfd001b21231d0875c6f9d700ca545cfc90
 382da9d21bc298846788822a5994fd35e037936610cdd3632ba77892c872f545
 a917fe26ad5d4efc530faf30cdd581985c65242fd6f3b38926e09ba49e113031
 fa8bc057edeb400f6f65a0ab539d7e05a34ee77070aa0e604762c22057f2b55f
 b3b048b0e20ad3737230f820b1ce93c56cd2134401d83dd28603742da19ab736
 cea13678e7330824924df19371a0441cb6c5d5c58374f4dfa425fd5de5d644bd
 432241d6809df1bc9354d9e9fd1bb43f76d48d7c41c4ffb998ec325e6c9a90e9
 34d822757d75819bc3d488fdfe4a8d044290f079cf13673dad2915d0eb06cd9e
 575b6c93bc92dd7062600c0136a8249cbc4c86b8b53afdc1487d6436884549de
 7c86d643b7589269c2ab86b5f3142efa9757cc5e6245adc109e340c6a0f7727d"

post_extract() {
	mv csources_v3-$_c3version $build_wrksrc/csources_v3
	mv sat-$_satversion sat
	mv zippy-$_zippyversion zippy
	mv nim-chronos-$_chronosversion chronos
	mv nim-results-$_resultsversion results
	mv nim-stew-$_stewversion stew
	mkdir $build_wrksrc/dist
	mv nimble-$_nimbleversion $build_wrksrc/dist/nimble
	mv checksums-$_checksumsversion $build_wrksrc/dist/checksums
	mkdir -p $build_wrksrc/dist/nimble/dist
	cp -r $build_wrksrc/dist/checksums $build_wrksrc/dist/nimble/dist/checksums
	cp -r $build_wrksrc/dist/checksums/ $build_wrksrc/dist/nimble/vendor/
	cp -r zippy $build_wrksrc/dist/nimble/vendor/
	cp -r sat $build_wrksrc/dist/nimble/vendor/
	cp -r chronos $build_wrksrc/dist/nimble/vendor/
	cp -r results $build_wrksrc/dist/nimble/vendor/
	cp -r stew $build_wrksrc/dist/nimble/vendor/
	mv atlas-$_atlasversion $build_wrksrc/dist/atlas
	mkdir -p $build_wrksrc/dist/atlas/dist
	cp -r sat $build_wrksrc/dist/atlas/dist/sat
	sed -i -e "s|^  # Global flags.|  result.useSystemNim = true|" $build_wrksrc/dist/nimble/src/nimblepkg/options.nim
}

do_build() {
	case "$XBPS_TARGET_MACHINE" in
		i686*)
			CC=cc LD=cc CFLAGS="-Os -pipe" LDFLAGS= \
			make -C csources_v3 ucpu=i686 ${makejobs};;
		ppc|ppc-musl)
			CC=cc LD=cc CFLAGS="-Os -pipe" LDFLAGS= \
			make -C csources_v3 ucpu=powerpc ${makejobs};;
		*)
			CC=cc LD=cc CFLAGS="-Os -pipe" LDFLAGS= \
			make -C csources_v3 ${makejobs};;
	esac

	bin/nim c koch
	./koch boot -d:release -d:danger

	case "$XBPS_TARGET_MACHINE" in
		aarch64*) _arch=arm64;;
		arm*) _arch=arm;;
		ppc64le*) _arch=powerpc64el;;
		ppc64*) _arch=powerpc64;;
		ppc*) _arch=powerpc;;
		riscv64*) _arch=riscv64;;
	esac

	case "$XBPS_TARGET_MACHINE"
	in arm*|aarch64*|ppc*|riscv64*)
		vsed -i config/nim.cfg -e 's/^arm\.linux\.gcc\.\(linker\)\?exe /#&/'
		cat >>config/nim.cfg <<-EDIT
		# VOIDLINUX TEMP
		$_arch.linux.gcc.exe = "$CC"
		$_arch.linux.gcc.linkerexe = "$CC"
		EDIT
		bin/nim c -d:release -d:danger --os:linux --cpu:$_arch --listCmd compiler/nim
		./koch tools --os:linux --cpu:$_arch --listCmd -d:nimNimbleBootstrap
		vsed -i config/nim.cfg -e '/^# VOIDLINUX TEMP$/,$d'
	;; *)
		./koch tools -d:nimNimbleBootstrap
	esac
}

do_install() {
	./koch install ${DESTDIR}/usr/lib

	if [ "$CROSS_BUILD" ]; then
		mv compiler/nim ${DESTDIR}/usr/lib/nim/bin/nim
	fi

	vmkdir usr/bin
	vmkdir usr/share/nim
	ln -sf /usr/lib/nim/bin/nim ${DESTDIR}/usr/bin/nim
	for _f in nimble nimsuggest nimgrep nimpretty testament atlas; do
		chmod 0755 bin/$_f
		cp bin/$_f ${DESTDIR}/usr/lib/nim/bin
		ln -sf /usr/lib/nim/bin/$_f ${DESTDIR}/usr/bin/$_f
	done
	cp -r nimsuggest nimpretty doc ${DESTDIR}/usr/lib/nim
	cp -r dist ${DESTDIR}/usr/lib/nim/
	ln -sf /usr/lib/nim/doc ${DESTDIR}/usr/share/nim/doc
	ln -sf /usr/lib/nim/nimsuggest ${DESTDIR}/usr/share/nim/nimsuggest
	ln -sf /usr/lib/nim/nimpretty ${DESTDIR}/usr/share/nim/nimpretty
	vlicense copying.txt
}
