add piston nix pkg for llvm_ir

This commit is contained in:
Dan Vargas 2022-03-21 08:59:03 -06:00
parent 560b4ac1ee
commit daeed0ce5e
8 changed files with 48 additions and 31 deletions

View File

@ -1,6 +0,0 @@
#!/usr/bin/env bash
curl -L "https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.1/clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz" -o llvm-ir.tar.xz
tar xf llvm-ir.tar.xz clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-/bin --strip-components=1
rm llvm-ir.tar.xz

View File

@ -1,4 +0,0 @@
#!/usr/bin/env bash
llc "$@" -o binary.s
clang binary.s -o binary

View File

@ -1,2 +0,0 @@
#!/usr/bin/env bash
export PATH=$PWD/bin:$PATH

View File

@ -1,5 +0,0 @@
{
"language": "llvm_ir",
"version": "12.0.1",
"aliases": ["llvm", "llvm-ir", "ll"]
}

View File

@ -1,4 +0,0 @@
#!/usr/bin/env bash
shift
binary "$@"

View File

@ -1,10 +0,0 @@
@.str = private unnamed_addr constant [2 x i8] c"OK"
declare i32 @puts(i8* nocapture) nounwind
define i32 @main() {
%cast210 = getelementptr [2 x i8],[2 x i8]* @.str, i64 0, i64 0
call i32 @puts(i8* %cast210)
ret i32 0
}

View File

@ -61,4 +61,5 @@ args: {
"brainfuck" = import ./brainfuck.nix args; "brainfuck" = import ./brainfuck.nix args;
"node-coffeescript" = import ./node-coffeescript.nix args; "node-coffeescript" = import ./node-coffeescript.nix args;
"jvm-scala" = import ./jvm-scala.nix args; "jvm-scala" = import ./jvm-scala.nix args;
"llvm_ir" = import ./llvm_ir.nix args;
} }

47
runtimes/llvm_ir.nix Normal file
View File

@ -0,0 +1,47 @@
{pkgs, piston, ...}:
let
pkg = pkgs.llvm;
clang = pkgs.llvmPackages_13.libcxxClang;
in piston.mkRuntime {
language = "llvm_ir";
version = clang.version;
aliases = [
"llvm"
"llvm-ir"
"ll"
];
compile = ''
${pkg}/bin/llc "$@" -o binary.s
${clang}/bin/clang binary.s -o binary
'';
run = ''
shift
./binary "$@"
'';
tests = [
(piston.mkTest {
files = {
"test.ll" = ''
@.str = private unnamed_addr constant [2 x i8] c"OK"
declare i32 @puts(i8* nocapture) nounwind
define i32 @main() {
%cast210 = getelementptr [2 x i8],[2 x i8]* @.str, i64 0, i64 0
call i32 @puts(i8* %cast210)
ret i32 0
}
'';
};
args = [];
stdin = "";
packages = [];
main = "test.ll";
})
];
}