scsh-ncurses/pkg-def.scm

89 lines
2.9 KiB
Scheme

(define-package "scsh-ncurses" (1 1)
((install-lib-version (1 1 2)))
(display "configuring, compiling and installing c-stubs")
(newline)
(let* ((scsh-includes (include-dir))
(build-host (get-option-value 'build))
(prefix (string-append (get-directory 'lib #f) "/" build-host))
(configure `("./configure"
,(string-append "--prefix=" prefix)
,(string-append "--with-scsh-includes=" scsh-includes)
,(string-append "--enable-static=no")
,(string-append "--build=" build-host)))
(make `(make install
,(string-append "DESTDIR=" (get-option-value 'dest-dir)))))
(if (get-option-value 'dry-run)
(begin
(display configure)
(newline)
(display make)
(newline))
(if (not (and (zero? (run ,configure))
(zero? (run ,make))))
(exit))))
(display "creating load.scm")
(newline)
(let ((schemedir (get-directory 'scheme #f))
(libdir (get-directory 'lib #f)))
(write-to-load-script
`((new-package)
(structure 'load-scsh-ncurses '(export))
(open 'scheme-with-scsh)
(open 'srfi-13)
(load-package 'dynamic-externals)
(open 'dynamic-externals)
(open 'external-calls)
(open 'configure)
(open 'signals)
(open 'define-record-types)
(open 'records)
(open 'i/o)
(run '(define (scsh-ncurses-init)
,@tmpl-libtool-la-reader
(let* ((lib-dir (string-append ,libdir "/" (host)))
(la-file-name (string-append lib-dir "/libscshncurses.la"))
(initializer-name "s48_init_ncurses"))
(let ((la-alist (read-libtool-la la-file-name)))
(cond
((assoc 'dlname la-alist)
=> (lambda (p)
(let ((module-file (string-append lib-dir "/" (cdr p))))
(dynamic-load module-file)
(lookup-all-externals) ;;; important when resuming images
(call-external (get-external initializer-name)))))
(else
(error "Could not figure out libscshncurses' name" )))))))
(run '(scsh-ncurses-init))
;; TODO: This is also in sunterlib/heap-images/reinitializer.scm
(run '(define-record-type reinitializer :reinitializer
(make-reinitializer thunk)
reinitializer?
(thunk reinitializer-thunk)))
(run '(define-record-resumer :reinitializer
(lambda (r)
((reinitializer-thunk r)))))
(run '(define scsh-ncurses-reinitializer
(make-reinitializer scsh-ncurses-init)))
(config)
(load ,(string-append schemedir "/ncurses-packages.scm"))
(user))))
(display "installing")
(newline)
(install-directory-contents "scheme" 'scheme)
(install-file '("COPYING" . "LICENSE") 'doc)
)