117 lines
3 KiB
Bash
117 lines
3 KiB
Bash
# Template file for 'j'
|
|
pkgname=j
|
|
version=807
|
|
revision=1
|
|
archs="aarch64* x86_64*"
|
|
wrksrc="jsource-j${version}-release"
|
|
makedepends="libedit-devel libgomp-devel libomp-devel"
|
|
short_desc="Modern, high-performance, ASCII-based successor to APL"
|
|
maintainer="B. Wilson <x@wilsonb.com>"
|
|
license="GPL-3.0-or-later"
|
|
homepage="https://jsoftware.com/"
|
|
distfiles="https://github.com/jsoftware/jsource/archive/j${version}-release.tar.gz"
|
|
checksum=324ff0b046c9f7f24f18a72fa8a4253ad54c99a48c397fd2c724392f5e097d7f
|
|
|
|
_jsz="j${XBPS_TARGET_WORDSIZE}"
|
|
_jtype="release"
|
|
_jbuilder="voidlinux.org"
|
|
_jlib="/usr/lib/j"
|
|
_jshare="/usr/share/j"
|
|
_jetc="/etc/j"
|
|
_juser=".j"
|
|
|
|
case "${XBPS_TARGET_MACHINE}" in
|
|
aarch64*) _jplatform="raspberry";;
|
|
*) _jplatform="linux";;
|
|
esac
|
|
|
|
case "${XBPS_TARGET_MACHINE}" in
|
|
*-musl) makedepends+=" musl-fts-devel";;
|
|
esac
|
|
|
|
|
|
##
|
|
# Crossbuilds do not distinguish between AVX- and non-AVX-enabled targets, so
|
|
# here we build libraries for both cases.
|
|
do_build() {
|
|
sed "/jplatform/s@unknown@${_jplatform}@
|
|
/jtype/s@beta@${_jtype}@
|
|
/jbuilder/s@unknown@${_jbuilder}@" \
|
|
jsrc/jversion-x.h > jsrc/jversion.h
|
|
|
|
sed -i "/jgit=/s@~/git/jsource@${wrksrc}@
|
|
/jbld=/s@~/jbld@${wrksrc}/build@
|
|
/jplatform=/s@=.*\$@=${_jplatform}@
|
|
/CC=/s@clang@${CC}@" \
|
|
make/jvars.sh
|
|
|
|
sed -i "/^install=./s@/usr/share/j/[0-9.]\+@${_jshare}@
|
|
/^user=./s@home,userx@home,'/${_juser}'@" \
|
|
jlibrary/bin/profile.ijs
|
|
|
|
mkdir -p build/${_jsz}/bin
|
|
. make/jvars.sh
|
|
|
|
make/build_jconsole.sh ${_jsz}
|
|
make/build_libj.sh ${_jsz}
|
|
make/build_libj.sh ${_jsz}nonavx
|
|
}
|
|
|
|
_runtestdir() {
|
|
dir=${1}
|
|
jc=${2}
|
|
libj=${3}
|
|
|
|
for f in "${dir}"/*.ijs; do
|
|
printf '%s(%s): ' "${f}" "${libj}"
|
|
if ${jc} -lib "${libj}" <"${f}" >/dev/null; then
|
|
echo "PASS"
|
|
else
|
|
echo "FAIL"
|
|
return 1
|
|
fi
|
|
done
|
|
}
|
|
|
|
do_check() {
|
|
ln -srf jlibrary/bin/* build/${_jsz}/bin/
|
|
ln -srf jlibrary/{addons,system,tools} build/${_jsz}/
|
|
|
|
# Test AVX-enabled library if all host CPUs have AVX flag set
|
|
if sed -n '/^flags/{s/\<avx\>//;t;q1}' /proc/cpuinfo; then
|
|
_runtestdir ./test "build/${_jsz}/bin/jconsole" "libj.so"
|
|
fi
|
|
_runtestdir ./test "build/${_jsz}/bin/jconsole" "libj-nonavx.so"
|
|
}
|
|
|
|
do_install() {
|
|
vmkdir "${_jshare}" 0755
|
|
vcopy jlibrary/addons "${_jshare}"
|
|
vcopy jlibrary/system "${_jshare}"
|
|
vcopy jlibrary/tools "${_jshare}"
|
|
|
|
vmkdir "${_jlib}" 0755
|
|
vinstall "build/${_jsz}/bin/jconsole" 755 "${_jlib}"
|
|
vinstall "build/${_jsz}/bin/libj.so" 755 "${_jlib}"
|
|
if [ -f "build/${_jsz}/bin/libj-nonavx.so" ]; then
|
|
vinstall "build/${_jsz}/bin/libj-nonavx.so" 755 "${_jlib}"
|
|
fi
|
|
|
|
vmkdir "${_jetc}" 0755
|
|
vinstall "${FILESDIR}/profilex_template.ijs" 644 "${_jetc}"
|
|
vinstall "jlibrary/bin/profile.ijs" 644 "${_jetc}"
|
|
|
|
cat >build/${_jsz}/bin/jc.sh <<-JC
|
|
#!/usr/bin/env sh
|
|
|
|
if [ -f "${_jlib}/libj-nonavx.so" ] \\
|
|
&& ! sed -n '/^flags/{s/\<avx\>//;t;q1}' /proc/cpuinfo; then
|
|
lib='libj-nonavx.so'
|
|
fi
|
|
|
|
${_jlib}/jconsole -lib "${_jlib}/\${lib:-libj.so}" \\
|
|
-jprofile "${_jetc}/profile.ijs" \\
|
|
"\${@}"
|
|
JC
|
|
vbin "build/${_jsz}/bin/jc.sh" jc
|
|
}
|