# This template file can be used as a starting point for implementing support
# for additional tools for reading and/or conversion of elf files.
#
# Although GNU bintools is used as name, then the template can be used to
# support other tools.
#
# Overview of bintools used commands:
# - memusage    : Tool for reporting target memory usage
#                 (if linker support memusage reporting leave this property empty)
# - disassembly : Tool for disassemble the target
# - elfconvert  : Tool for converting from elf into another format.
# - readelf     : Tool for elf file processing
# - strip       : Tool for symbol stripping
# - symbols     : Tool for listing symbols in a binary
#
# Each tool will have the following minimum properties:
# - <tool>_command : Name of executable to call
# - <tool>_flag    : Flags that must always be used with this command
# - <tool>_flag_infile  : Flag to use when specifying the file to process
# - <tool>_flag_outfile : Flag to use to specify the result of the processing.
#
# each tool might require more flags depending on its use, as example:
# - elfconvert_flag_section_remove : Flag to use when specifying sections to remove
# - readelf_flags_headers : Flag to use to specify headers should be displayed
#
# If a given tool / flag / feature is not supported, then keep the property empty.
# As bintools_template.cmake default has empty flags, then it is sufficient to
# only set those flags that a given set of tools support.
#
# Commands will default echo a message if called, but no command has been defined.
# This is done, so that unexpected calls to non-implemented command can be easily detected.
# To disable the message, simply silence the command with:
#     set_property(TARGET bintools PROPERTY <command>_command ${CMAKE_COMMAND} -E echo "")
#
# The bintools properties are made generic so that implementing support for an
# additional native tool should be as easy as possible.
# However, there might be tools and/or use cases where the current property
# scheme does not cover the exact needs. For those use-cases it is possible
# to implement the call to a native tool inside a CMake script.
# For example, to call a custom script for elfconvert command, one can specify:
#   set_property(TARGET bintools PROPERTY elfconvert_command ${CMAKE_COMMAND})
#   set_property(TARGET bintools PROPERTY elfconvert_flag "")
#   set_property(TARGET bintools PROPERTY elfconvert_flag_final     -P custom_elfconvert.cmake)
#   set_property(TARGET bintools PROPERTY elfconvert_flag_strip_all "-DSTRIP_ALL=True")
#   set_property(TARGET bintools PROPERTY elfconvert_flag_infile    "-DINFILE=")
#   set_property(TARGET bintools PROPERTY elfconvert_flag_outfile   "-DOUT_FILE=")

#
#
# bintools property overview of all commands:
#
# Command:
# - memusage            : Name of command to execute
#                         Note: For gcc compilers this command is not used,
#                               instead a linker flag is used for this)
#   memusage_flag       : Flags that must always be applied when calling memusage command
#   memusage_flag_final : Flags that must always be applied last at the memusage command
#   memusage_flag_infile: Flag for specifying the input file
#   memusage_byproducts : Byproducts (files) generated when calling memusage
#
#
# - elfconvert  : Name of command for elf file conversion.
#                 For GNU binary utilities this is objcopy
#   elfconvert_formats            : Formats supported by this command.
#   elfconvert_flag               : Flags that must always be applied when calling elfconvert command
#   elfconvert_flag_final         : Flags that must always be applied last at the elfconvert command
#   elfconvert_flag_strip_all     : Flag that is used for stripping all symbols when converting
#   elfconvert_flag_strip_debug   : Flag that is used to strip debug symbols when converting
#   elfconvert_flag_intarget      : Flag for specifying target used for infile
#   elfconvert_flag_outtarget     : Flag for specifying target to use for converted file.
#                                   Target value must be one of those listed described by: elfconvert_formats
#   elfconvert_flag_section_remove: Flag for specifying that following section must be removed
#   elfconvert_flag_section_only  : Flag for specifying that only the following section should be kept
#   elfconvert_flag_section_rename: Flag for specifying that following section must be renamed
#   elfconvert_flag_gapfill       : Flag for specifying the value to fill in gaps between sections
#   elfconvert_flag_srec_len      : Flag for specifying maximum length of Srecord values
#   elfconvert_flag_infile        : Flag for specifying the input file
#   elfconvert_flag_outfile       : Flag for specifying the output file
#                                   For tools that prints to standard out, this should be ">" to indicate redirection
#
#
# - disassembly : Name of command for disassembly of files
#                 For GNU binary utilities this is objdump
#   disassembly_flag               : Flags that must always be applied when calling disassembly command
#   disassembly_flag_final         : Flags that must always be applied last at the disassembly command
#   disassembly_flag_inline_source : Flag to use to display source code mixed with disassembly
#   disassembly_flag_all           : Flag to use for disassemble everything, including zeroes
#   disassembly_flag_infile        : Flag for specifying the input file
#   disassembly_flag_outfile       : Flag for specifying the output file
#                                    For tools that prints to standard out, this should be ">" to indicate redirection
#
#
# - readelf : Name of command for reading elf files.
#             For GNU binary utilities this is readelf
#   readelf_flag          : Flags that must always be applied when calling readelf command
#   readelf_flag_final    : Flags that must always be applied last at the readelf command
#   readelf_flag_headers  : Flag to use for specifying ELF headers should be read
#   readelf_flag_infile   : Flag for specifying the input file
#   readelf_flag_outfile  : Flag for specifying the output file
#                           For tools that prints to standard out, this should be ">" to indicate redirection
#
#
# - strip: Name of command for stripping symbols
#          For GNU binary utilities this is strip
#   strip_flag         : Flags that must always be applied when calling strip command
#   strip_flag_final   : Flags that must always be applied last at the strip command
#   strip_flag_all     : Flag for removing all symbols
#   strip_flag_debug   : Flag for removing debug symbols
#   strip_flag_dwo     : Flag for removing dwarf sections
#   strip_flag_infile  : Flag for specifying the input file
#   strip_flag_outfile : Flag for specifying the output file
#
# - symbols : Name of command for printing out symbols
#             For GNU binary utilities this is nm
#   symbols_command         : empty
#   symbols_final   : empty
#   symbols_infile  : ELF file name
#   symbols_outfile : output file

