using include-shared for shared object files for portability

This commit is contained in:
Alex Shinn 2009-11-28 17:27:01 +09:00
parent 0746c445ed
commit 574b1daa32
4 changed files with 13 additions and 8 deletions

View file

@ -52,12 +52,15 @@
((import)
(let ((mod2 (load-module (cadr x))))
(%env-copy! env (module-env mod2) (module-exports mod2))))
((include)
((include include-shared)
(for-each
(lambda (f)
(cond
((find-module-file name f) => (lambda (x) (load x env)))
(else (error "couldn't find include" f))))
(let ((f (if (eq? (car x) 'include)
f
(string-append f *shared-object-extension*))))
(cond
((find-module-file name f) => (lambda (x) (load x env)))
(else (error "couldn't find include" f)))))
(cdr x)))
((body)
(for-each (lambda (expr) (eval expr env)) (cdr x)))))
@ -98,6 +101,7 @@
(define-config-primitive import)
(define-config-primitive export)
(define-config-primitive include)
(define-config-primitive include-shared)
(define-config-primitive body)
(let ((exports

2
eval.c
View file

@ -2356,6 +2356,8 @@ static sexp sexp_make_standard_env (sexp ctx, sexp version) {
sexp_env_define(ctx, e, sexp_global(ctx, SEXP_G_INTERACTION_ENV_SYMBOL), e);
sexp_env_define(ctx, e, sexp_intern(ctx, "*module-directory*"),
sexp_c_string(ctx, sexp_module_dir, -1));
sexp_env_define(ctx, e, sexp_intern(ctx, "*shared-object-extension*"),
sexp_c_string(ctx, sexp_so_extension, -1));
/* add default exception handler */
err_cell = sexp_env_cell(e, sexp_global(ctx, SEXP_G_CUR_ERR_SYMBOL));
perr_cell = sexp_env_cell(e, sexp_intern(ctx, "print-exception"));

View file

@ -12,7 +12,6 @@
hash string-hash string-ci-hash hash-by-identity)
(import (scheme))
(import (srfi 9))
(include "srfi/69/type.scm"
"srfi/69/hash.so"
"srfi/69/interface.scm"))
(include-shared "srfi/69/hash")
(include "srfi/69/type.scm" "srfi/69/interface.scm"))

View file

@ -1,5 +1,5 @@
(define-module (srfi 98)
(export get-environment-variable get-environment-variables)
(include "srfi/98/env.so"))
(include-shared "srfi/98/env"))