1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-13 11:29:56 +03:00

[BUILD] Add support for svd generation with cmake

Used for IDE-based debugging
This commit is contained in:
Alberto García Hierro 2020-07-13 21:29:15 +01:00
parent d6177e6933
commit 93723d0ad0
6 changed files with 25 additions and 5 deletions

View file

@ -41,6 +41,7 @@ set(MAIN_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(MAIN_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib") set(MAIN_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib")
set(MAIN_UTILS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/utils") set(MAIN_UTILS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/utils")
set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/main") set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/main")
set(SVD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/dev/svd")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
@ -48,6 +49,7 @@ set(FIRMWARE_VERSION ${PROJECT_VERSION})
include(settings) include(settings)
include(openocd) include(openocd)
include(svd)
include(main) include(main)
include(stm32) include(stm32)

View file

@ -54,6 +54,7 @@ function(setup_firmware_target name)
get_property(targets GLOBAL PROPERTY VALID_TARGETS) get_property(targets GLOBAL PROPERTY VALID_TARGETS)
set_property(GLOBAL PROPERTY VALID_TARGETS "${targets} ${name}") set_property(GLOBAL PROPERTY VALID_TARGETS "${targets} ${name}")
setup_openocd(${name}) setup_openocd(${name})
setup_svd(${name})
endfunction() endfunction()
function(exclude_from_all target) function(exclude_from_all target)

View file

@ -158,7 +158,7 @@ function(target_stm32 name startup ldscript)
cmake_parse_arguments( cmake_parse_arguments(
PARSED_ARGS PARSED_ARGS
"DISABLE_MSC" # Boolean arguments "DISABLE_MSC" # Boolean arguments
"HSE_MHZ;OPENOCD_TARGET" # Single value arguments "HSE_MHZ;OPENOCD_TARGET;SVD" # Single value arguments
"DEFINITIONS" # Multi-value arguments "DEFINITIONS" # Multi-value arguments
${ARGN} # Start parsing after the known arguments ${ARGN} # Start parsing after the known arguments
) )
@ -213,6 +213,7 @@ function(target_stm32 name startup ldscript)
endif() endif()
set_property(TARGET ${name} PROPERTY OPENOCD_TARGET ${PARSED_ARGS_OPENOCD_TARGET}) set_property(TARGET ${name} PROPERTY OPENOCD_TARGET ${PARSED_ARGS_OPENOCD_TARGET})
set_property(TARGET ${name} PROPERTY OPENOCD_DEFAULT_INTERFACE stlink) set_property(TARGET ${name} PROPERTY OPENOCD_DEFAULT_INTERFACE stlink)
set_property(TARGET ${name} PROPERTY SVD ${PARSED_ARGS_SVD})
# Generate .hex # Generate .hex
# XXX: Generator expressions are not supported for add_custom_command() # XXX: Generator expressions are not supported for add_custom_command()
# OUTPUT nor BYPRODUCTS, so we can't rely of them. Instead, build the filename # OUTPUT nor BYPRODUCTS, so we can't rely of them. Instead, build the filename

View file

@ -80,7 +80,7 @@ function(target_stm32f3xx name startup ldscript)
endfunction() endfunction()
function(target_stm32f303 name) function(target_stm32f303 name)
target_stm32f3xx(${name} startup_stm32f30x_md_gcc.S stm32_flash_f303_256k.ld ${ARGN}) target_stm32f3xx(${name} startup_stm32f30x_md_gcc.S stm32_flash_f303_256k.ld SVD STM32F303 ${ARGN})
target_compile_definitions(${name} PRIVATE ${STM32F303_DEFINITIONS}) target_compile_definitions(${name} PRIVATE ${STM32F303_DEFINITIONS})
setup_firmware_target(${name}) setup_firmware_target(${name})
endfunction() endfunction()

View file

@ -104,7 +104,7 @@ set(STM32F405_COMPILE_DEFINITIONS
) )
function(target_stm32f405 name) function(target_stm32f405 name)
target_stm32f4xx(${name} startup_stm32f40xx.s stm32_flash_f405.ld ${ARGN}) target_stm32f4xx(${name} startup_stm32f40xx.s stm32_flash_f405.ld SVD STM32F405 ${ARGN})
target_sources(${name} PRIVATE ${STM32F4_STDPERIPH_SRC}) target_sources(${name} PRIVATE ${STM32F4_STDPERIPH_SRC})
target_compile_definitions(${name} PRIVATE ${STM32F405_COMPILE_DEFINITIONS}) target_compile_definitions(${name} PRIVATE ${STM32F405_COMPILE_DEFINITIONS})
setup_firmware_target(${name}) setup_firmware_target(${name})
@ -120,7 +120,7 @@ set(STM32F411_COMPILE_DEFINITIONS
) )
function(target_stm32f411 name) function(target_stm32f411 name)
target_stm32f4xx(${name} startup_stm32f411xe.s stm32_flash_f411.ld) target_stm32f4xx(${name} startup_stm32f411xe.s stm32_flash_f411.ld SVD STM32F411 ${ARGN})
target_sources(${name} PRIVATE ${STM32F411_OR_F427_STDPERIPH_SRC}) target_sources(${name} PRIVATE ${STM32F411_OR_F427_STDPERIPH_SRC})
target_compile_definitions(${name} PRIVATE ${STM32F411_COMPILE_DEFINITIONS}) target_compile_definitions(${name} PRIVATE ${STM32F411_COMPILE_DEFINITIONS})
setup_firmware_target(${name}) setup_firmware_target(${name})
@ -131,7 +131,7 @@ set(STM32F427_COMPILE_DEFINITIONS
FLASH_SIZE=1024 FLASH_SIZE=1024
) )
function(target_stm32f427 name) function(target_stm32f427 name)
target_stm32f4xx(${name} startup_stm32f427xx.s stm32_flash_f427.ld ${ARGN}) target_stm32f4xx(${name} startup_stm32f427xx.s stm32_flash_f427.ld SVD STM32F427 ${ARGN})
target_sources(${name} PRIVATE ${STM32F411_OR_F427_STDPERIPH_SRC}) target_sources(${name} PRIVATE ${STM32F411_OR_F427_STDPERIPH_SRC})
target_compile_definitions(${name} PRIVATE ${STM32F427_COMPILE_DEFINITIONS}) target_compile_definitions(${name} PRIVATE ${STM32F427_COMPILE_DEFINITIONS})
setup_firmware_target(${name}) setup_firmware_target(${name})

16
cmake/svd.cmake Normal file
View file

@ -0,0 +1,16 @@
function(setup_svd target_name)
get_property(svd_name TARGET ${target_name} PROPERTY SVD)
set(svd_target_name "svd_${target_name}")
if (svd_name AND NOT svd_name STREQUAL "")
add_custom_target(${svd_target_name}
COMMAND ${CMAKE_COMMAND} -E copy
${SVD_DIR}/${svd_name}.svd
${CMAKE_BINARY_DIR}/svd/${target_name}.svd
)
else()
add_custom_target(${svd_target_name}
cmake -E echo "target ${target_name} does not declare an SVD filename"
COMMAND cmake -E false)
endif()
exclude_from_all(${svd_target_name})
endfunction()