~ chicken-core (chicken-5) ac3f13aa0050cb1ebda264fa4f469492286dc2ef
commit ac3f13aa0050cb1ebda264fa4f469492286dc2ef
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Thu Apr 21 23:04:53 2016 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Sun Nov 13 11:32:19 2016 +0100
improvments to egg-compile.scm
diff --git a/egg-compile.scm b/egg-compile.scm
index 644e0618..e49b928e 100644
--- a/egg-compile.scm
+++ b/egg-compile.scm
@@ -1,12 +1,6 @@
;;;; egg-info processing and compilation
-(import (chicken))
-(import (chicken data-structures))
-(import (chicken pretty-print))
-(import (chicken files))
-
-
(define valid-items
'(synopsis authors category license version dependencies files
source-file csc-options test-dependencies destination linkage
@@ -118,12 +112,13 @@
(lopts '())
(opts '()))
(for-each compile-extension/program (cddr info))
- (addfiles
- (if (memq 'static link) (conc target objext) '())
- (if (memq 'dynamic link) (conc target ".so") '())
- (if staticbuild
- (conc target ".import.scm")
- (conc target ".import.so")))
+ (let ((dest (destination-repository mode)))
+ (addfiles
+ (if (memq 'static link) (conc dest "/" target objext) '())
+ (if (memq 'dynamic link) (conc dest "/" target ".so") '())
+ (if (uses-compiled-import-library? mode)
+ (conc dest "/" target ".import.so")
+ (conc dest "/" target ".import.scm"))))
(set! exts
(cons (list target dependencies: deps source: src options: opts
link-options: lopts linkage: link custom: cbuild
@@ -134,7 +129,9 @@
(dest #f)
(files '()))
(for-each compile-data/include (cddr info))
- (let ((dest (normalize-pathname (conc dest "/"))))
+ (let* ((dest (or dest
+ (if (eq? mode 'target) target-sharedir host-sharedir)))
+ (dest (normalize-pathname (conc dest "/"))))
(for-each addfiles (map (cut conc dest <>) files)))
(set! data
(cons (list target dependencies: '() files: files
@@ -145,7 +142,9 @@
(dest #f)
(files '()))
(for-each compile-data/include (cddr info))
- (let ((dest (normalize-pathname (conc dest "/"))))
+ (let* ((dest (or dest
+ (if (eq? mode 'target) target-incdir host-incdir)))
+ (dest (normalize-pathname (conc dest "/"))))
(for-each addfiles (map (cut conc dest <>) files)))
(set! cinc
(cons (list target dependencies: '() files: files
@@ -156,7 +155,9 @@
(dest #f))
(files '()))
(for-each compile-data/include (cddr info))
- (let ((dest (normalize-pathname (conc dest "/"))))
+ (let* ((dest (or dest
+ (if (eq? mode 'target) target-sharedir host-sharedir)))
+ (dest (normalize-pathname (conc dest "/"))))
(for-each addfiles (map (cut conc dest <>) files)))
(set! scminc
(cons (list target dependencies: '() files: files
@@ -171,7 +172,8 @@
(lopts '())
(opts '()))
(for-each compile-extension/program (cddr info))
- (addfiles (conc target exeext))
+ (let ((dest (if (eq? mode 'target) target-bindir host-bindir)))
+ (addfiles (conc dest "/" target exeext)))
(set! prgs
(cons (list target dependencies: deps source: src options: opts
link-options: lopts linkage: link custom: cbuild
@@ -289,12 +291,11 @@
`((install-dynamic-extension ,@ext))
'())))
exts)
- (append-map
- (lambda (ext)
- (if (uses-compiled-import-library? (get-keyword mode: ext))
- `((install-import-library ,@ext))
- '()))
- exts)
+ (map (lambda (ext)
+ (if (uses-compiled-import-library? (get-keyword mode: ext))
+ `(install-import-library ,@ext)
+ `(install-import-library-source ,@ext)))
+ exts)
(map (lambda (prg) `(install-program ,@prg)) prgs)
(map (lambda (data) `(install-data ,@data)) data)
(map (lambda (cinc) `(install-c-include ,@cinc)) cinc)
@@ -363,36 +364,42 @@
(ext (object-extension platform))
(out (quotearg (target-file (conc name ext) mode)))
(dest (destination-repository mode)))
- (conc cmd " " out " " (quotearg (conc dest "/" name ext)))))
+ (conc cmd " " out " " (quotearg (slashify (conc dest "/" name ext))))))
(define (gen-install-dynamic-extension name #!key platform mode)
(let ((cmd (install-command platform))
(out (quotearg (target-file (conc name ".so") mode)))
(dest (destination-repository mode)))
- (conc cmd " " out " " (quotearg (conc dest "/" name ".so")))))
+ (conc cmd " " out " " (quotearg (slashify (conc dest "/" name ".so"))))))
(define (gen-install-import-library name #!key platform mode)
(let ((cmd (install-command platform))
(out (quotearg (target-file (conc name ".import.so") mode)))
(dest (destination-repository mode)))
- (conc cmd " " out " " (quotearg (conc dest "/" name ".import.so")))))
+ (conc cmd " " out " " (quotearg (slashify (conc dest "/" name ".import.so"))))))
+
+(define (gen-install-import-library-source name #!key platform mode)
+ (let ((cmd (install-command platform))
+ (out (quotearg (target-file (conc name ".import.scm") mode)))
+ (dest (destination-repository mode)))
+ (conc cmd " " out " " (quotearg (slashify (conc dest "/" name ".import.scm"))))))
(define (gen-install-program name #!key platform mode)
(let* ((cmd (install-command platform))
(ext (executable-extension platform))
(out (quotearg (target-file (conc name ext) mode)))
- (dest (destination-repository mode)))
- (conc cmd " " out " " (quotearg (conc dest "/" name ext)))))
+ (dest (if (eq? mode 'target) target-bindir host-bindir9)))
+ (conc cmd " " out " " (quotearg (slashify (conc dest "/" name ext))))))
(define (gen-install-data name #!key platform files destination)
(let* ((cmd (install-command platform))
(dest (or dest (if (eq? mode 'target) target-sharedir host-sharedir))))
- (conc cmd (arglist files) " " (quotearg dest))))
+ (conc cmd (arglist files) " " (quotearg (slashify dest)))))
(define (gen-install-c-include name #!key platform deps files dest)
(let* ((cmd (install-command platform))
(dest (or dest (if (eq? mode 'target) target-incdir host-incdir))))
- (conc cmd " " (arglist files) " " (quotearg dest))))
+ (conc cmd " " (arglist files) " " (quotearg (slashify dest)))))
(define command-table
`((compile-static-extension ,gen-compile-static-extension)
@@ -402,6 +409,7 @@
(install-static-extension ,gen-install-static-extension)
(install-dynamic-extension ,gen-install-dynamic-extension)
(install-import-library ,gen-install-import-library)
+ (install-import-library-source ,gen-install-import-library-source)
(install-data ,gen-install-data)
(compile-import-library ,gen-compile-import-library)
(install-data ,gen-install-data)
Trap