123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- # 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 symnbol stripping
- #
- # 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
- 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 "")
|