diff --git a/build-llvm.sh b/build-llvm.sh index 2a1b12e..96cf0a0 100755 --- a/build-llvm.sh +++ b/build-llvm.sh @@ -3,7 +3,7 @@ set -euo pipefail INSTALL_DIR="${PWD}/llvm18.0" -mkdir -p $INSTALL_DIR +mkdir -p ${INSTALL_DIR} # Clone LLVM 18 (any revision after commit bd32aaa is supposed to work) @@ -25,7 +25,7 @@ cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On \ -DLLVM_TARGETS_TO_BUILD='RISCV' \ -DLLVM_ENABLE_ZSTD=Off \ -DCMAKE_BUILD_TYPE=MinSizeRel \ - -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \ + -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \ ../llvm ninja @@ -37,33 +37,48 @@ cd ../compiler-rt mkdir -p build cd build -CFLAGS="--target=riscv32 -march=rv32em -mabi=ilp32e -nostdlib -nodefaultlibs -mcpu=generic-rv32" -cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \ - -DCOMPILER_RT_BUILD_BUILTINS=ON \ - -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ - -DCOMPILER_RT_BUILD_MEMPROF=OFF \ - -DCOMPILER_RT_BUILD_PROFILE=OFF \ - -DCOMPILER_RT_BUILD_SANITIZERS=OFF \ - -DCOMPILER_RT_BUILD_XRAY=OFF \ - -DCMAKE_C_COMPILER=$INSTALL_DIR/bin/clang \ - -DCMAKE_C_COMPILER_TARGET="riscv32" \ - -DCMAKE_ASM_COMPILER_TARGET="riscv32" \ - -DCMAKE_AR=$INSTALL_DIR/bin/llvm-ar \ - -DCMAKE_NM=$INSTALL_DIR/bin/llvm-nm \ - -DCMAKE_RANLIB=$INSTALL_DIR/bin/llvm-ranlib \ - -DCOMPILER_RT_BAREMETAL_BUILD=ON \ - -DLLVM_CONFIG_PATH=$INSTALL_DIR/bin/llvm-config \ - -DCMAKE_C_FLAGS="$CFLAGS" \ - -DCMAKE_ASM_FLAGS="$CFLAGS" \ - -DCOMPILER_RT_TEST_COMPILER=$INSTALL_DIR/bin/clang \ - -DCMAKE_CXX_FLAGS="$CFLAGS" \ - -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ - -DCMAKE_SYSTEM_NAME=Linux \ - .. +build_compiler_rt() { + case "$1" in + 64) TARGET_ABI=lp64e ;; + 32) TARGET_ABI=ilp32e ;; + *) exit -1 + esac + CFLAGS="--target=riscv${1} -march=rv${1}em -mabi=${TARGET_ABI} -mcpu=generic-rv${1} -nostdlib -nodefaultlibs" -ninja -ninja install + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \ + -DCOMPILER_RT_BUILD_BUILTINS=ON \ + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ + -DCOMPILER_RT_BUILD_MEMPROF=OFF \ + -DCOMPILER_RT_BUILD_PROFILE=OFF \ + -DCOMPILER_RT_BUILD_SANITIZERS=OFF \ + -DCOMPILER_RT_BUILD_XRAY=OFF \ + -DCMAKE_C_COMPILER=${INSTALL_DIR}/bin/clang \ + -DCMAKE_C_COMPILER_TARGET=riscv${1} \ + -DCMAKE_ASM_COMPILER_TARGET=riscv${1} \ + -DCMAKE_CXX_COMPILER_TARGET=riscv${1} \ + -DCMAKE_C_TARGET_BITS=riscv${1} \ + -DCMAKE_ASM_TARGET_BITS=riscv${1} \ + -DCMAKE_AR=${INSTALL_DIR}/bin/llvm-ar \ + -DCMAKE_NM=${INSTALL_DIR}/bin/llvm-nm \ + -DCMAKE_RANLIB=${INSTALL_DIR}/bin/llvm-ranlib \ + -DCOMPILER_RT_BAREMETAL_BUILD=ON \ + -DLLVM_CONFIG_PATH=${INSTALL_DIR}/bin/llvm-config \ + -DCMAKE_C_FLAGS="${CFLAGS}" \ + -DCMAKE_ASM_FLAGS="${CFLAGS}" \ + -DCOMPILER_RT_TEST_COMPILER=${INSTALL_DIR}/bin/clang \ + -DCMAKE_CXX_FLAGS="${CFLAGS}" \ + -DCMAKE_SYSTEM_NAME=unknown \ + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ + .. + + ninja + ninja install +} +build_compiler_rt 32 +build_compiler_rt 64 echo "" echo "success" diff --git a/crates/llvm-context/src/polkavm/const/mod.rs b/crates/llvm-context/src/polkavm/const/mod.rs index 1351ab6..9cc454f 100644 --- a/crates/llvm-context/src/polkavm/const/mod.rs +++ b/crates/llvm-context/src/polkavm/const/mod.rs @@ -10,10 +10,7 @@ pub const LLVM_VERSION: semver::Version = semver::Version::new(18, 1, 4); pub const ZKEVM_VERSION: semver::Version = semver::Version::new(1, 3, 2); /// The register width sized type -#[cfg(not(feature = "riscv-64"))] pub static XLEN: usize = revive_common::BIT_LENGTH_X32; -#[cfg(feature = "riscv-64")] -pub static XLEN: usize = revive_common::BIT_LENGTH_X64; /// The heap memory pointer pointer global variable name. pub static GLOBAL_HEAP_MEMORY_POINTER: &str = "memory_pointer";