From 50631b8bb5814f85604af5b2f1963495ca3a302d Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Mon, 16 Aug 2021 22:22:04 -0400 Subject: [PATCH] Use a separate thread to emit the C file --- cyclone.scm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cyclone.scm b/cyclone.scm index 39898ad9..66fc086b 100644 --- a/cyclone.scm +++ b/cyclone.scm @@ -21,7 +21,8 @@ (scheme cyclone primitives) (scheme cyclone transforms) (scheme cyclone cps-optimizations) - (scheme cyclone libraries)) + (scheme cyclone libraries) + (srfi 18)) (define *fe:batch-compile* #t) ;; Batch compilation. TODO: default to false or true?? (define *optimization-level* 2) ;; Default level @@ -1125,10 +1126,13 @@ Debug options: (cdr err)) (newline) (exit 1))) - (run-compiler non-opts append-dirs prepend-dirs) - (run-external-compiler non-opts compile? append-dirs prepend-dirs - cc-prog cc-exec cc-lib cc-so - cc-opts cc-linker-opts cc-linker-extra-objects) + (let ((t (thread-start! + (make-thread (lambda () (run-compiler non-opts append-dirs prepend-dirs)))))) + (thread-join! t) + (run-external-compiler + non-opts compile? append-dirs prepend-dirs + cc-prog cc-exec cc-lib cc-so + cc-opts cc-linker-opts cc-linker-extra-objects)) ))))