# For MWDT the elfconvert command is made into a script. # Reason for that is because not a single command covers all use cases, # and it must therefore be possible to call individual commands, depending # on the arguments used. # Handle stripping if (STRIP_DEBUG OR STRIP_ALL) if(STRIP_ALL) set(obj_copy_strip "-qs") elseif(STRIP_DEBUG) set(obj_copy_strip "-ql") endif() execute_process( COMMAND ${STRIP} ${obj_copy_strip} ${INFILE} ${FILEOUT}) endif() # no support of --srec-len in mwdt # Handle Input and Output target types if(DEFINED OUTTARGET) set(obj_copy_target_output "") set(obj_copy_gap_fill "") if(GAP_FILL) set(obj_copy_gap_fill "-f;${GAP_FILL}") endif() # only mwdt's elf2hex supports gap fill if(${OUTTARGET} STREQUAL "srec") set(obj_copy_target_output "-m") elseif(${OUTTARGET} STREQUAL "ihex") set(obj_copy_target_output "-I") elseif(${OUTTARGET} STREQUAL "binary") set(obj_copy_target_output "-B") endif() execute_process( COMMAND ${ELF2HEX} ${obj_copy_gap_fill} ${obj_copy_target_output} -o ${OUTFILE} ${INFILE} ) endif() # Handle sections, if any # 1. Section only selection(s) set(obj_copy_sections_only "") if(DEFINED ONLY_SECTION) # There could be more than one, so need to check all args. foreach(n RANGE ${CMAKE_ARGC}) foreach(argument ${CMAKE_ARGV${n}}) if(${argument} MATCHES "-DONLY_SECTION=(.*)") list(APPEND obj_copy_sections_only "-sn;${CMAKE_MATCH_1}") endif() endforeach() endforeach() execute_process( COMMAND ${ELF2BIN} -q ${obj_copy_sections_only} ${INFILE} ${OUTFILE} ) endif() # no support of rename sections in mwdt, here just use arc-elf32-objcopy temporarily set(obj_copy_sections_rename "") if(DEFINED RENAME_SECTION) foreach(n RANGE ${CMAKE_ARGC}) foreach(argument ${CMAKE_ARGV${n}}) if(${argument} MATCHES "-DRENAME_SECTION=(.*)") list(APPEND obj_copy_sections_rename "--rename-section;${CMAKE_MATCH_1}") endif() endforeach() endforeach() execute_process( COMMAND ${OBJCOPY} ${obj_copy_sections_rename} ${INFILE} ${OUTFILE} ) endif() # no support of remove sections