1
0
Fork 0

Compromsie and add Gambit support as interpreter

This commit is contained in:
retropikzel 2025-12-11 10:29:01 +02:00
parent a959c5ea4b
commit d37b4b90b5
4 changed files with 47 additions and 79 deletions

View File

@ -102,6 +102,7 @@ test-r6rs:
mkdir -p ${R6RSTMP}
cp -r r6rs-testfiles/* ${R6RSTMP}/
cd ${R6RSTMP} && COMPILE_R7RS=${SCHEME} compile-scheme -I ./libs -o main --debug main.sps
cd ${R6RSTMP} && file main
cd ${R6RSTMP} && ./main 1 2 3 > test-result.txt
@grep "Test successfull (\"1\" \"2\" \"3\")" ${R6RSTMP}/test-result.txt || (echo "Test failed, output: " && cat ${R6RSTMP}/test-result.txt && exit 1)
@ -113,7 +114,8 @@ test-r7rs:
rm -rf ${R7RSTMP}
mkdir -p ${R7RSTMP}
cp -r r7rs-testfiles/* ${R7RSTMP}/
cd ${R7RSTMP} && COMPILE_R7RS=${SCHEME} compile-scheme -I ./libs --debug main.scm
cd ${R7RSTMP} && COMPILE_R7RS=${SCHEME} compile-scheme -I ./libs -o main --debug main.scm
cd ${R7RSTMP} && file main
-cd ${R7RSTMP} && ./main 1 2 3 > test-result.txt 2>&1
@grep "Test successfull (\"1\" \"2\" \"3\")" ${R7RSTMP}/test-result.txt || (echo "Test failed, output: " && cat ${R7RSTMP}/test-result.txt && exit 1)

View File

@ -24,7 +24,7 @@ DESCRIPTION
SUPPORTED IMPLEMENTATIONS
Some implementations support both compiling and interpreting, in that
case only the compiler functionality is used and the implementation is
marked as compiler.
marked as compiler. Except currently with Gambit.
R6RS Compilers
loko

View File

@ -216,81 +216,47 @@
,args)))))
(gambit
(type . compiler)
#;(library-command . ,(lambda (library-file prepend-directories append-directories r6rs?)
`(,(string-append "gsc -:search="
(apply string-append
(map (lambda (item)
(string-append item "/, "))
(append prepend-directories
append-directories)))
(search-library-file (append append-directories
prepend-directories)
library-file)))))
(command . ,(lambda (exec-cmd
script-file
args
input-file
output-file
prepend-directories
append-directories
library-files
r6rs?
compilation-target)
(let ((library-files-paths
(map (lambda (item)
(search-library-file (append prepend-directories
append-directories)
item))
library-files))
(link-file
(string-append
(string-cut-from-end input-file 4) "_.c")))
`(,(string-append "gsc -:search="
(string-cut-from-end
(apply string-append
(map (lambda (item)
(string-append item ","))
(append prepend-directories
append-directories)))
1)
" -link -flat -nopreload "
(string-cut-from-end
(apply string-append
(map (lambda (item)
(string-append item " "))
library-files-paths))
1)
" "
input-file)
,(string-append "gsc -:search="
(string-cut-from-end
(apply string-append
(map (lambda (item)
(string-append item ","))
(append prepend-directories
append-directories)))
1)
" -obj "
(apply string-append
(map (lambda (item)
(string-append (string-cut-from-end item 4) ".c "))
library-files-paths))
" "
(string-append (string-cut-from-end input-file 4) ".c")
" "
(string-append (string-cut-from-end input-file 4) "_.c"))
,(string-append "gcc -o "
output-file
" "
(apply string-append
(map (lambda (item)
(string-append (string-cut-from-end item 4) ".o "))
library-files-paths))
" "
(string-append (string-cut-from-end input-file 4) ".o")
" "
(string-append (string-cut-from-end input-file 4) "_.o"))
)))))
(command . ,(lambda (exec-cmd
script-file
args
input-file
output-file
prepend-directories
append-directories
library-files
r6rs?
compilation-target)
(let ((library-files-paths
(map (lambda (item)
(search-library-file (append prepend-directories
append-directories)
item))
library-files)))
`(,(string-append "echo \"#!/usr/bin/env gsi -:r7rs,search="
(apply string-append
(map (lambda (item)
(string-append item "/, "))
(append prepend-directories
append-directories)))
"\" > "
(string-append output-file ".tmp"))
,(string-append "cat "
input-file
" >> "
(string-append output-file ".tmp"))
,(apply string-append
`(" gsc "
,(util-getenv "COMPILE_R7RS_GAMBIT")
" -:r7rs,search="
,(apply string-append
(map (lambda (item)
(string-append item "/, "))
(append prepend-directories
append-directories)))
" -o "
,output-file
" -exe -nopreload "
,(string-append output-file ".tmp"))))))))
(gauche
(type . interpreter)
(command . ,(lambda (exec-cmd

View File

@ -67,9 +67,9 @@
chibi
chicken
cyclone
;gambit
foment
gauche
gambit
guile
kawa
larceny
@ -88,8 +88,8 @@
chibi
chicken
cyclone
;gambit
foment
gambit
gauche
guile
ikarus