diff options
Diffstat (limited to 'mkpltcat.scm')
-rw-r--r-- | mkpltcat.scm | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/mkpltcat.scm b/mkpltcat.scm new file mode 100644 index 0000000..80d4414 --- /dev/null +++ b/mkpltcat.scm @@ -0,0 +1,54 @@ +;;;; "mkimpcat.scm" Build mzscheme-specific catalog for SLIB. +;;; This code is in the public domain. +;;; Author: Aubrey Jaffer. + +(let ((catname "implcat")) + (define ivcatname (in-vicinity (implementation-vicinity) catname)) + (if (file-exists? ivcatname) (delete-file ivcatname)) + (call-with-output-file ivcatname + (lambda (op) + (define (display* . args) + (for-each (lambda (arg) (display arg op)) args) + (newline op)) + (define (add-alias from to) + (display " " op) + (write (cons from to) op) + (newline op)) + (define (add-srfi feature) + (let ((str (symbol->string feature))) + (define len (string-length str)) + (cond ((not (and (> len 5) + (string-ci= "srfi-" (substring str 0 5)))) + (error 'add-srfi 'bad 'srfi 'name feature))))) + + (display* ";\"" catname "\" Implementation-specific SLIB catalog for " + (scheme-implementation-type) (scheme-implementation-version) + ". -*-scheme-*-") + (display* ";") + (display* "; DO NOT EDIT THIS FILE") + (display* "; it is automagically generated by \"" + (current-load-relative-directory) + "mkimpcat.scm" + "\"") + (display*) + + ;;; Output association lists to file "implcat" + (display* "(") + (do ((kdx 0 (+ 1 kdx))) + ((>= kdx 150)) + (let ((kstr (number->string kdx))) + (cond ((file-exists? + (build-path (collection-path "srfi") + (string-append kstr ".ss"))) + (display " " op) + (write `(,(string->symbol (string-append "srfi-" kstr)) + compiled + (lib ,(string-append kstr ".ss") "srfi")) + op) + (newline op))))) + + (if (string>? (version) "370") + (add-alias 'array 'srfi-63)) + (add-alias 'logical 'srfi-60) + (display* ")") + ))) |