,@(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)))))