diff --git a/config.scm b/config.scm index decc94d1..f93ebd5e 100644 --- a/config.scm +++ b/config.scm @@ -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 diff --git a/eval.c b/eval.c index 1cff2b2f..21c23513 100644 --- a/eval.c +++ b/eval.c @@ -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")); diff --git a/lib/srfi/69.module b/lib/srfi/69.module index 8c64a4e9..5d2f040b 100644 --- a/lib/srfi/69.module +++ b/lib/srfi/69.module @@ -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")) diff --git a/lib/srfi/98.module b/lib/srfi/98.module index 55dfb45b..b3e58525 100644 --- a/lib/srfi/98.module +++ b/lib/srfi/98.module @@ -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"))