diff options
| author | Frédéric Desbiens <[email protected]> | 2026-03-04 08:36:53 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-03-04 08:36:53 +0100 |
| commit | 385d39f421f61f9857ff1d31479a4a5547452437 (patch) | |
| tree | a58a778362cd46eb51fdf1d587abe48663ee41ef /cmake | |
| parent | b3e8a9aa2074c553e39605271e6267c1a29ccd9a (diff) | |
| parent | 49439bfa9c67fee51852a0e55df3a96aad785a8f (diff) | |
Merge pull request #502 from quintauris-tech/riscv32-clang-portv6.5.0.202601_pre
Added a RV32 Clang port
Diffstat (limited to 'cmake')
| -rw-r--r-- | cmake/riscv32-clang-unknown-elf.cmake | 29 | ||||
| -rw-r--r-- | cmake/riscv32_clang.cmake | 18 |
2 files changed, 47 insertions, 0 deletions
diff --git a/cmake/riscv32-clang-unknown-elf.cmake b/cmake/riscv32-clang-unknown-elf.cmake new file mode 100644 index 00000000..eb520962 --- /dev/null +++ b/cmake/riscv32-clang-unknown-elf.cmake @@ -0,0 +1,29 @@ +# Toolchain settings +set(CMAKE_C_COMPILER clang-18) +set(CMAKE_CXX_COMPILER clang++-18) +#set(AS llvm-as) +#set(AR llvm-ar) +#set(OBJCOPY llvm-objcopy) +#set(OBJDUMP llvm-objdump-18) +#set(SIZE llvm-size) + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + +# this makes the test compiles use static library option so that we don't need to pre-set linker flags and scripts +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) + +set(CMAKE_C_FLAGS "${CFLAGS}" CACHE INTERNAL "c compiler flags") +set(CMAKE_CXX_FLAGS "${CXXFLAGS}" CACHE INTERNAL "cxx compiler flags") +set(CMAKE_ASM_FLAGS "${ASFLAGS} -D__ASSEMBLER__" CACHE INTERNAL "asm compiler flags") +set(CMAKE_EXE_LINKER_FLAGS "${LDFLAGS}" CACHE INTERNAL "exe link flags") + +SET(CMAKE_C_FLAGS_DEBUG "--target=riscv32 -march=rv32im_zicsr_zicntr -mabi=ilp32 -g" CACHE INTERNAL "c debug compiler flags") +SET(CMAKE_CXX_FLAGS_DEBUG "--target=riscv32 -march=rv32im_zicsr_zicntr -mabi=ilp32 -g" CACHE INTERNAL "cxx debug compiler flags") +SET(CMAKE_ASM_FLAGS_DEBUG "--target=riscv32 -march=rv32im_zicsr_zicntr -mabi=ilp32 -g" CACHE INTERNAL "asm debug compiler flags") + +SET(CMAKE_C_FLAGS_RELEASE "--target=riscv32 -march=rv32im_zicsr_zicntr -mabi=ilp32 -O3" CACHE INTERNAL "c release compiler flags") +SET(CMAKE_CXX_FLAGS_RELEASE "--target=riscv32 -march=rv32im_zicsr_zicntr -mabi=ilp32 -O3" CACHE INTERNAL "cxx release compiler flags") +SET(CMAKE_ASM_FLAGS_RELEASE "--target=riscv32 -march=rv32im_zicsr_zicntr -mabi=ilp32" CACHE INTERNAL "asm release compiler flags") diff --git a/cmake/riscv32_clang.cmake b/cmake/riscv32_clang.cmake new file mode 100644 index 00000000..97acd832 --- /dev/null +++ b/cmake/riscv32_clang.cmake @@ -0,0 +1,18 @@ +# Name of the target +set(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_SYSTEM_PROCESSOR risc-v32) + +IF(DEFINED $ENV{GCC_INSTALL_PREFIX}) + SET(GCC_INSTALL_PREFIX "$ENV{GCC_INSTALL_PREFIX}" CACHE INTERNAL "" FORCE) +ELSE() + SET(GCC_INSTALL_PREFIX "/opt/riscv_rv32ima" CACHE INTERNAL "" FORCE) +ENDIF() + +set(THREADX_ARCH "risc-v32") +set(THREADX_TOOLCHAIN "clang") +set(ARCH_FLAGS "--sysroot=${GCC_INSTALL_PREFIX}/riscv32-unknown-elf --target=riscv32 -g -march=rv32ima_zicsr -mabi=ilp32") +set(CFLAGS "${ARCH_FLAGS}") +set(ASFLAGS "${ARCH_FLAGS}") +set(LDFLAGS "--no-dynamic-linker -m elf32lriscv -static -nostdlib") + +include(${CMAKE_CURRENT_LIST_DIR}/riscv32-clang-unknown-elf.cmake) |
