riju/langs/limbo.yaml

54 lines
1.3 KiB
YAML

id: "limbo"
aliases:
- "inferno"
- "b"
name: "Limbo"
install:
prepare:
apt:
- gcc-multilib
- libc6-dev-i386
- libx11-dev:i386
- libxext-dev:i386
manual: |
install -d "${pkg}/opt/inferno"
install -d "${pkg}/usr/local/bin"
wget "$(curl -sSL http://www.vitanuova.com/inferno/downloads.html | grep -E 'inferno-[0-9]+\.tgz' | grep -Eo 'http://[^"]+')" -O inferno.tgz
tar -xf inferno.tgz -C "${pkg}/opt/inferno" --strip-components=1
chmod -R u+w,a=u,go-w "${pkg}/opt/inferno"
pushd "${pkg}/opt/inferno"
sed -i 's/gcc/gcc -m32/g' makemk.sh
sed -i "s#ROOT=.*#ROOT=${PWD}#" mkconfig
sed -i "s#CFLAGS=#CFLAGS=-fcommon#" mkfiles/mkfile-Linux-386
./makemk.sh
PATH="$PWD/Linux/386/bin:$PATH" mk install
ln -s "/opt/inferno/Linux/386/bin/emu" "/opt/inferno/Linux/386/bin/limbo" "${pkg}/usr/local/bin/"
popd
setup: |
ln -s /opt/inferno/* ./
main: "riju/main.b"
template: |
implement Cmd;
include "sys.m";
include "draw.m";
Cmd : module {
init : fn (ctxt : ref Draw->Context, args : list of string);
};
init(nil : ref Draw->Context, nil : list of string)
{
sys := load Sys Sys->PATH;
sys->print("Hello, world!\n");
}
compile: |
limbo -o riju/main.dis riju/main.b
run: |
emu -r . riju/main.dis