set(COMMAND_NOT_SUPPORTED "command not supported on bintools: ")

# If memusage is supported as post-build command, set memusage_type to: command
# and this value to the command to execute in the form: <command> <arguments>
# Note: If memusage is supported during linking, please use:
#       set_property(TARGET linker ... ) found in cmake/linker/linker_flags.cmake instead
set_property(TARGET bintools PROPERTY memusage_command "")
set_property(TARGET bintools PROPERTY memusage_flag "")
set_property(TARGET bintools PROPERTY memusage_flag_final "")
set_property(TARGET bintools PROPERTY memusage_byproducts "")

# disassembly command to use for generation of list file.
set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_COMMAND} -E echo "disassembly ${COMMAND_NOT_SUPPORTED} ${BINTOOLS}")
set_property(TARGET bintools PROPERTY disassembly_flag "")
set_property(TARGET bintools PROPERTY disassembly_flag_final "")
set_property(TARGET bintools PROPERTY disassembly_flag_inline_source "")
set_property(TARGET bintools PROPERTY disassembly_flag_infile "")
set_property(TARGET bintools PROPERTY disassembly_flag_outfile "")

# elfconvert to use for transforming an elf file into another format, such as intel hex, s-rec, binary, etc.
set_property(TARGET bintools PROPERTY elfconvert_command ${CMAKE_COMMAND} -E echo "elfconvert ${COMMAND_NOT_SUPPORTED} ${BINTOOLS}")
set_property(TARGET bintools PROPERTY elfconvert_formats "")
set_property(TARGET bintools PROPERTY elfconvert_flag "")
set_property(TARGET bintools PROPERTY elfconvert_flag_final "")
set_property(TARGET bintools PROPERTY elfconvert_flag_outtarget "")
set_property(TARGET bintools PROPERTY elfconvert_flag_section_remove "")
set_property(TARGET bintools PROPERTY elfconvert_flag_gapfill "")
set_property(TARGET bintools PROPERTY elfconvert_flag_infile "")
set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "")

# readelf for processing of elf files.
set_property(TARGET bintools PROPERTY readelf_command ${CMAKE_COMMAND} -E echo "readelf ${COMMAND_NOT_SUPPORTED} ${BINTOOLS}")
set_property(TARGET bintools PROPERTY readelf_flag "")
set_property(TARGET bintools PROPERTY readelf_flag_final "")
set_property(TARGET bintools PROPERTY readelf_flag_headers "")
set_property(TARGET bintools PROPERTY readelf_flag_infile "")
set_property(TARGET bintools PROPERTY readelf_flag_outfile "")

# strip command for stripping symbols
set_property(TARGET bintools PROPERTY strip_command ${CMAKE_COMMAND} -E echo "strip ${COMMAND_NOT_SUPPORTED} ${BINTOOLS}")
set_property(TARGET bintools PROPERTY strip_flag "")
set_property(TARGET bintools PROPERTY strip_flag_final "")
set_property(TARGET bintools PROPERTY strip_flag_all "")
set_property(TARGET bintools PROPERTY strip_flag_debug "")
set_property(TARGET bintools PROPERTY strip_flag_dwo "")
set_property(TARGET bintools PROPERTY strip_flag_infile "")
set_property(TARGET bintools PROPERTY strip_flag_outfile "")

# list symbols in a binary
set_property(TARGET bintools PROPERTY symbols_command ${CMAKE_NM})
set_property(TARGET bintools PROPERTY symbols_flag "")
set_property(TARGET bintools PROPERTY symbols_final "")
set_property(TARGET bintools PROPERTY symbols_infile "")
set_property(TARGET bintools PROPERTY symbols_outfile ">;" )
