Add support for Gambit

This commit is contained in:
retropikzel 2026-03-21 07:41:14 +02:00
parent 160f068ac9
commit 00a3337c53
2 changed files with 9 additions and 3 deletions

View File

@ -4,6 +4,9 @@ FROM docker.io/schemers/${IMAGE}
ARG SCHEME=chibi
ENV COMPILE_R7RS=${SCHEME}
RUN apt-get update && apt-get install -y make
COPY configure .
COPY Makefile .
COPY compile-r7rs .
RUN install compile-r7rs /usr/local/bin/compile-r7rs
RUN ./configure
RUN make
RUN make install

View File

@ -3,7 +3,7 @@
set -eu
if [ "${COMPILE_R7RS:-}" = "" ]; then
echo "COMPILE_R7RS not set, possible values:"
echo "capyscheme chezscheme chibi chicken cyclone foment gauche guile ikarus ironscheme kawa larceny loko meevax mosh racket sagittarius skint stklos tr7 ypsilon"
echo "capyscheme chezscheme chibi chicken cyclone foment gauche gambit guile ikarus ironscheme kawa larceny loko meevax mosh racket sagittarius skint stklos tr7 ypsilon"
exit 1
fi
@ -21,6 +21,7 @@ case ${1:-} in
chicken) prepend_dirs="" ;;
chezscheme|ikarus|loko|mosh|tr7) prepend_dirs="$prepend_dirs:$2" ;;
capyscheme|guile|sagittarius) prepend_dirs="$prepend_dirs -L $2" ;;
gambit) prepend_dirs="$prepend_dirs $2/" ;;
kawa) prepend_dirs="$prepend_dirs:$2/*.sld";;
racket) prepend_dirs="$prepend_dirs -S $2" ;;
ypsilon) prepend_dirs="$prepend_dirs --sitelib=$2" ;;
@ -30,11 +31,12 @@ case ${1:-} in
-A) case $COMPILE_R7RS in
chicken) append_dirs="" ;;
chezscheme|ikarus|loko|mosh|tr7) append_dirs="$append_dirs:$2" ;;
gambit) append_dirs="$append_dirs $2/" ;;
guile) append_dirs="$append_dirs -L $2" ;;
ironscheme) append_dirs="$append_dirs -I $2" ;;
kawa) append_dirs="$append_dirs:$2/*.sld";;
racket) append_dirs="$append_dirs -S $2" ;;
ypsilon) prepend_dirs="$prepend_dirs --sitelib=$2" ;;
ypsilon) append_dirs="$append_dirs --sitelib=$2" ;;
*) append_dirs="$append_dirs -A $2" ;;
esac
shift; shift ;;
@ -79,6 +81,7 @@ case $rnrs in
cyclone) cyclone -o "$output_file" $prepend_dirs $append_dirs "$input_file";;
foment) echo "$prefix foment $prepend_dirs $append_dirs -A /usr/local/share/snow" >> "$output_file";;
gauche) echo "$prefix gosh -r7 $prepend_dirs $append_dirs" >> "$output_file";;
gambit) echo "$prefix gsi -:r7rs $prepend_dirs $append_dirs" >> "$output_file";;
guile) printf "$prefix guile --r7rs $prepend_dirs $append_dirs\n!#\n" >> "$output_file";;
kawa) printf "\n#|\nexec kawa -J--enable-native-access=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.layout=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.abi=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign=ALL-UNNAMED --r7rs --full-tailcalls -Dkawa.import.path=$prepend_dirs:$append_dirs:/usr/local/share/kawa/lib/*.sld -f \$0\n|#" >> "$output_file";;
larceny) printf "\n#|\nexec larceny -r7rs -utf8 -quiet -nobanner $prepend_dirs $append_dirs -program \$0 --\n|#\n" >> "$output_file";;