cmake/toolchain/ClangRiscV32.cmake (31 lines of code) (raw):
# ++
#
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT license.
#
# Module Name:
#
# ClangRiscV32.cmake
#
# Abstract:
#
# Clang RISC-V 32-bit Toolchain file
#
# --
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_SYSTEM_PROCESSOR riscv32)
set(CERBERUS_MCU_FLAGS --target=riscv32) # target riscv32 architecture
set(CERBERUS_MCU_FLAGS ${CERBERUS_MCU_FLAGS} -march=rv32imac) # arch = rv32imac - 32 bit ISA with integer, machine, atomic and compressed
set(CERBERUS_MCU_FLAGS ${CERBERUS_MCU_FLAGS} -mabi=ilp32) # abi = ilp32 - int, long & pointers are 32bit, char=8bit, short=16bit, long long = 64bit
set(CERBERUS_MCU_FLAGS ${CERBERUS_MCU_FLAGS} -mno-relax) # no riscv relax support https://reviews.llvm.org/D77694
#set(CERBERUS_MCU_FLAGS ${CERBERUS_MCU_FLAGS} -fuse-ld=lld) # not supported on current version bug: https://reviews.llvm.org/D74704
set(CERBERUS_MCU_LINK_FLAGS -m elf32lriscv)
add_compile_definitions(PLATFORM_RISCV)
add_compile_definitions(LITTLEENDIAN_CPU)
include(${CMAKE_CURRENT_LIST_DIR}/Clang.cmake)
#
# Add target system root to cmake find path.
#
get_filename_component(RISCV_COMPILER_DIR "${CMAKE_C_COMPILER}" DIRECTORY)
get_filename_component(CMAKE_FIND_ROOT_PATH "${RISCV_COMPILER_DIR}" DIRECTORY)