build: Fix snarf dependencies.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sat, 15 Jul 2017 12:56:19 +0000 (14:56 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 26 Jul 2017 09:36:07 +0000 (11:36 +0200)
* guile/guix/make.scm (compile.gcc compile.mescc bin.mescc m1-asm):
  Accept and forward dependencies.
* make.scm (gcc-snarf-targets): Remove explicit defaults.

guile/guix/make.scm
make.scm

index f50cc86874d87ae125efcf18a73773cd3a6d4d18..69931e42ce0ed411c80312af7ec28594602f7530 100644 (file)
                                      ,@(if libc '() '("-nostdinc" "-fno-builtin"))
                                      ,@c-flags
                                      "-o" ,(target-file-name t)
-                                     ,@input-files)))
+                                     ,@(filter (cut string-suffix? ".c" <>) input-files))))
                      (format (current-error-port) "  ~a\t ~a -> ~a\n" (method-name o) (string-join input-files) (target-file-name t))
                      (unless (zero? (apply system** command))
                        (format (current-error-port) "FAILED:~s\n" command)
                               "-o" ,(target-file-name t)
                               ,@input-files)))))
           (inputs (list (store #:add-file "guile/language/c99/compiler.go")
+                        (store #:add-file "guile/language/c99/info.go")
                         (store #:add-file "guile/mes/as.go")
                         (store #:add-file "guile/mes/as-i386.go")
                         (store #:add-file "guile/mes/M1.go")))))
                        (format (current-error-port) "FAILED:~s\n" command)
                        (exit 1)))))))
 
-(define* (cpp.mescc input-file-name #:key (cc %MESCC) (defines '()) (includes '()))
+(define* (cpp.mescc input-file-name #:key (cc %MESCC) (defines '()) (includes '()) (dependencies '()))
   (let* ((c-target (target (file-name input-file-name)))
          (base-name (base-name input-file-name ".c"))
          (suffix ".E")
          (target-file-name (string-append base-name suffix)))
     (target (file-name target-file-name)
-            (inputs (list c-target))
+            (inputs (cons c-target dependencies))
             (method (CPP.mescc #:cc cc #:defines defines #:includes includes)))))
 
 (define mini-libc-mes.E (cpp.mescc "mlibc/mini-libc-mes.c"))
 (define libc-mes.E (cpp.mescc "mlibc/libc-mes.c"))
 
-(define* (compile.gcc input-file-name #:key (libc #t) (cc (if libc %CC %CC32)) (defines '()) (includes '()))
+(define* (compile.gcc input-file-name #:key (libc #t) (cc (if libc %CC %CC32)) (defines '()) (includes '()) (dependencies '()))
   (let* ((base-name (base-name input-file-name ".c"))
          (cross (if libc "" "mlibc-"))
          (suffix (string-append "." cross "o"))
          (target-file-name (string-append base-name suffix))
          (c-target (target (file-name input-file-name))))
     (target (file-name target-file-name)
-            (inputs (list c-target))
+            (inputs (cons c-target dependencies))
             (method (CC.gcc #:cc cc #:libc libc #:defines defines #:includes includes)))))
 
-(define* (compile.mescc input-file-name #:key (cc %CC) (libc libc-mes.E) (defines '()) (includes '()))
+(define* (compile.mescc input-file-name #:key (cc %CC) (libc libc-mes.E) (defines '()) (includes '()) (dependencies '()))
   (let* ((base-name (base-name input-file-name ".c"))
          ;;(foo (format (current-error-port) "COMPILE[~s .c] base=~s\n" input-file-name base-name))
          (suffix (cond ((not libc) ".0-M1")
                        ((eq? libc libc-mes.E) ".M1")
                        (else ".mini-M1")))
          (target-file-name (string-append base-name suffix))
-         (E-target (cpp.mescc input-file-name #:cc cc #:defines defines #:includes includes)))
+         (E-target (cpp.mescc input-file-name #:cc cc #:defines defines #:includes includes #:dependencies dependencies)))
     (target (file-name target-file-name)
             (inputs `(,@(if libc (list libc) '()) ,E-target))
             (method (CC.mescc #:cc cc)))))
 
-(define* (m1-asm input-file-name #:key (cc %MESCC) (m1 %M1) (libc libc-mes.E) (defines '()) (includes '()))
+(define* (m1-asm input-file-name #:key (cc %MESCC) (m1 %M1) (libc libc-mes.E) (defines '()) (includes '()) (dependencies '()))
   (let* ((base-name (base-name input-file-name ".c"))
          ;;(foo (format (current-error-port) "m1-asm[~s .m1] base=~s\n" input-file-name base-name))
          (suffix (cond ((not libc) ".0-hex2")
                        ((eq? libc libc-mes.E) ".hex2")
                        (else ".mini-hex2")))
          (target-file-name (string-append base-name suffix))
-         (m1-target (compile.mescc input-file-name #:cc cc #:libc libc #:defines defines #:includes includes))
+         (m1-target (compile.mescc input-file-name #:cc cc #:libc libc #:defines defines #:includes includes #:dependencies dependencies))
          (libc.m1 (cond ((eq? libc libc-mes.E)
                          (compile.mescc "mlibc/libc-mes.c" #:libc #f #:defines defines #:includes includes))
                         ((eq? libc mini-libc-mes.E)
                        ((eq? libc libc-mes.E) ".guile")
                        (else ".mini-guile")))
          (target-file-name (string-append base-name suffix))
-         (hex2-target (m1-asm input-file-name #:m1 m1 #:cc cc #:libc libc #:defines defines #:includes includes)))
+         (hex2-target (m1-asm input-file-name #:m1 m1 #:cc cc #:libc libc #:defines defines #:includes includes #:dependencies dependencies)))
     (target (file-name target-file-name)
-            (inputs (cons hex2-target dependencies))
+            (inputs (list hex2-target))
             (method (LINK.hex2 #:hex2 hex2 #:debug? (eq? libc libc-mes.E))))))
 
 (define* (bin.gcc input-file-name #:key (libc #t) (cc (if libc %CC %CC32)) (dependencies '()) (defines '()) (includes '()))
   (let* ((base-name (base-name input-file-name ".c"))
          (suffix (if libc ".gcc" ".mlibc-gcc"))
          (target-file-name (string-append base-name suffix))
-         (o-target (compile.gcc input-file-name #:cc cc #:libc libc #:defines defines #:includes includes)))
+         (o-target (compile.gcc input-file-name #:cc cc #:libc libc #:defines defines #:includes includes #:dependencies dependencies)))
     (target (file-name target-file-name)
             (inputs (list o-target))
             (method (LINK.gcc #:cc cc #:libc libc)))))
index 05362a57539377accc0fb5b809d620f9e67df54b..3eb642a8ce5a474dacbb2659cc060fdf6b23a5f0 100755 (executable)
--- a/make.scm
+++ b/make.scm
 
 (define mes-snarf-targets
   (list
-   (add-target (snarf "src/gc.c" #:mes? #t))
+   (add-target (snarf "src/gc.c"))
    (add-target (snarf "src/lib.c" #:mes? #t))
    (add-target (snarf "src/math.c" #:mes? #t))
    (add-target (snarf "src/mes.c" #:mes? #t))