~ chicken-core (chicken-5) 7a9f9a64552a7a13a166e5b86870111ee78b105c


commit 7a9f9a64552a7a13a166e5b86870111ee78b105c
Author:     unknown <felix@.(none)>
AuthorDate: Mon Nov 2 18:28:53 2009 +0100
Commit:     unknown <felix@.(none)>
CommitDate: Mon Nov 2 18:28:53 2009 +0100

    standard-extension takes keyword args; added import-only extension property

diff --git a/TODO b/TODO
index f7ba6f55..6a3c22a5 100644
--- a/TODO
+++ b/TODO
@@ -42,13 +42,10 @@ TODO for chicken							-*- Outline -*-
     reported by Jim Ursetto
     reverted original patch, see patches/finalizer-closures.diff
 
-** tools
-*** chicken-bug: SMTP servers not accessible (greylisting)
-
 
 * tasks
 
-** remove TODO from master
+** eggify lolevel
 
 ** pending commits
 
@@ -103,6 +100,12 @@ Date:   Sun Oct 11 00:45:40 2009 +0200
 
 ** private commits not in pending
 
+commit d04fa84aa85dd28f5e102278e01330e5924b7668
+Author: unknown <felix@.(none)>
+Date:   Mon Nov 2 17:34:36 2009 +0100
+
+    added culprit to an error message; removed -inlines.scm files
+
 commit 0ef80438adf6bc8f2b4efb0891ce9ee5f645f1c6
 Author: unknown <felix@.(none)>
 Date:   Thu Oct 29 09:32:00 2009 +0100
diff --git a/eval.scm b/eval.scm
index 8e9dba95..d849db32 100644
--- a/eval.scm
+++ b/eval.scm
@@ -1262,13 +1262,14 @@
 	       (let ((info (##sys#extension-information id 'require-extension)))
 		 (cond (info
 			(let ((s (assq 'syntax info))
+			      (nr (assq 'import-only info))
 			      (rr (assq 'require-at-runtime info)) )
 			  (when s (add-req id #t))
 			  (values 
 			   (impform
 			    `(##core#begin
 			       ,@(if s `((##core#require-for-syntax ',id)) '())
-			       ,@(if (and (not rr) s)
+			       ,@(if (or nr (and (not rr) s))
 				     '()
 				     `((##sys#require
 					,@(map (lambda (id) `',id)
diff --git a/manual/Extensions b/manual/Extensions
index ce545c03..6df3961a 100644
--- a/manual/Extensions
+++ b/manual/Extensions
@@ -112,6 +112,13 @@ as a file containing macros to be loaded at compile/macro-expansion time.
 Specifies extensions that should be loaded (via {{require}}) at runtime. This is mostly
 useful for syntax extensions that need additional support code at runtime.
 
+===== import-only
+
+  [extension property] (import-only)
+
+Specifies that this extension only provides a expansion-time code in an import library and
+does not require code to be loaded at runtime.
+
 ===== version
 
  [extension property] (version STRING)
@@ -153,7 +160,7 @@ files in {{FILELIST}} to executable (for installing shell-scripts).
 
 ==== standard-extension
 
- [procedure] (standard-extension ID VERSION [STATIC])
+ [procedure] (standard-extension ID VERSION #!key static info)
 
 A convenience procedure that combines the compilation and installation of 
 a simple single-file extension. This is roughly equivalent to:
@@ -166,7 +173,8 @@ a simple single-file extension. This is roughly equivalent to:
    'ID
    '("ID.o" "ID.so" "ID.import.so")
    '((version 1.0)
-     (static "ID.o")))   ; STATIC ...
+     ... `INFO' ...
+     (static "ID.o")))   ; if `static' is given and true
 
 
 ==== run
diff --git a/setup-api.scm b/setup-api.scm
index d76c01b2..0d0bb991 100644
--- a/setup-api.scm
+++ b/setup-api.scm
@@ -494,7 +494,7 @@
 
 ;;; Convenience function
 
-(define (standard-extension name version #!optional (static #f))
+(define (standard-extension name version #!key static (info '()))
   (let* ((sname (->string name))
 	 (fname (make-pathname #f sname "scm"))
 	 (iname (make-pathname #f sname "import.scm")))
@@ -508,6 +508,7 @@
 	   iname
 	   (make-pathname #f sname "setup"))
      `((version ,version)
+       ,@info
        ,@(if static `((static ,(make-pathname #f fname "o"))) '())))))
 
 
Trap