Mercurial > core / lisp/lib/cli/tools/cc.lisp
changeset 496: |
6359b351657a |
parent: |
33b0614ee220
|
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Mon, 01 Jul 2024 15:50:23 -0400 |
permissions: |
-rw-r--r-- |
description: |
tmux controller, cli upgrades |
1 ;;; cli/tools/cc.lisp --- C Compilers 3 ;; Use C Compiler tooling from Lisp. 10 (in-package :cli/tools/cc) 12 (deferror cc-error (simple-error error) ()) 14 (defun cc-error (fmt &rest args) 15 (error 'cc-error :format-arguments args :format-control fmt)) 17 (defparameter *cc* (find-exe "clang")) 21 #+unix (find-exe "ld.lld") 22 #+darwin (find-exe "ld64.lld") 23 #+windows (find-exe "lld-link") 26 (defun run-cc (&rest args) 27 (let ((proc (sb-ext:run-program *cc* (or args nil) :output :stream))) 28 (with-open-stream (s (sb-ext:process-output proc)) 29 (loop for l = (read-line s nil nil) 32 (if (eq 0 (sb-ext:process-exit-code proc)) 34 (cc-error "CC command failed: ~A ~A" *cc* (or args ""))))) 36 (defun run-ld (&rest args) 37 (let ((proc (sb-ext:run-program *ld* (or args nil) :output :stream))) 38 (with-open-stream (s (sb-ext:process-output proc)) 39 (loop for l = (read-line s nil nil) 42 (if (eq 0 (sb-ext:process-exit-code proc)) 44 (cc-error "LD command failed: ~A ~A" *ld* (or args "")))))