aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt12
1 files changed, 10 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b8c26a3..09a39d9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,8 @@
cmake_minimum_required(VERSION 3.10)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+include(cmake/fiddle.cmake)
+
project (ch537)
# Configure for Bare Metal.
@@ -8,9 +10,9 @@ set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR riscv32)
set(TC_PREFIX riscv32-unknown-elf-)
-include_directories(include linker)
+include_directories(include linker ${CMAKE_BINARY_DIR}/generated/fdl)
-file(GLOB SOURCES "src/*.c")
+file(GLOB SOURCES "src/*.c" "src/*.s")
file(GLOB LINKER_SCRIPT "linker/*.ld")
file(REAL_PATH "ch-flash/" CH_FLASH_DIR)
@@ -27,6 +29,7 @@ set(CMAKE_EXE_LINKER_FLAGS "--xref -static -T ${LINKER_SCRIPT}" CACHE INTERNAL "
# Add executable with custom linking commands
add_executable(main.elf ${SOURCES})
+add_dependencies(main.elf fdl_headers)
# Replace default link command to use `ld` directly without `-Wl,` prefixes.
set_target_properties(main.elf PROPERTIES
@@ -36,6 +39,11 @@ set_target_properties(main.elf PROPERTIES
CMAKE_C_LINK_EXECUTABLE "${TC_PREFIX}ld <LINK_FLAGS> <OBJECTS> -o <TARGET> ${CMAKE_EXE_LINKER_FLAGS}"
)
+set(fdl_headers)
+file(GLOB_RECURSE fdl_files "${CMAKE_SOURCE_DIR}/fdl/*.fdl")
+fiddle_sources(fdl_headers "${fdl_files}")
+add_custom_target( fdl_headers DEPENDS ${fdl_headers})
+
# Generates the binary with objcopy.
add_custom_command(
OUTPUT main.bin