diff --git a/squeezelite.cmake b/squeezelite.cmake index d93760e2..584c845c 100644 --- a/squeezelite.cmake +++ b/squeezelite.cmake @@ -6,6 +6,66 @@ if(NOT SDKCONFIG OR NOT IDF_PATH OR NOT IDF_TARGET ) message(FATAL_ERROR "squeezelite should not be made outside of the main project !") endif() +function(___output_debug_target bin_name ) + + idf_build_get_property(build_dir BUILD_DIR) + file(TO_CMAKE_PATH "${build_dir}" cm_build_dir) + if( "${bin_name}" STREQUAL "_" ) + set(debug_file "dbg_project_args" ) + else() + set(debug_file "dbg_${bin_name}" ) + endif() + set(flash_debug_file "flash_${debug_file}" ) + + set(flash_args_file "${cm_build_dir}/flash_project_args" ) + set(line_prefix "mon program_esp32 ${cm_build_dir}/" ) + + file(READ ${flash_args_file} flash_args) + + + list(APPEND dbg_cmds "mon reset halt") + list(APPEND dbg_cmds "flushregs") + list(APPEND dbg_cmds "set remote hardware-watchpoint-limit 2") + + STRING(REGEX REPLACE "\n" ";" SPLIT "${flash_args}") + + + + foreach(flash_arg_line ${SPLIT}) + string(REGEX MATCH "^(0[xX][^ ]*)[ ]*([^ ]*)" out_matches "${flash_arg_line}") + + if( ${CMAKE_MATCH_COUNT} ) + if( ( NOT "${CMAKE_MATCH_0}" STREQUAL "" ) AND ( "${bin_name}" STREQUAL "${CMAKE_MATCH_1}" ) OR ( "${bin_name}" STREQUAL "_" ) ) + list(APPEND flash_dbg_cmds "${line_prefix}/${CMAKE_MATCH_2} ${CMAKE_MATCH_1}") + endif() + if( ( NOT "${CMAKE_MATCH_0}" STREQUAL "" ) AND ( "${bin_name}" STREQUAL "${CMAKE_MATCH_2}" ) ) + list(APPEND dbg_cmds "mon esp32 appoffset ${CMAKE_MATCH_1}") + endif() + endif() + endforeach() + + list(APPEND dbg_cmds_end "mon reset halt") + list(APPEND dbg_cmds_end "flushregs") + + list(APPEND full_dbg_cmds "${dbg_cmds}") + list(APPEND full_dbg_cmds "${dbg_cmds_end}") + + list(APPEND full_flash_dbg_cmds "${dbg_cmds}") + list(APPEND full_flash_dbg_cmds "${flash_dbg_cmds}") + list(APPEND full_flash_dbg_cmds "${dbg_cmds_end}") + STRING(REGEX REPLACE ";" "\n" dbg_cmds_end "${dbg_cmds_end}") + STRING(REGEX REPLACE ";" "\n" full_dbg_cmds "${full_dbg_cmds}") + STRING(REGEX REPLACE ";" "\n" full_flash_dbg_cmds "${full_flash_dbg_cmds}") + +file(GENERATE OUTPUT "${cm_build_dir}${debug_file}" CONTENT "${full_dbg_cmds}") +file(GENERATE OUTPUT "${cm_build_dir}${flash_debug_file}" CONTENT "${full_flash_dbg_cmds}") + set_property(DIRECTORY ${cm_build_dir} + APPEND PROPERTY + ADDITIONAL_MAKE_CLEAN_FILES "${debug_file}" "${flash_debug_file}") + + +endfunction() + function(___register_flash target_name sub_type) partition_table_get_partition_info(otaapp_offset "--partition-type app --partition-subtype ${sub_type}" "offset") esptool_py_flash_project_args(${target_name} ${otaapp_offset} ${build_dir}/${target_name}.bin FLASH_IN_PROJECT) @@ -55,4 +115,7 @@ function(___create_new_target target_name) endfunction() ___create_new_target(squeezelite ) -___register_flash(squeezelite ota_0) \ No newline at end of file +___register_flash(squeezelite ota_0) +___output_debug_target("_") +___output_debug_target("squeezelite") +___output_debug_target("recovery") \ No newline at end of file