# This builds the lua interpreter
include ../build/Makefile-vars
# See https://github.com/lua/lua/releases
VERSION = 5.4.4
URL = https://github.com/lua/lua/archive/refs/tags/v${VERSION}.tar.gz
TARBALL = ${UPSTREAM}/lua-${VERSION}.tar.gz
all: deps wasm ${BIN}/lua-wasm
include ../build/Makefile-rules
###
# NATIVE
###
${DIST_NATIVE}/.built: ${BUILD_NATIVE}/.build
cd ../build && make zig
rm -rf ${DIST_NATIVE}
cd ${BUILD_NATIVE} \
&& make MYLIBS="-ldl" CC="zig cc" CFLAGS="-O2 -DLUA_USE_POSIX=1" -j8
mkdir -p ${DIST_NATIVE}/bin ${DIST_NATIVE}/lib ${DIST_NATIVE}/include
cp ${BUILD_NATIVE}/*.h ${DIST_NATIVE}/include
cp ${BUILD_NATIVE}/*.a ${DIST_NATIVE}/lib
cp ${BUILD_NATIVE}/lua ${DIST_NATIVE}/bin/lua
ln -sf ${DIST_NATIVE}/bin/lua ${BIN}/lua-native
touch ${DIST_NATIVE}/.built
###
# WASM
# It barely works when used interactively, e.g., "a=2;b=3;" crashes.
# Scripts work to some limited extent.
###
${BUILD_WASM}/.patched: ${BUILD_WASM}/.build
mkdir ${BUILD_WASM}/bits
echo "typedef int __jmp_buf;" > ${BUILD_WASM}/bits/setjmp.h
touch ${BUILD_WASM}/.patched
TERMCAP_WASM = $(shell cowasm-package-path @cowasm/termcap)
LIBEDIT_WASM = $(shell cowasm-package-path @cowasm/libedit)
${DIST_WASM}/.built: node_modules ${BUILD_WASM}/.patched
cd ../build && make zig
rm -rf ${DIST_WASM}
cd ${BUILD_WASM} \
&& make \
MYLIBS="-ldl -ledit -L${LIBEDIT_WASM}/lib -ltermcap -L${TERMCAP_WASM}/lib" \
RANLIB="zig ranlib" \
AR="zig ar rc" \
CC="cowasm-cc" \
CFLAGS="-fvisibility-main -Oz -DL_tmpnam=32 -DLUA_USE_READLINE -I. -I${LIBEDIT_WASM}/include" \
-j8
mkdir -p ${DIST_WASM}/bin ${DIST_WASM}/lib ${DIST_WASM}/include
cp ${BUILD_WASM}/*.h ${DIST_WASM}/include
cp ${BUILD_WASM}/*.a ${DIST_WASM}/lib
cp ${BUILD_WASM}/lua ${DIST_WASM}/bin/lua
touch ${DIST_WASM}/.built
${BIN}/lua-wasm: ${DIST_WASM}/.built ${CWD}/bin/lua-wasm
ln -sf ${CWD}/bin/lua-wasm ${BIN}/lua-wasm
test: node_modules ${DIST_WASM}/.built
# echo "389*5077" | ${CWD}/bin/lua-wasm | grep 1974953 # this broke when I got editline working.
cowasm ${DIST_WASM}/bin/lua ${SRC}/sum.lua | grep 50000005000000