diff --git a/Makefile b/Makefile index 1574d39..ca10ed0 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ build: build-gauche README.md: doc/compile-scheme.1 echo "
" > README.md echo "$$(MANWIDTH=80 man -l doc/compile-scheme.1)" >> README.md - echo "" > README.md + echo "" >> README.md cat README_ADDITIONAL.md >> README.md echo "" >> README.md echo "" >> README.md diff --git a/README.md b/README.md index 7afc32f..b7c21e3 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,135 @@ ++compile-scheme(1) General Commands Manual compile-scheme(1) + +NAME + compile-scheme - Compiling Scheme programs to executables + +SYNOPSIS + compile-scheme [-A path] [-I path] [-o path] input-file.sps + + compile-scheme [-A path] [-I path] [-o path] input-file.scm + + compile-scheme long-option + +DESCRIPTION + compile-scheme is a tool to compile R6RS and R7RS Scheme programs. It + supports most of SRFI-138 but also adds more features. + + The program input-file is compiled into an executable file. The re‐ + sulting executable file is written to file specified by the -o path (if + present) or to the file named same as input-file but without the .scm + or .sps suffix. On Windows either .bat or .exe is appended to the out‐ + put name. + +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. + + R6RS Compilers + loko + + R6RS Interpreters + chezscheme guile ikarus ironscheme mosh racket sagittarius ypsilon + + R7RS Compilers + chicken cyclone loko + + R7RS Interpreters + chibi foment gauche guile kawa larceny meevax mit-scheme mosh racket + sagittarius skint stklos tr7 ypsilon + +OPTIONS + -A path Append path to the list of directories that are searched in or‐ + der to locate imported libraries. + + -I path Prepend directory to the list of directories that are searched + in order to locate imported libraries. + + -o output-file Use the output-file file, instead of the default de‐ + ducted from input-file, for the executable file produced. + + Multiple instances of the -A, and -I options can be specified. + + --list-r6rs List supported R6RS implementations. + + --list-r7rs List supported R7RS implementations. + + --list-all List all supported implementations. + + --version Show the software version. --debug Turn on debug output. + + --help Shows you command to read this manual page. :) + +ENVIRONMENT + COMPILE_R7RS + + COMPILE_SCHEME + + Either of these environment variables must be set. Set either + to the name of the implementation as specified in the support + list. This differs from SRFI-138 as the SRFI excepts a path. + + COMPILE_SCHEME_DEBUG + + Another way in addition to --debug to turn on debug output. + +STANDARDS + SRFI 138: Compiling Scheme programs to executables. + https://srfi.schemers.org/srfi-138/srfi-138.html + +CAVEATS + Differences from SRFI-138 + + No support for -D flag. + + Not all implementations support adding to beginning or end of + load path so -I and -A might work the same + + Only supports one input-file. + +EXAMPLES + Compile R6RS file with all dependencies in the same directory. + + COMPILE_SCHEME=SCHEME compile-scheme main.sps + + Compile R7RS file with all dependencies in the same directory. + + COMPILE_SCHEME=SCHEME compile-scheme main.scm + + Compile R6RS file with dependencies in libs directory. + + COMPILE_SCHEME=SCHEME compile-scheme -I ./libs main.sps + + Compile R7RS file with dependencies in libs directory. + + COMPILE_SCHEME=SCHEME compile-scheme -I ./libs main.scm + + Compile R6RS file with dependencies in libs directory, to output named + foo. + + COMPILE_SCHEME=SCHEME compile-scheme -I ./libs -o foo main.sps + + Compile R7RS file with dependencies in libs directory, to output named + foo. + + COMPILE_SCHEME=SCHEME compile-scheme -I ./libs -o foo main.scm + + Makefile for interpreter + + PREFIX=/usr/local + SCHEME=chibi + + build: + COMPILE_SCHEME=${SCHEME} compile-scheme -I ${PREFIX}/lib/myapp/librarydirectory -o myapp myapp.scm + + install: + mkdir -p ${PREFIX}/lib/myapp + cp -r librarydirectory ${PREFIX}/lib/myapp/ + cp myapp.scm ${PREFIX}/lib/myapp/myapp.scm + install myapp ${PREFIX}/bin/myapp + + compile-scheme(1) # Install