| 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) |