From e51ce4d34d3c80c4826eef80d9b9573261d1ee8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B8e?= Date: Mon, 20 Nov 2017 15:37:59 +0100 Subject: [PATCH] cmake: Generate POST_BUILD items based on KConfig Signed-off-by: Sebastian Boe --- CMakeLists.txt | 62 ++++++++++++++++++++++++++++++++++++------ cmake/extensions.cmake | 5 ++++ 2 files changed, 59 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b994ca6de00..0fbf98b7513 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -665,17 +665,63 @@ endif() # the zephyr elf, we set the kernel_elf file name to zephyr.elf. set_target_properties(${logical_target_for_zephyr_elf} PROPERTIES OUTPUT_NAME ${KERNEL_NAME}) +set(post_build_commands "") + +# TODO: Write a KConfig for these options instead +set(CONFIG_CHECK_LINK_MAP 1) + +set(CONFIG_BUILD_OUTPUT_HEX 1) +set(CONFIG_BUILD_OUTPUT_BIN 1) +set(CONFIG_BUILD_OUTPUT_S19 1) +set(CONFIG_BUILD_OUTPUT_DISASSEMBLY 1) +set(CONFIG_BUILD_OUTPUT_STAT 1) +set(CONFIG_BUILD_OUTPUT_STRIPPED 1) + +list_append_ifdef(CONFIG_CHECK_LINK_MAP + post_build_commands + COMMAND ${PYTHON_EXECUTABLE} $ENV{ZEPHYR_BASE}/scripts/check_link_map.py ${KERNEL_MAP_NAME} + ) + +list_append_ifdef( + CONFIG_BUILD_OUTPUT_HEX + post_build_commands + COMMAND ${CMAKE_OBJCOPY} -S -Oihex -R .comment -R COMMON -R .eh_frame ${KERNEL_ELF_NAME} ${KERNEL_HEX_NAME} + ) + +list_append_ifdef( + CONFIG_BUILD_OUTPUT_BIN + post_build_commands + COMMAND ${CMAKE_OBJCOPY} -S -Obinary -R .comment -R COMMON -R .eh_frame ${KERNEL_ELF_NAME} ${KERNEL_BIN_NAME} + ) +list_append_ifdef( + CONFIG_BUILD_OUTPUT_S19 + post_build_commands + COMMAND ${CMAKE_OBJCOPY} --srec-len 1 --output-target=srec ${KERNEL_ELF_NAME} ${KERNEL_S19_NAME} + ) + +list_append_ifdef( + CONFIG_BUILD_OUTPUT_DISASSEMBLY + post_build_commands + COMMAND ${CMAKE_OBJDUMP} -S ${KERNEL_ELF_NAME} > ${KERNEL_LST_NAME} + ) + +list_append_ifdef( + CONFIG_BUILD_OUTPUT_STAT + post_build_commands + COMMAND ${CMAKE_READELF} -e ${KERNEL_ELF_NAME} > ${KERNEL_STAT_NAME} + ) + +list_append_ifdef( + CONFIG_BUILD_OUTPUT_STRIPPED + post_build_commands + COMMAND ${CMAKE_STRIP} --strip-all ${KERNEL_ELF_NAME} -o ${KERNEL_STRIP_NAME} + ) + add_custom_command( TARGET ${logical_target_for_zephyr_elf} POST_BUILD - COMMAND ${PYTHON_EXECUTABLE} $ENV{ZEPHYR_BASE}/scripts/check_link_map.py ${KERNEL_MAP_NAME} - COMMAND ${CMAKE_OBJCOPY} -S -Oihex -R .comment -R COMMON -R .eh_frame ${KERNEL_ELF_NAME} ${KERNEL_HEX_NAME} - COMMAND ${CMAKE_OBJCOPY} -S -Obinary -R .comment -R COMMON -R .eh_frame ${KERNEL_ELF_NAME} ${KERNEL_BIN_NAME} - COMMAND ${CMAKE_OBJCOPY} --srec-len 1 --output-target=srec ${KERNEL_ELF_NAME} ${KERNEL_S19_NAME} - COMMAND ${CMAKE_OBJDUMP} -S ${KERNEL_ELF_NAME} > ${KERNEL_LST_NAME} - COMMAND ${CMAKE_READELF} -e ${KERNEL_ELF_NAME} > ${KERNEL_STAT_NAME} - COMMAND ${CMAKE_STRIP} --strip-all ${KERNEL_ELF_NAME} -o ${KERNEL_STRIP_NAME} - COMMENT "Generating zephyr.{hex,bin,lst,strip,stat,s19} from zephyr.elf for board: ${BOARD}" + ${post_build_commands} + COMMENT "Generating files from zephyr.elf for board: ${BOARD}" # NB: COMMENT only works for some CMake-Generators ) diff --git a/cmake/extensions.cmake b/cmake/extensions.cmake index a47f41cae82..bcad2e12bcc 100644 --- a/cmake/extensions.cmake +++ b/cmake/extensions.cmake @@ -572,6 +572,11 @@ function(zephyr_library_link_libraries_ifdef feature_toggle item) endif() endfunction() +macro(list_append_ifdef feature_toggle list) + if(${${feature_toggle}}) + list(APPEND ${list} ${ARGN}) + endif() +endmacro() # 3.2. *_ifndef # See 3.1 *_ifdef