zephyr/cmake/bintools/armclang/elfconvert_command.cmake
Reto Schneider 7a6c5710ff cmake: Update cmake_minimum_required to 3.20.0
As Zephyr currently requires CMake version 3.20.0, update all
occurrences of cmake_minimum_required.

Signed-off-by: Reto Schneider <reto.schneider@husqvarnagroup.com>
2022-07-04 10:18:45 +02:00

55 lines
1.7 KiB
CMake

# For armclang 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.
cmake_minimum_required(VERSION 3.20.0)
# Handle stripping
if (STRIP_DEBUG OR STRIP_ALL)
set(obj_copy_target_output "--elf")
if(STRIP_ALL)
set(obj_copy_strip "--strip=all")
elseif(STRIP_DEBUG)
set(obj_copy_strip "--strip=debug")
endif()
endif()
# Unknown support of --srec-len in arm-ds
# Handle Input and Output target types
if(DEFINED OUTTARGET)
if(${OUTTARGET} STREQUAL "srec")
set(obj_copy_target_output "--m32")
elseif(${OUTTARGET} STREQUAL "ihex")
set(obj_copy_target_output "--i32combined")
elseif(${OUTTARGET} STREQUAL "binary")
set(obj_copy_target_output "--bincombined")
if(GAP_FILL)
set(obj_copy_gap_fill "--bincombined_padding=1,${GAP_FILL}")
endif()
endif()
endif()
if(DEFINED ONLY_SECTION AND "${OUTTARGET}" STREQUAL "binary")
set(obj_copy_target_output "--bin")
set(outfile_dir .dir)
string(REGEX REPLACE "^[\.]" "" only_section_clean "${ONLY_SECTION}")
endif()
# Note: fromelf is a little special regarding bin output, as each section gets
# its own file. This means that when only a specific section is required
# then that section must be moved to correct location.
execute_process(
COMMAND ${FROMELF}
${obj_copy_strip}
${obj_copy_gap_fill} ${obj_copy_target_output}
--output ${OUTFILE}${outfile_dir} ${INFILE}
)
if(DEFINED ONLY_SECTION AND "${OUTTARGET}" STREQUAL "binary")
execute_process(
COMMAND ${CMAKE_COMMAND} -E copy
${OUTFILE}${outfile_dir}/${only_section_clean} ${OUTFILE}
)
endif()