Make typed Android generation self-contained
ober
0660f17d02faa9344e172a4768a5c14ccbea192d
--- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ -JERBOA ?= jerboa +JERBOA_SOURCE_DIR ?= ../jerboa +JERBOA ?= scripts/run-jandroid.sh BUILD_DIR ?= build/counter CLIENT_BUILD_DIR ?= build/client EXAMPLE ?= examples/counter/app.ss new file mode 100755 --- /dev/null +++ b/scripts/run-jandroid.sh @@ -0,0 +1,33 @@ +#!/bin/sh +set -eu + +repo=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd -P) +jerboa_source=${JERBOA_RUNTIME_SOURCE_DIR:-${JERBOA_SOURCE_DIR:-"$repo/../jerboa"}} +typed_source="$jerboa_source/lib/jerboa/typed" +parser="$typed_source/parser.so" + +if [ ! -f "$parser" ]; then + printf '%s\n' "compiled Jerboa typed runtime not found at $parser" >&2 + printf '%s\n' "build the pinned Jerboa source before generating Android clients" >&2 + exit 1 +fi + +if command -v sha256sum >/dev/null 2>&1; then + runtime_id=$(sha256sum "$parser" | awk '{print $1}') +else + runtime_id=$(shasum -a 256 "$parser" | awk '{print $1}') +fi + +runtime="$repo/build/jerboa-typed-runtime-$runtime_id" +if [ ! -f "$runtime/jerboa/typed/parser.so" ]; then + mkdir -p "$runtime/jerboa" + cp -R "$typed_source" "$runtime/jerboa/typed" +fi + +case ${1:-} in + jandroid.ss|*/jandroid.ss) shift ;; +esac + +jerboa_home=$(jerbuild --jerboa-home) +exec jerbuild exec --libdirs "$repo:$runtime:$jerboa_home/lib" \ + "$repo/jandroid.ss" "$@" --- a/templates/sample-client.ss +++ b/templates/sample-client.ss @@ -6,5 +6,4 @@ (export SampleClient) (object SampleClient (val marker : String - "generated named client" - (modifiers const))))))) + "generated named client"))))))