;; -*- Scheme -*- (use make srfi-1) (define scheme-modules '("case-lambda" "char" "complex" "cxr" "eval" "file" "inexact" "lazy" "load" "process-context" "r5rs" "read" "repl" "time" "write")) (make (("r7rs-support.so" ("r7rs-support.scm") (compile -s -O3 -d1 r7rs-support.scm -J) (compile -s -O3 -d0 r7rs-support.import.scm)) ("r7rs-library.so" ("r7rs-library.scm") (compile -s -O3 -d1 r7rs-library.scm -J) (compile -s -O3 -d0 r7rs-library.import.scm)) ("r7rs-compile-time.so" ("r7rs-compile-time.scm" "r7rs-compile-time-module.scm" "r7rs-library.so" "r7rs-support.so") (compile -s -O3 -d1 r7rs-compile-time-module.scm -J -o r7rs-compile-time.so) (compile -s -O3 -d0 r7rs-compile-time.import.scm)) ("scheme.base.so" ("scheme.base.scm" "scheme.base-interface.scm" "r7rs-support.so") (compile -s -O3 -d1 scheme.base.scm -J -emit-type-file scheme.base.types) (compile -s -O3 -d0 scheme.base.import.scm))) '("r7rs-compile-time.so" "scheme.base.so")) (for-each (lambda (m) (let* ((mname (string-append "scheme." m)) (so (string-append mname ".so")) (scm (string-append mname ".scm"))) (make/proc (list (list so (list scm) (lambda () (compile -s -O3 -d1 ,scm -J -emit-type-file ,(string-append mname ".types")) (compile -s -O3 -d0 ,(string-append mname ".import.scm"))))) (list so)))) scheme-modules) (make (("r7rs.so" ("r7rs.scm" "synrules.scm") (compile -s -O3 -d0 r7rs.scm -J) (compile -s -O3 -d0 r7rs.import.scm)))) (install-extension 'r7rs `("r7rs.so" "r7rs.import.so" "r7rs-support.so" "r7rs-support.import.so" "r7rs-library.so" "r7rs-library.import.so" "r7rs-compile-time.so" "r7rs-compile-time.import.so" "scheme.base.so" "scheme.base.import.so" "scheme.base.types" ,@(append-map (lambda (mod) (list (string-append "scheme." mod ".so") (string-append "scheme." mod ".import.so") (string-append "scheme." mod ".types"))) scheme-modules)) '((version "0.0.1")))