blob: 9c8b93bc96c3073c5da8441af0aadb5a86465f92 [file] [log] [blame]
set(SHODAN_TOOLCHAIN_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cache/toolchain_vp/bin CACHE STRING "Shodan toolchain path")
message (STATUS "Shodan toolchain path is ${SHODAN_TOOLCHAIN_PATH}")
find_file( RISCV_GCC_COMPILER "riscv32-unknown-elf-gcc" HINTS ${SHODAN_TOOLCHAIN_PATH} PATHS ENV INCLUDE)
# Check compiler found
if (EXISTS ${RISCV_GCC_COMPILER})
message(STATUS "RISC-V GCC found. Using ${RISCV_GCC_COMPILER}")
else()
message(FATAL_ERROR "RISC-V GCC not found. ${RISCV_GCC_COMPILER}")
endif()
get_filename_component(RISCV_TOOLCHAIN_BIN_PATH ${RISCV_GCC_COMPILER} DIRECTORY)
get_filename_component(RISCV_TOOLCHAIN_BIN_GCC ${RISCV_GCC_COMPILER} NAME_WE)
get_filename_component(RISCV_TOOLCHAIN_BIN_EXT ${RISCV_GCC_COMPILER} EXT)
message( "RISC-V GCC Path: ${RISCV_TOOLCHAIN_BIN_PATH}" )
STRING(REGEX REPLACE "\-gcc" "-" CROSS_COMPILE ${RISCV_GCC_COMPILER})
message( "RISC-V Cross Compile Prefix: ${CROSS_COMPILE}" )
set( CMAKE_SYSTEM_NAME Generic )
set( CMAKE_SYSTEM_PROCESSOR rv32imv )
set( CMAKE_SYSTEM_ABI ilp32 )
set( CMAKE_EXECUTABLE_SUFFIX ".elf")
set(CMAKE_AR ${CROSS_COMPILE}ar)
set(CMAKE_ASM_COMPILER ${RISCV_GCC_COMPILER})
set(CMAKE_C_COMPILER ${RISCV_GCC_COMPILER})
set(CMAKE_CXX_COMPILER ${CROSS_COMPILE}g++)
set( CMAKE_OBJCOPY ${RISCV_TOOLCHAIN_BIN_PATH}/${CROSS_COMPILE}objcopy
CACHE FILEPATH "The toolchain objcopy command " FORCE )
set( CMAKE_OBJDUMP ${RISCV_TOOLCHAIN_BIN_PATH}/${CROSS_COMPILE}objdump
CACHE FILEPATH "The toolchain objdump command " FORCE )
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=${CMAKE_SYSTEM_PROCESSOR} -mabi=${CMAKE_SYSTEM_ABI}")
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "" )
set( CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "" )
set( CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "" )
set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -nostartfiles " )
set( VEC_DEFAULT_COPTS
"-Wall"
"-Werror"
"-O0"
"-g3"
"-ggdb"
"-ffreestanding"
"-ffunction-sections"
"-fstack-usage"
"-mstrict-align"
)
set( VEC_DEFAULT_LINKOPTS -specs=nano.specs -Wl,--gc-sections -Wl,--print-memory-usage -Wl,-Map=${PROJECT_NAME}.map)