diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..ee1147f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,58 @@ +cmake_minimum_required(VERSION 3.10) +project (ch537) + +set (CMAKE_SYSTEM_NAME Generic) # Configure for Bare Metal. +set (CMAKE_SYSTEM_PROCESSOR riscv32) + +set (TC_PREFIX riscv32-unknown-elf-) +# set (CMAKE_VERBOSE_MAKEFILE ON) + +include_directories(include linker) + +file (GLOB SOURCES "src/*.c") +file (GLOB LINKER_SCRIPT "linker/*.ld") + +file (REAL_PATH "ch-flash/" CH_FLASH_DIR) + +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +set(CMAKE_C_FLAGS "-march=rv32imac -mabi=ilp32 -lgcc -static -nostartfiles -O -std=gnu99" CACHE INTERNAL "C Compiler options") +set(CMAKE_EXE_LINKER_FLAGS "--cref -static -T ${LINKER_SCRIPT}" CACHE INTERNAL "Linker options") + +set (CMAKE_C_COMPILER ${TC_PREFIX}gcc CACHE INTERNAL "C Compiler") +set (CMAKE_OBJCOPY ${TC_PREFIX}objcopy CACHE INTERNAL "Object Copier") +set (CMAKE_EXE_LINKER_FLAGS_RELEASE "" CACHE INTERNAL "Linker options for release build type") + +set (CMAKE_C_LINK_EXECUTABLE "${TC_PREFIX}ld <LINK_FLAGS> <OBJECTS> -o <TARGET>") +add_executable(main.elf ${SOURCES}) +set_target_properties(main.elf PROPERTIES + LINK_FLAGS "--nostdlib -e 0") + +# Generates the binary with objcopy. +add_custom_command( + OUTPUT main.bin + DEPENDS main.elf + COMMENT "objcopy -O binary main.elf main.bin" + COMMAND ${CMAKE_OBJCOPY} ARGS -O binary main.elf main.bin +) +add_custom_command( + OUTPUT objdump.txt + DEPENDS main.elf + COMMAND ${TC_PREFIX}objdump -D main.elf > objdump.txt +) +add_custom_target(main_bin ALL DEPENDS main.bin objdump.txt) + +# generates the flash binary +add_custom_command( + OUTPUT ${CH_FLASH_DIR}/ch-flash + COMMAND cd ${CH_FLASH_DIR} && make +) + +add_custom_target( + flash + DEPENDS main.bin ch-flash/ch-flash + COMMAND ${CH_FLASH_DIR}/ch-flash -f main.bin +) + +# add_custom_target( +# debug +# COMMAND "${TC_PREFIX}gdb" -tui -ex "tar ext :3333" -ex "file main.elf") |