function(___output_debug_target bin_name )

    file(TO_CMAKE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" cm_build_dir)
    if( "${bin_name}" STREQUAL "_" )
    	set(debug_file "dbg_project" )
    else()
        set(debug_file "dbg_${bin_name}" )
    endif()
	set(flash_debug_file "${CMAKE_BINARY_DIR}/flash_${debug_file}" )
	set(debug_file "${CMAKE_BINARY_DIR}/${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 "target remote :3333")
	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} GREATER 0  )
	  		set(found_offset "${CMAKE_MATCH_1}")
	  		set(found_bin "${CMAKE_MATCH_2}")
	  		if( ( "${found_bin}" MATCHES "${bin_name}" ) OR ( "${bin_name}" STREQUAL "_" ) )
			  	list(APPEND flash_dbg_cmds "${line_prefix}${found_bin} ${found_offset}")
	  		endif()
			if( ( "${bin_name}" MATCHES "recovery" ) AND ( "${found_bin}" MATCHES "ota_data_initial" ) )
				# reset OTADATA to force reloading recovery
			  	list(APPEND flash_dbg_cmds "${line_prefix}${found_bin} ${found_offset}")
	  		endif()	  		
	  		
			if( ( "${found_bin}" MATCHES "${bin_name}" ) AND NOT ( "${bin_name}" STREQUAL "_" ) )
			   list(APPEND dbg_cmds "mon esp32 appimage_offset  ${found_offset}") 	  
			endif()
	  endif()
	endforeach()

	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}")

#	message("Writing: ${debug_file} with ${full_dbg_cmds}")
	file(WRITE "${debug_file}" "${full_dbg_cmds}")
#	message("Writing: ${flash_debug_file} with : ${full_flash_dbg_cmds}")
	file(WRITE  "${flash_debug_file}" "${full_flash_dbg_cmds}")
  

endfunction()

message("Generating debug script files") 
___output_debug_target("_")
___output_debug_target("squeezelite")
___output_debug_target("recovery")