[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/beardbolt 1916179672 166/323: Add support for Zig
From: |
ELPA Syncer |
Subject: |
[elpa] externals/beardbolt 1916179672 166/323: Add support for Zig |
Date: |
Thu, 9 Mar 2023 10:58:27 -0500 (EST) |
branch: externals/beardbolt
commit 19161796720b3cff3b1e7f3424d39cec2c37e3ef
Author: Liam Powell <liam@liampwll.com>
Commit: Liam Powell <liam@liampwll.com>
Add support for Zig
---
doc/rmsbolt.org | 4 ++++
rmsbolt.el | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
starters/rmsbolt.zig | 24 ++++++++++++++++++++++++
3 files changed, 77 insertions(+)
diff --git a/doc/rmsbolt.org b/doc/rmsbolt.org
index a386378e99..e604d53814 100644
--- a/doc/rmsbolt.org
+++ b/doc/rmsbolt.org
@@ -170,6 +170,10 @@ Emacs 26 or the ~cl-print~ package are required.
No support for source->asm matching or filtering. Only ~sbcl~ and ~clisp~
supported at the moment, with ~sbcl~ giving much better results.
+** Zig
+
+Assembly is generated through the ~zig~ compiler.
+
* Integrations
This section covers integrations that RMSbolt provides, which make it easier to
use RMSbolt with complex projects with many dependencies.
diff --git a/rmsbolt.el b/rmsbolt.el
index 404cc9ff7f..796917815f 100644
--- a/rmsbolt.el
+++ b/rmsbolt.el
@@ -617,6 +617,42 @@ https://github.com/derickr/vld"
(rmsbolt--disassemble-file file-name (current-buffer))
(rmsbolt--handle-finish-compile src-buffer nil :override-buffer
(current-buffer)))))
+(cl-defun rmsbolt--zig-compile-cmd (&key src-buffer)
+ "Process a compile command for zig."
+ (rmsbolt--with-files
+ src-buffer
+ (let* ((asm-format (buffer-local-value 'rmsbolt-asm-format src-buffer))
+ (predicted-asm-filename (shell-quote-argument
+ (concat (file-name-directory
output-filename)
+ (file-name-as-directory "zig-cache")
+ (file-name-sans-extension
(file-name-nondirectory (buffer-file-name)))
+ ".s")))
+ (disass (buffer-local-value 'rmsbolt-disassemble src-buffer))
+ (cmd (buffer-local-value 'rmsbolt-command src-buffer))
+ (cmd (mapconcat #'identity
+ (list cmd
+ "build-exe"
+ src-filename
+ "--emit"
+ (if disass
+ "bin"
+ "asm")
+ (when (and (not (booleanp asm-format))
+ (not disass))
+ (concat "-mllvm --x86-asm-syntax="
asm-format))
+ (mapconcat #'identity
+ (cond
+ (disass
+ (list "--output" output-filename))
+ ((equal predicted-asm-filename
output-filename)
+ nil)
+ (t
+ (list "&&" "mv"
+ predicted-asm-filename
+ output-filename)))
+ " "))
+ " ")))
+ cmd)))
;;;;; Hidden Function Definitions
@@ -644,6 +680,13 @@ https://github.com/derickr/vld"
;; filter out any lowercase
(and (1+ (1+ lower) (opt (or "64" "32" "8" "16")) (opt "_"))))
eol))
+(defvar rmsbolt--hidden-func-zig
+ (rx bol (or (and "_" (0+ any))
+ (and (opt "de") "register_tm_clones")
+ "call_gmon_start"
+ "frame_dummy"
+ (and (0+ any) "@plt" (0+ any)))
+ eol))
;;;;; Language Integrations
(defun rmsbolt--parse-compile-commands (comp-cmds file)
@@ -769,6 +812,12 @@ return t if successful."
:process-asm-custom-fn (lambda (_src-buffer lines)
lines)
:elisp-compile-override
#'rmsbolt--elisp-compile-override))
+ (zig-mode
+ . ,(make-rmsbolt-lang :compile-cmd "zig"
+ :supports-asm t
+ :supports-disass t
+ :objdumper 'objdump
+ :compile-cmd-function #'rmsbolt--zig-compile-cmd))
))
(make-obsolete-variable 'rmsbolt-languages
'rmsbolt-language-descriptor "RMSBolt-0.2")
diff --git a/starters/rmsbolt.zig b/starters/rmsbolt.zig
new file mode 100644
index 0000000000..1cfa66bd54
--- /dev/null
+++ b/starters/rmsbolt.zig
@@ -0,0 +1,24 @@
+const std = @import("std");
+
+// Zig rmsbolt starter file
+
+// Local Variables:
+// rmsbolt-command: "zig"
+// rmsbolt-disassemble: nil
+// End:
+
+fn isRMS(a: u8) u8 {
+ switch (a) {
+ 'R' => {return 1;},
+ 'M' => {return 2;},
+ 'S' => {return 3;},
+ else => {return 0;},
+ }
+}
+
+pub fn main() void {
+ const a: u8 = 1 + 1;
+ if (isRMS(a) != 0) {
+ std.debug.warn("{c}\n", a);
+ }
+}
- [elpa] externals/beardbolt f89875215b 128/323: Fix byte-compilation warnings, (continued)
- [elpa] externals/beardbolt f89875215b 128/323: Fix byte-compilation warnings, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt cb0b781e82 143/323: Add rudimentary support for hack/hhvm, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 4f86bae37e 144/323: Add rmsbolt-asm-format for toggling between asm formats., ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 20fa6a76e0 150/323: Clear out unset or nil variables after setting them via defaults, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt fc712fe954 147/323: Fix typo in readme, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 56f8fd2037 148/323: Add additional salespitch, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 0c19afca2d 157/323: Simplify d support, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt f7aab87454 162/323: Fix README link, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 097abb56de 154/323: Fix tests, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 9fb117d6c9 159/323: Add docs for D language, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 1916179672 166/323: Add support for Zig,
ELPA Syncer <=
- [elpa] externals/beardbolt 8cf49aeac6 167/323: Add zig starter, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 2a83b76cd9 172/323: Prevent overriding windows when no output window available, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 820211abd4 169/323: Update supported languages list, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt b47b9b4d74 175/323: Add support for Go, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt a717d49879 198/323: Clear out default variables after post processing is finished, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt a06c8d9fc6 210/323: Add command `rmsbolt`, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 54bdd5090e 209/323: Add rustic-mode to default rust definitions, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 7c735240b0 192/323: Clean up buffer overlays explicitly on output buffer kill, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 1267509ab4 220/323: Move `rmsbolt-with-display-buffer-no-window`, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 8544df3e9d 222/323: Use `rmsbolt--cleanup-overlays`, ELPA Syncer, 2023/03/09