100 lines
3.0 KiB
Scheme
100 lines
3.0 KiB
Scheme
(define-package "ldap" (0 1 0)
|
|
((install-lib-version (1 0))
|
|
(options (ldap-prefix "Use LDAP library with prefix" "<dir>" #t #f #f)))
|
|
|
|
|
|
(define (display-bold text)
|
|
(display "\033[1m")
|
|
(display text)
|
|
(display "\033[m"))
|
|
|
|
(newline)
|
|
(display-bold "Generating Scheme stub code")
|
|
(newline)
|
|
|
|
(run (scsh -lel ffi-tools/load.scm
|
|
-lm scheme/ldap-constants.scm
|
|
-o ldap-constants
|
|
-c "(make-scm-files command-line-arguments)"
|
|
scheme))
|
|
|
|
(newline)
|
|
(display-bold "Generating C stub code")
|
|
(newline)
|
|
|
|
(run (scsh -lel ffi-tools/load.scm
|
|
-lm scheme/ldap-constants.scm
|
|
-o ldap-constants
|
|
-c "(make-c-files command-line-arguments)"
|
|
c))
|
|
|
|
(newline)
|
|
(display-bold "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))
|
|
(ffi-tools-path
|
|
(run/string (scsh -lel ffi-tools/load.scm -o ffi-tools-path
|
|
-c "(display (ffi-tools-lib-path))")))
|
|
(configure (append
|
|
(list "./configure"
|
|
(string-append "--prefix=" prefix)
|
|
(string-append "--with-scsh-includes=" scsh-includes)
|
|
(string-append "--with-ffi-tools=" ffi-tools-path)
|
|
(string-append "--enable-static=no")
|
|
(string-append "--build=" build-host))
|
|
(cond ((get-option-value 'ldap-prefix)
|
|
=> (lambda (prefix)
|
|
(list
|
|
(string-append "--with-ldap-prefix=" prefix))))
|
|
(else '()))))
|
|
(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))))
|
|
|
|
(newline)
|
|
(display-bold "Creating load.scm")
|
|
(newline)
|
|
|
|
(let ((schemedir (get-directory 'scheme #f))
|
|
(libdir (get-directory 'lib #f)))
|
|
(write-to-load-script
|
|
`((user)
|
|
(load-package 'dynamic-externals)
|
|
(open 'dynamic-externals)
|
|
(open 'external-calls)
|
|
(open 'configure)
|
|
(open 'signals)
|
|
,@(map (lambda (x) `(run ',x)) tmpl-libtool-la-reader)
|
|
(run '(let* ((lib-dir (string-append ,libdir "/" (host)))
|
|
(la-file-name (string-append lib-dir "/libscshldap.la"))
|
|
(initializer-name "scsh_init_ldap_bindings"))
|
|
(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)
|
|
(call-external (get-external initializer-name)))))
|
|
(else
|
|
(error "Could not figure out libscshldap's name" la-file-name))))))
|
|
(config)
|
|
(load ,(string-append schemedir "/interfaces.scm"))
|
|
(load ,(string-append schemedir "/packages.scm"))
|
|
(user))))
|
|
|
|
(newline)
|
|
(display-bold "Installing Scheme files")
|
|
(newline)
|
|
|
|
(install-directory-contents "scheme" 'scheme)
|
|
)
|