diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 0c3b9f3..520d469 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -16,15 +16,29 @@ jobs: steps: - uses: actions/checkout@v4 + + - name: Install solc + run: | + mkdir -p solc + curl -sSL --output solc/solc https://github.com/ethereum/solidity/releases/download/v0.8.25/solc-static-linux + chmod +x solc/solc + echo "$(pwd)/solc/" >> $GITHUB_PATH + - name: Install LLVM - run: curl -sSL --output llvm.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.4/clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz - - name: Extract LLVM - run: tar Jxf llvm.tar.xz - - name: Add LLVM to Path - run: echo "$(pwd)/clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04/bin" >> $GITHUB_PATH + run: | + curl -sSL --output llvm.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.4/clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz + tar Jxf llvm.tar.xz + mv clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04 llvm18/ + echo "$(pwd)/llvm18/bin" >> $GITHUB_PATH + + - name: Install apt dependencies + run: sudo apt update && sudo apt install -y libtinfo5 + - name: Format run: make format + - name: Clippy run: make clippy + - name: Integration run: make test-integration diff --git a/README.md b/README.md index d287ed3..65e3448 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +![CI](https://github.com/xermicus/revive/actions/workflows/rust.yml/badge.svg) + # revive YUL and EVM bytecode recompiler to LLVM, targetting RISC-V on PolkaVM. diff --git a/crates/builtins/build.rs b/crates/builtins/build.rs index e16d4eb..dabea2e 100644 --- a/crates/builtins/build.rs +++ b/crates/builtins/build.rs @@ -13,9 +13,12 @@ fn main() { .read_to_string(&mut llvm_lib_dir) .expect("llvm-config output should be utf8"); - let lib_path = std::path::PathBuf::from(llvm_lib_dir.trim()) + let mut lib_path = std::path::PathBuf::from(llvm_lib_dir.trim()) .join("linux") .join(lib); + if !lib_path.exists() { + lib_path = std::path::PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap()).join(lib); + } let archive = fs::read(lib_path).expect("clang builtins for riscv32 not found"); let out_dir = env::var_os("OUT_DIR").expect("has OUT_DIR"); diff --git a/crates/builtins/libclang_rt.builtins-riscv32.a b/crates/builtins/libclang_rt.builtins-riscv32.a new file mode 100644 index 0000000..e9ee15d Binary files /dev/null and b/crates/builtins/libclang_rt.builtins-riscv32.a differ