72 lines
2.1 KiB
Scheme
72 lines
2.1 KiB
Scheme
|
|
(module pre-installer mzscheme
|
|
(require (lib "setup-extension.ss" "make")
|
|
(lib "compile.ss" "dynext")
|
|
(lib "link.ss" "dynext")
|
|
(lib "file.ss"))
|
|
|
|
(define (pre-installer plthome openssl-dir)
|
|
(pre-install plthome
|
|
openssl-dir
|
|
"mzssl.c"
|
|
(build-path openssl-dir
|
|
"openssl")
|
|
;; header subdirs
|
|
(list "openssl")
|
|
;; unix libs
|
|
(list "ssl" "crypto")
|
|
;; windows libs
|
|
(let* ([default-paths
|
|
(list (build-path openssl-dir "openssl"))]
|
|
[paths
|
|
(let ([v (getenv "PLT_EXTENSION_LIB_PATHS")])
|
|
(if v
|
|
(path-list-string->path-list v default-paths)
|
|
default-paths))])
|
|
(if (ormap (lambda (path)
|
|
(and (file-exists? (build-path path "lib" "libeay32xxxxxxx.lib"))
|
|
(file-exists? (build-path path "lib" "ssleay32xxxxxxx.lib"))))
|
|
paths)
|
|
;; Use mangleable names:
|
|
(list "libeay32xxxxxxx" "ssleay32xxxxxxx")
|
|
;; Use simple names:
|
|
(list "libeay32" "ssleay32")))
|
|
;; unix extra libs (assume always there)
|
|
null
|
|
;; Windows extra libs (assume always there)
|
|
(list "wsock32.lib")
|
|
;; Extra depends:
|
|
(list "mzssl.ss")
|
|
;; Last-chance k:
|
|
(lambda (k) (k))
|
|
;; 3m, too:
|
|
#t)
|
|
|
|
;; Under windows, put "{lib,sll}eay32" into the system folder when
|
|
;; they're in a "precompiled" dir.
|
|
(when (eq? 'windows (system-type))
|
|
(let ([dir (build-path openssl-dir
|
|
"precompiled"
|
|
"native"
|
|
(system-library-subpath #f))])
|
|
(when (directory-exists? dir)
|
|
(let ([l (directory-list dir)])
|
|
(let ([libeay (ormap (lambda (f)
|
|
(regexp-match #rx"^libeay32.*[.]dll$" f))
|
|
l)]
|
|
[ssleay (ormap (lambda (f)
|
|
(regexp-match #rx"^ssleay32.*[.]dll$" f))
|
|
l)])
|
|
(when (and libeay ssleay)
|
|
(let ([sys-dir (find-system-path 'sys-dir)])
|
|
(let ([move-over
|
|
(lambda (f)
|
|
(unless (file-exists? (build-path sys-dir f))
|
|
(printf " Installing ~a into system directory~n" f)
|
|
(copy-file (build-path dir f)
|
|
(build-path sys-dir f))))])
|
|
(move-over (car libeay))
|
|
(move-over (car ssleay)))))))))))
|
|
|
|
(provide pre-installer))
|