123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- # 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
|