diff --git a/Makefile b/Makefile
index 23afc36..965e679 100644
--- a/Makefile
+++ b/Makefile
@@ -18,15 +18,12 @@ all: build-chibi
README.md: doc/compile-scheme.1
printf "
\n$$(MANWIDTH=80 man -l doc/compile-scheme.1)\n
" > README.md
-replace-version:
- sed 's/DEVELOPMENT_VERSION/${VERSION}/' compile-scheme.scm
-
-build-chibi: replace-version
+build-chibi:
echo "#!/bin/sh" > compile-scheme
echo "chibi-scheme -A ${PREFIX}/lib/compile-scheme ${PREFIX}/lib/compile-scheme/compile-scheme.scm \"\$$@\"" >> compile-scheme
chmod +x compile-scheme
-build-chicken: replace-version
+build-chicken:
csc -R r7rs -X r7rs -static -c -J -unit libs.util -o libs.util.o libs/util.sld
ar rcs libs.util.a libs.util.o
csc -R r7rs -X r7rs -static -c -J -unit libs.library-util -o libs.library-util.o libs/library-util.sld
@@ -42,42 +39,42 @@ build-chicken: replace-version
-uses srfi-170 \
compile-scheme.scm
-deb: build-chicken
+deb: build-gauche
mkdir -p deb/bin
cp compile-scheme deb/bin/
mkdir -p deb/DEBIAN
- printf "Package: compile-scheme\nArchitecture: amd64\nVersion: ${VERSION}\nSection: misc\nMaintainer: Retropikzel \nDescription: SRFI 138: Compiling Scheme programs to executables - Implementation" \
+ printf "Package: compile-scheme\nArchitecture: amd64\nDepends: gauche\nVersion: ${VERSION}\nSection: misc\nMaintainer: Retropikzel \nDescription: SRFI 138: Compiling Scheme programs to executables - Implementation\n" \
> deb/DEBIAN/control
dpkg-deb -b deb
+ mv deb.deb compile-scheme-${VERSION}.deb
-# FIXME
-#build-gauche: replace-version
- #echo "#!/bin/sh" > compile-scheme
- #echo "gosh -r -I ${PREFIX}/lib/compile-scheme -I ${PREFIX}/lib/compile-scheme/libs ${PREFIX}/lib/compile-scheme/compile-scheme.scm \"\$$@\"" >> compilescheme-
- #chmod +x compile-scheme
+build-gauche:
+ echo "#!/bin/sh" > compile-scheme
+ echo "gosh -r7 -I ${PREFIX}/lib/compile-scheme -I ${PREFIX}/lib/compile-scheme/libs ${PREFIX}/lib/compile-scheme/compile-scheme.scm \"\$$@\"" >> compile-scheme
+ chmod +x compile-scheme
-build-guile: replace-version
+build-guile:
echo "#!/bin/sh" > compile-scheme
echo "guile --r7rs --auto-compile -I -q -L ${PREFIX}/lib/compile-scheme ${PREFIX}/lib/compile-scheme/compile-scheme.scm \"\$$@\"" >> compile-scheme
chmod +x compile-scheme
# FIXME
-#build-kawa: replace-version
+#build-kawa:
#echo "#!/bin/sh" > compile-scheme
#echo "kawa -J--add-exports=java.base/jdk.internal.foreign.abi=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.layout=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign=ALL-UNNAMED -J--enable-native-access=ALL-UNNAMED -Dkawa.import.path=/usr/local/share/kawa/lib/*.sld:${PREFIX}/lib/compile-scheme/*.sld --r7rs ${PREFIX}/lib/compile-scheme/compile-scheme.scm \"\$$@\" 2> /dev/null" >> compile-scheme
#chmod +x compile-scheme
# FIXME
-#build-racket: replace-version
+#build-racket:
#echo "#!/bin/sh" > compile-scheme
#echo "racket -I r7rs -S ${PREFIX}/lib/compile-scheme --script ${PREFIX}/lib/compile-scheme/compile-scheme.scm \"\$$@\"" >> compile-scheme
-build-sagittarius: replace-version
+build-sagittarius:
echo "#!/bin/sh" > compile-scheme
echo "sash -A ${PREFIX}/lib/compile-scheme ${PREFIX}/lib/compile-scheme/compile-scheme.scm \"\$$@\"" >> compile-scheme
chmod +x compile-scheme
-build-stklos: replace-version
+build-stklos:
echo "#!/bin/sh" > compile-scheme
echo "stklos -I ${PREFIX}/lib/compile-scheme ${PREFIX}/lib/compile-scheme/compile-scheme.scm \"\$$@\"" >> compile-scheme
chmod +x compile-scheme
diff --git a/compile-scheme.scm b/compile-scheme.scm
index e50fe74..a96289f 100644
--- a/compile-scheme.scm
+++ b/compile-scheme.scm
@@ -1,20 +1,12 @@
(import (scheme base)
- (scheme file)
- (scheme read)
- (scheme write)
- (scheme process-context)
- (foreign c)
- (libs util)
- (libs data)
- (libs library-util)
- (srfi 170))
-
-(define-c-library c-stdlib
- '("stdlib.h")
- libc-name
- '((additional-versions ("6"))))
-
-(define-c-procedure c-system c-stdlib 'system 'int '(pointer))
+ (scheme file)
+ (scheme read)
+ (scheme write)
+ (scheme process-context)
+ (libs util)
+ (libs data)
+ (libs library-util)
+ (srfi 170))
(when (member "--help" (command-line))
(display "For help see: man compile-scheme")
@@ -22,7 +14,7 @@
(exit 0))
(when (member "--version" (command-line))
- (display "DEVELOPMENT_VERSION")
+ (display "1.0.0")
(newline)
(exit 0))
@@ -235,7 +227,7 @@
(let* ((library-command (scheme-library-command file)))
(for-each
(lambda (command)
- (let ((exit-code (c-system (string->c-utf8 command))))
+ (let ((exit-code (system command)))
(when (not (= exit-code 0))
(exit exit-code))))
library-command)))
@@ -286,14 +278,14 @@
#\newline
,scheme-program))))))
(cond ((symbol=? compilation-target 'unix)
- (c-system (string->c-utf8 (string-append "chmod +x " output-file)))))))
+ (system (string-append "chmod +x " output-file))))))
(when (and (symbol=? scheme-type 'compiler) input-file)
(when (and output-file (file-exists? output-file))
(delete-file output-file))
(for-each
(lambda (command)
- (let ((exit-code (c-system (string->c-utf8 command))))
+ (let ((exit-code (system command)))
(when (not (= exit-code 0))
(exit exit-code))))
scheme-command)
diff --git a/libs/util.sld b/libs/util.sld
index 4ae162b..154ecf7 100644
--- a/libs/util.sld
+++ b/libs/util.sld
@@ -1,12 +1,22 @@
(define-library
(libs util)
- (import (scheme base)
- (scheme write)
- (scheme file)
- (scheme char)
- (scheme process-context)
- (foreign c))
- (export echo
+ (cond-expand
+ (gauche
+ (import (scheme base)
+ (scheme write)
+ (scheme file)
+ (scheme char)
+ (scheme process-context)
+ (only (gauche base) sys-system)))
+ (else
+ (import (scheme base)
+ (scheme write)
+ (scheme file)
+ (scheme char)
+ (scheme process-context)
+ (foreign c))))
+ (export system
+ echo
cat
r6rs-schemes
r7rs-schemes
@@ -31,6 +41,19 @@
trim-end
trim-both)
(begin
+ (cond-expand
+ (gauche
+ (define system sys-system))
+ (else
+ (define-c-library c-stdlib
+ '("stdlib.h")
+ libc-name
+ '((additional-versions ("6"))))
+
+ (define-c-procedure c-system c-stdlib 'system 'int '(pointer))
+ (define (system cmd)
+ (c-system (string->c-utf8 cmd)))))
+
(define (echo text) (display text) (newline))
(define (cat path) (for-each (lambda (line) (echo line)) (file->list path)))
(define r6rs-schemes '(chezscheme