Skip to content

Commit e1a6c5b

Browse files
committed
CMakeLists: Add a RISCV_NONE toolchain
Add a RISCV_NONE toolchain to target an embedded environment. This allows building libspdm libraries with mbedtls. Signed-off-by: Alistair Francis <[email protected]>
1 parent d836331 commit e1a6c5b

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

Diff for: CMakeLists.txt

+26
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
8989
MESSAGE("TOOLCHAIN = RISCV_GNU")
9090
elseif(TOOLCHAIN STREQUAL "RISCV64_GCC")
9191
MESSAGE("TOOLCHAIN = RISCV64_GCC")
92+
elseif(TOOLCHAIN STREQUAL "RISCV_NONE")
93+
MESSAGE("TOOLCHAIN = RISCV_NONE")
9294
elseif(TOOLCHAIN STREQUAL "RISCV_XPACK")
9395
MESSAGE("TOOLCHAIN = RISCV_XPACK")
9496
elseif(TOOLCHAIN STREQUAL "ARC_GCC")
@@ -417,6 +419,30 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
417419

418420
SET(CMAKE_C_LINK_EXECUTABLE "<CMAKE_LINKER> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Wl,--start-group <LINK_LIBRARIES> -Wl,--end-group")
419421

422+
elseif(TOOLCHAIN STREQUAL "RISCV_NONE")
423+
SET(CMAKE_C_COMPILER riscv64-elf-gcc)
424+
ADD_COMPILE_OPTIONS(-nostdlib -lgcc)
425+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
426+
ADD_COMPILE_OPTIONS(-g)
427+
endif()
428+
429+
if(ARCH STREQUAL "riscv32")
430+
ADD_COMPILE_OPTIONS(-march=rv32imac_zicsr -mabi=ilp32)
431+
elseif(ARCH STREQUAL "riscv64")
432+
ADD_COMPILE_OPTIONS(-march=rv64imac_zicsr -mabi=lp64)
433+
else()
434+
ADD_COMPILE_OPTIONS(-march=error -mabi=error)
435+
endif()
436+
437+
SET(CMAKE_AR riscv64-elf-ar)
438+
439+
SET(CMAKE_LINKER riscv64-elf-gcc)
440+
SET(CMAKE_EXE_LINKER_FLAGS "-no-pie" )
441+
442+
SET(MBEDTLS_FLAGS -nostdlib -lgcc)
443+
444+
SET(CMAKE_C_LINK_EXECUTABLE "<CMAKE_LINKER> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Wl,--start-group <LINK_LIBRARIES> -Wl,--end-group")
445+
420446
elseif(TOOLCHAIN STREQUAL "RISCV_XPACK")
421447
SET(CMAKE_C_COMPILER riscv-none-elf-gcc)
422448
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")

0 commit comments

Comments
 (0)