changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/lib/cli/tools/cc.lisp

changeset 698: 96958d3eb5b0
parent: 6359b351657a
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
393
6b87df03cdaf init cli/tools/cc.lisp for grovel experiments, add zstd tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
1
 ;;; cli/tools/cc.lisp --- C Compilers
6b87df03cdaf init cli/tools/cc.lisp for grovel experiments, add zstd tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
2
 
6b87df03cdaf init cli/tools/cc.lisp for grovel experiments, add zstd tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
3
 ;; Use C Compiler tooling from Lisp.
6b87df03cdaf init cli/tools/cc.lisp for grovel experiments, add zstd tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
4
 
6b87df03cdaf init cli/tools/cc.lisp for grovel experiments, add zstd tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
5
 ;;; Commentary:
6b87df03cdaf init cli/tools/cc.lisp for grovel experiments, add zstd tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
6
 
6b87df03cdaf init cli/tools/cc.lisp for grovel experiments, add zstd tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
7
 ;; 
6b87df03cdaf init cli/tools/cc.lisp for grovel experiments, add zstd tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
8
 
6b87df03cdaf init cli/tools/cc.lisp for grovel experiments, add zstd tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
 ;;; Code:
471
33b0614ee220 cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents: 393
diff changeset
10
 (in-package :cli/tools/cc)
33b0614ee220 cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents: 393
diff changeset
11
 
496
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
12
 (deferror cc-error (simple-error error) ())
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
13
 
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
14
 (defun cc-error (fmt &rest args)
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
15
   (error 'cc-error :format-arguments args :format-control fmt))
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
16
 
471
33b0614ee220 cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents: 393
diff changeset
17
 (defparameter *cc* (find-exe "clang"))
33b0614ee220 cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents: 393
diff changeset
18
 
496
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
19
 (defparameter *ld*
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
20
   (or
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
21
    #+unix (find-exe "ld.lld")
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
22
    #+darwin (find-exe "ld64.lld")
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
23
    #+windows (find-exe "lld-link")
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
24
    (find-exe "ld")))
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
25
 
471
33b0614ee220 cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents: 393
diff changeset
26
 (defun run-cc (&rest args)
496
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
27
   (let ((proc (sb-ext:run-program *cc* (or args nil) :output :stream)))
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
28
     (with-open-stream (s (sb-ext:process-output proc))
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
29
       (loop for l = (read-line s nil nil)
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
30
             while l
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
31
             do (write-line l)))
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
32
     (if (eq 0 (sb-ext:process-exit-code proc))
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
33
         nil
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
34
         (cc-error "CC command failed: ~A ~A" *cc* (or args "")))))
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
35
 
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
36
 (defun run-ld (&rest args)
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
37
   (let ((proc (sb-ext:run-program *ld* (or args nil) :output :stream)))
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
38
     (with-open-stream (s (sb-ext:process-output proc))
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
39
       (loop for l = (read-line s nil nil)
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
40
             while l
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
41
             do (write-line l)))
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
42
     (if (eq 0 (sb-ext:process-exit-code proc))
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
43
         nil
6359b351657a tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
44
         (cc-error "LD command failed: ~A ~A" *ld* (or args "")))))