diff --git a/tools/cmake/mbed_target_functions.cmake b/tools/cmake/mbed_target_functions.cmake index 8d3aaae..77e0678 100644 --- a/tools/cmake/mbed_target_functions.cmake +++ b/tools/cmake/mbed_target_functions.cmake @@ -56,14 +56,54 @@ # Parse toolchain generated map file of `target` and display a readable table format. # function(mbed_generate_map_file target) - add_custom_command( - TARGET - ${target} - POST_BUILD - COMMAND ${Python3_EXECUTABLE} ${mbed-os_SOURCE_DIR}/tools/memap.py -t ${MBED_TOOLCHAIN} ${CMAKE_CURRENT_BINARY_DIR}/${target}${CMAKE_EXECUTABLE_SUFFIX}.map - WORKING_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR} -) + # set default args for memap.py + set(MBED_MEMAP_DEPTH "2" CACHE STRING "directory depth level to display report") + set(MBED_MEMAP_CREATE_JSON FALSE CACHE BOOL "create report in json file") + set(MBED_MEMAP_CREATE_HTML FALSE CACHE BOOL "create report in html file") + + # generate table for screen + add_custom_command( + TARGET + ${target} + POST_BUILD + COMMAND ${Python3_EXECUTABLE} ${mbed-os_SOURCE_DIR}/tools/memap.py + -t ${MBED_TOOLCHAIN} ${CMAKE_CURRENT_BINARY_DIR}/${target}${CMAKE_EXECUTABLE_SUFFIX}.map + --depth ${MBED_MEMAP_DEPTH} + WORKING_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR} + ) + + # generate json file + if (${MBED_MEMAP_CREATE_JSON}) + add_custom_command( + TARGET + ${target} + POST_BUILD + COMMAND ${Python3_EXECUTABLE} ${mbed-os_SOURCE_DIR}/tools/memap.py + -t ${MBED_TOOLCHAIN} ${CMAKE_CURRENT_BINARY_DIR}/${target}${CMAKE_EXECUTABLE_SUFFIX}.map + --depth ${MBED_MEMAP_DEPTH} + -e json + -o ${CMAKE_CURRENT_BINARY_DIR}/${target}${CMAKE_EXECUTABLE_SUFFIX}.memmap.json + WORKING_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR} + ) + endif() + + # generate html file + if (${MBED_MEMAP_CREATE_HTML}) + add_custom_command( + TARGET + ${target} + POST_BUILD + COMMAND ${Python3_EXECUTABLE} ${mbed-os_SOURCE_DIR}/tools/memap.py + -t ${MBED_TOOLCHAIN} ${CMAKE_CURRENT_BINARY_DIR}/${target}${CMAKE_EXECUTABLE_SUFFIX}.map + --depth ${MBED_MEMAP_DEPTH} + -e html + -o ${CMAKE_CURRENT_BINARY_DIR}/${target}${CMAKE_EXECUTABLE_SUFFIX}.memmap.html + WORKING_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR} + ) + endif() endfunction() #