;;;; readline.setup -*- Scheme -*- (define-syntax check-rllibs (syntax-rules () ((_ libs) (and (print "trying: " libs) (handle-exceptions e #f (compile/error readline-test.scm ,libs)) libs)))) (define-syntax compile/error ;; Required for Chicken < 4.6, which calls (reset) on (compile) error. (syntax-rules () ((compile/error args ...) (let ((old-reset (reset-handler))) (parameterize ((reset-handler (lambda () (parameterize ((reset-handler old-reset)) (error 'compile "compilation error"))))) (compile args ...)))))) (define rl-extralib (or (check-rllibs "-lreadline") (check-rllibs "-lreadline -lhistory") (check-rllibs "-lreadline -lncurses") (check-rllibs "-lreadline -lcurses") (check-rllibs "-lreadline -ltermcap") (check-rllibs "-lreadline -lhistory -lncurses") (check-rllibs "-lreadline -lhistory -lcurses") (check-rllibs "-lreadline -lhistory -ltermcap") (error (string-append "This extension requires GNU readline. GNU readline " "may be found at ftp://ftp.gnu.org/pub/gnu/readline\n" "For more information, please consult " "http://chicken.wiki.br/readline#Installation%20problems." )))) (compile -s -O2 readline.scm ,rl-extralib) (compile -c -O2 -d0 -j readline readline.scm -o readline-static.o -unit readline ,rl-extralib) (compile -s -O2 -d0 readline.import.scm) (install-extension 'readline '("readline.so" "readline.import.so" "readline-static.o") `((version 1.993) (static "readline-static.o") (static-options ,rl-extralib)))