~ chicken-core (chicken-5) 80ab83ce75c98c4b14b59bc02a6361db3fb1b6d4


commit 80ab83ce75c98c4b14b59bc02a6361db3fb1b6d4
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Apr 7 18:05:07 2017 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Fri Apr 7 18:05:07 2017 +0200

    chicken-instal: use TARGET_RUN_LIB_DIR when building target-version of .egg-info (incomplete), produce link file for target with proper name

diff --git a/egg-compile.scm b/egg-compile.scm
index 811aac3b..97a713f5 100644
--- a/egg-compile.scm
+++ b/egg-compile.scm
@@ -40,6 +40,7 @@
 (define +windows-executable-extension+ ".exe")
 (define +unix-object-extension+ ".o")
 (define +windows-object-extension+ ".obj")
+(define +link-file-extension+ ".link")
 
 (define keep-generated-files #f)
 
@@ -142,13 +143,13 @@
                       (oname #f)
                       (opts '()))
             (for-each compile-extension/program (cddr info))
-            (let ((dest (destination-repository mode)))
+            (let ((dest (destination-repository mode #t)))
               (when (eq? #t tfile) (set! tfile target))
               (when (eq? #t ifile) (set! ifile target))
               (addfiles 
                 (if (memq 'static link) 
                     (list (conc dest "/" target objext)
-                          (conc dest "/" target ".link"))
+                          (conc dest "/" target +link-file-extension+))
                     '())
                 (if (memq 'dynamic link) (list (conc dest "/" target ".so")) '())
                 (if tfile 
@@ -172,7 +173,9 @@
                       (files '()))
             (for-each compile-data/include (cddr info))
             (let* ((dest (or dest 
-                             (if (eq? mode 'target) default-sharedir host-sharedir)))
+                             (if (eq? mode 'target)
+                                 default-sharedir    ; XXX wrong!
+                                 host-sharedir)))
                    (dest (normalize-pathname (conc dest "/"))))
               (addfiles (map (cut conc dest <>) files)))
             (set! data
@@ -196,7 +199,9 @@
                       (files '()))
             (for-each compile-data/include (cddr info))
             (let* ((dest (or dest 
-                             (if (eq? mode 'target) default-incdir host-incdir)))
+                             (if (eq? mode 'target) 
+                                 default-incdir   ; XXX wrong!
+                                 host-incdir)))
                    (dest (normalize-pathname (conc dest "/"))))
               (addfiles (map (cut conc dest <>) files)))
             (set! cinc
@@ -209,7 +214,9 @@
                       (files '()))
             (for-each compile-data/include (cddr info))
             (let* ((dest (or dest
-                             (if (eq? mode 'target) default-sharedir host-sharedir)))
+                             (if (eq? mode 'target) 
+                                 default-sharedir   ; XXX wrong!
+                                 host-sharedir)))
                    (dest (normalize-pathname (conc dest "/"))))
               (addfiles (map (cut conc dest <>) files)))
             (set! scminc 
@@ -226,7 +233,9 @@
                       (oname #f)
                       (opts '()))
             (for-each compile-extension/program (cddr info))
-            (let ((dest (if (eq? mode 'target) default-bindir host-bindir)))
+            (let ((dest (if (eq? mode 'target) 
+                            default-bindir   ; XXX wrong!
+                            host-bindir)))
               (addfiles (list (conc dest "/" target exeext))))
             (set! prgs 
               (cons (list target dependencies: deps source: src options: opts 
@@ -387,6 +396,8 @@
     (print "\n" (slashify default-builder platform) " " out " " cmd 
            (if keep-generated-files " -k" "")
            " -setup-mode -static -I " srcdir 
+           " -emit-link-file "
+           (quotearg (target-file (conc sname +link-file-extension+) mode))
            (if (eq? mode 'host) " -host" "")
            " -D compiling-extension -c -J -unit " name
            " -D compiling-static-extension"
@@ -502,19 +513,22 @@
          (ext (object-extension platform))
          (sname (prefix srcdir name))
          (out (quotearg (target-file (conc sname ext) mode)))
-         (outlnk (quotearg (target-file (conc sname ".link") mode)))
+         (outlnk (quotearg (target-file (conc sname +link-file-extension+)
+                                        mode)))
          (dest (destination-repository mode))
          (dfile (quotearg dest))
          (ddir (shell-variable "DESTDIR" platform)))
     (print "\n" mkdir " " ddir dfile)
-    (print cmd " " out " " ddir (quotearg (slashify (conc dest "/" 
-                                                          output-file
-                                                          ext) 
-                                                    platform)))
-    (print cmd " " outlnk " " ddir (quotearg (slashify (conc dest "/" 
-                                                             output-file
-                                                             ".link") 
-                                                       platform)))))
+    (print cmd " " out " " ddir
+           (quotearg (slashify (conc dest "/" 
+                                     output-file
+                                     ext) 
+                               platform)))
+    (print cmd " " outlnk " " ddir
+           (quotearg (slashify (conc dest "/" 
+                                     output-file
+                                     +link-file-extension+)
+                               platform)))))
 
 (define ((install-dynamic-extension name #!key mode (ext ".so")
                                     output-file)
diff --git a/egg-environment.scm b/egg-environment.scm
index c6e0cc83..ca7e2015 100644
--- a/egg-environment.scm
+++ b/egg-environment.scm
@@ -50,6 +50,7 @@ EOF
 (define default-ldflags (foreign-value "C_TARGET_LDFLAGS" c-string))
 (define default-libs (foreign-value "C_TARGET_MORE_LIBS" c-string))
 (define default-libdir (foreign-value "C_TARGET_LIB_HOME" c-string))
+(define default-runlibdir (foreign-value "C_TARGET_RUN_LIB_HOME" c-string))
 (define default-slibdir (foreign-value "C_TARGET_STATIC_LIB_HOME" c-string))
 (define default-incdir (foreign-value "C_TARGET_INCLUDE_HOME" c-string))
 (define default-bindir (foreign-value "C_TARGET_BIN_HOME" c-string))
@@ -87,10 +88,13 @@ EOF
 (define target-repo
   (string-append default-libdir "/chicken/" (number->string binary-version)))
 
+(define target-run-repo
+  (string-append default-runlibdir "/chicken/" (number->string binary-version)))
+
 (define +egg-info-extension+ ".egg-info") 
 
-(define (destination-repository mode)
+(define (destination-repository mode #!optional run)
   (if (eq? 'target mode)
-      target-repo
+      (if run target-run-repo target-repo)
       (or (get-environment-variable "CHICKEN_INSTALL_REPOSITORY")
           host-repo)))
Trap