~ chicken-core (chicken-5) d8c60219874deef3555b16e0b64581f2e97548b2
commit d8c60219874deef3555b16e0b64581f2e97548b2
Author: Felix <bunny351@gmail.com>
AuthorDate: Sun Nov 8 00:59:33 2009 +0100
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Mon Nov 23 17:47:20 2009 +0100
import lib only generated if changed
Signed-off-by: felix <felix@call-with-current-continuation.org>
diff --git a/compiler.scm b/compiler.scm
index 41258492..dd8a629f 100644
--- a/compiler.scm
+++ b/compiler.scm
@@ -486,21 +486,27 @@
'() ) ))
(define (emit-import-lib name il)
- (let ((fname (if all-import-libraries
- (string-append (symbol->string name) ".import.scm")
- (cdr il))))
- (when verbose-mode
- (print "generating import library " fname " for module "
- name " ..."))
- (with-output-to-file fname
- (lambda ()
- (print ";;;; " fname " - GENERATED BY CHICKEN "
- (chicken-version) " -*- Scheme -*-\n")
- (for-each
- pretty-print
- (##sys#compiled-module-registration
- (##sys#current-module)))
- (print "\n;; END OF FILE")))))
+ (let* ((fname (if all-import-libraries
+ (string-append (symbol->string name) ".import.scm")
+ (cdr il)))
+ (imps (##sys#compiled-module-registration (##sys#current-module)))
+ (oldimps
+ (and (file-exists? fname)
+ (read-file fname) ) ) )
+ (cond ((equal? imps oldimps)
+ (when verbose-mode
+ (print "not generating import library `" fname "' for module `"
+ name "' because imports did not change")) )
+ (else
+ (when verbose-mode
+ (print "generating import library `" fname "' for module `"
+ name "' ..."))
+ (with-output-to-file fname
+ (lambda ()
+ (print ";;;; " fname " - GENERATED BY CHICKEN "
+ (chicken-version) " -*- Scheme -*-\n")
+ (for-each pretty-print imps)
+ (print "\n;; END OF FILE"))))) ) )
(define (walk x e se dest)
(cond ((symbol? x)
diff --git a/manual/Declarations b/manual/Declarations
index e62a79ce..deabbeee 100644
--- a/manual/Declarations
+++ b/manual/Declarations
@@ -77,13 +77,6 @@ The opposite of {{hide}}. All given identifiers will be exported and all topleve
not listed will be hidden and not be accessible outside of this compilation unit.
-=== emit-exports
-
- [declaration specifier] (emit-exports STRING)
-
-Write exported toplevel variables to file with name {{STRING}}.
-
-
=== emit-external-prototypes-first
[declaration specifier] (emit-external-prototypes-first)
@@ -116,7 +109,10 @@ compiler option).
Declares that any following definition of a module named {{MODULENAME}} should be written to
an external file (either a specified one or a file named {{"MODULENAME.import.scm"}}).
-The compiler option {{-emit-import-library}} may also be used.
+The compiler option {{-emit-import-library}} may also be used instead.
+
+Note that the import library is only generated if it cannot be found in the current
+directory, or if it exists but is not equal to the one that would be generated.
=== inline
Trap