build: Support Debian build, install.
[mes.git] / module / mescc / mescc.scm
index 49ee5671efb7fe3dca0fe0bd1baa3b10a1ce71c4..b384b90e7042d32c4c72450b038acd58f842ce20 100644 (file)
          (M1 (or (getenv "M1") "M1"))
          (command `(,M1
                     "--LittleEndian"
-                    "--Architecture=1"
+                    "--Architecture" "1"
                     "-f" ,(arch-find options "x86.M1")
                     ,@(append-map (cut list "-f" <>) M1-files)
                     "-o" ,hex2-file-name)))
     (when verbose?
       (stderr "~a\n" (string-join command)))
-    (and (zero? (apply system* command))
+    (and (zero? (apply assert-system* command))
          hex2-file-name)))
 
 (define* (hex2->elf options hex2-files #:key elf-footer)
          (hex2 (or (getenv "HEX2") "hex2"))
          (command `(,hex2
                     "--LittleEndian"
-                    "--Architecture=1"
-                    "--BaseAddress=0x1000000"
+                    "--Architecture" "1"
+                    "--BaseAddress" "0x1000000"
                     "-f" ,(arch-find options "elf32-header.hex2")
                     "-f" ,(arch-find options "crt1.o")
                     ,@(append-map (cut list "-f" <>) hex2-files)
                     "-o" ,elf-file-name)))
     (when verbose?
       (stderr "~a\n" (string-join command)))
-    (and (zero? (apply system* command))
+    (and (zero? (apply assert-system* command))
          elf-file-name)))
 
 (define (M1->blood-elf options M1-files)
                       "-o" ,M1-blood-elf-footer)))
     (when verbose?
         (format (current-error-port) "~a\n" (string-join command)))
-    (and (zero? (apply system* command))
+    (and (zero? (apply assert-system* command))
          (let* ((options (acons 'compile #t options)) ; ugh
                 (options (acons 'output blood-elf-footer options)))
            (M1->hex2 options (list M1-blood-elf-footer))))))
       (if (string-null? prefix) o (string-append prefix "/" o)))
     (prefix-file file-name)))
 
+(define (assert-system* . args)
+  (let ((status (apply system* args)))
+    (when (not (zero? status))
+      (stderr "mescc: failed: ~a\n" (string-join args))
+      (exit status))
+    status))
 
 (define (multi-opt option-name) (lambda (o) (and (eq? (car o) option-name) (cdr o))))