~ chicken-core (chicken-5) a5cf1db1c4b75f0b785d5b61b4dddeba43b6d621


commit a5cf1db1c4b75f0b785d5b61b4dddeba43b6d621
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Sun Apr 3 20:24:45 2016 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Sun Apr 3 20:24:45 2016 +0200

    egg-info tweaks

diff --git a/egg-info.scm b/egg-info.scm
index 108497dd..bd1e4340 100644
--- a/egg-info.scm
+++ b/egg-info.scm
@@ -26,7 +26,10 @@
 (define default-dynamic-extension-link-options '())
 (define default-extension-linkage '(static dynamic))
 (define default-program-linkage '(dynamic))
-(define executable-extension "")
+(define unix-executable-extension "")
+(define windows-executable-extension ".exe")
+(define unix-object-extension ".o")
+(define windows-object-extension ".obj")
 
 
 (define (validate-egg-info info)
@@ -45,7 +48,7 @@
                 (if (memq (car item) named-items) (cddr item) (cdr item))))))
     info))
 
-(define (compile-egg-info info)
+(define (compile-egg-info info platform)
   (let ((exts '())
         (prgs '())
         (data '())
@@ -59,7 +62,9 @@
         (dest #f)
         (deps '())
         (lopts '())
-        (opts '()))
+        (opts '())
+        (objext #f)
+        (exeext #t))
     (define (check-target t lst)
       (when (member t lst)
         (error "target multiply defined" t))
@@ -78,7 +83,7 @@
                       (opts '()))
             (for-each compile-extension/program (cddr info))
             (addfiles 
-              (if (memq 'static link) (conc target ".o") '())
+              (if (memq 'static link) (conc target objext) '())
               (if (memq 'dynamic link) (conc target ".so") '())
               (conc target ".import.so")) ; assumes import-lib is always compiled?
             (set! exts (cons (list target deps src opts lopts link) exts))))
@@ -114,7 +119,7 @@
                       (lopts '())
                       (opts '()))
             (for-each compile-extension/program (cddr info))
-            (addfiles (conc target executable-extension))
+            (addfiles (conc target exeext))
             (set! prgs (cons (list target deps src opts lopts link) prgs))))))
     (define (compile-extension/program info)
       (case (car info)
@@ -161,6 +166,13 @@
                          (assq dep scminc)
                          (error "unknown component dependency" dep name))))
               deps))
+    (case platform
+      ((unix) 
+        (set! objext unix-object-extension)
+        (set! exeext unix-executable-extension))
+      ((windows) 
+        (set! objext windows-object-extension)
+        (set! exeext windows-executable-extension)))
     ;; collect information
     (for-each compile info)
     ;; sort topologically, by dependencies
@@ -177,8 +189,17 @@
         (append 
           (foldr
             (lambda (t cmds)
-              (let ((data (assq t exts)))
-                (cons `(compile-extension ,@data) cmds)))
+              (let* ((data (assq t exts))
+                     (link (list-ref data 5)))
+                (append
+                  (if (memq 'static link) 
+                      `((compile-static-extension ,@data))
+                      '())
+                  (if (memq 'dynamic link) 
+                      `((compile-dynamic-extension ,@data))
+                      '())
+                  `((compile-import-library ,@data))
+                  cmds)))
             '() order)
           (map (lambda (prg) `(compile-program ,prg)) prgs))
         ;; installation commands
@@ -243,8 +264,12 @@
 ;;; platform-independent part of code generation
 
 (define generators
-  `((compile-extension (unix ,gen-compile-unix-extension) 
-                       (windows ,gen-compile-windows-extension))
+  `((compile-static-extension (unix ,gen-compile-unix-static-extension) 
+                              (windows ,gen-compile-windows-static-extension))
+    (compile-dynamic-extension (unix ,gen-compile-unix-dynamic-extension) 
+                              (windows ,gen-compile-windows-dynamic-extension))
+    (compile-import-library (unix ,gen-compile-unix-import-library) 
+                              (windows ,gen-compile-windows-import-library))
     (compile-program (unix ,gen-compile-unix-program) 
                      (windows ,gen-compile-windows-program))
     (install-extension (unix ,gen-install-unix-extension)
Trap