Merge branch 'bugfix/various_ldgen_fixes' into 'master'
Fix multiple ldgen issues Closes #47 See merge request idf/esp-idf!3799
This commit is contained in:
commit
2c7fc07aae
|
@ -62,6 +62,8 @@ function(register_component)
|
|||
set(include_type PUBLIC)
|
||||
|
||||
set_property(TARGET ${COMPONENT_TARGET} PROPERTY OUTPUT_NAME ${COMPONENT_NAME})
|
||||
|
||||
ldgen_generate_sections_info(${COMPONENT_TARGET})
|
||||
else()
|
||||
add_library(${COMPONENT_TARGET} INTERFACE) # header-only component
|
||||
set(include_type INTERFACE)
|
||||
|
|
|
@ -22,7 +22,12 @@ function(ldgen_add_fragment_files target fragment_files)
|
|||
endforeach()
|
||||
|
||||
set_property(TARGET ldgen APPEND PROPERTY FRAGMENT_FILES ${fragment_files_full_path})
|
||||
endfunction()
|
||||
|
||||
# ldgen_generate_sections_info
|
||||
#
|
||||
# Generate sections info for specified target to be used in linker script generation
|
||||
function(ldgen_generate_sections_info target)
|
||||
get_filename_component(target_sections_info ${CMAKE_CURRENT_BINARY_DIR}/${target}.sections_info ABSOLUTE)
|
||||
|
||||
add_custom_command(
|
||||
|
|
|
@ -581,8 +581,6 @@ and names
|
|||
"""
|
||||
class SectionsInfo(dict):
|
||||
|
||||
PATH = Optional("/") + ZeroOrMore(Regex(r"[^/.]+") + Literal("/"))
|
||||
|
||||
__info = collections.namedtuple("__info", "filename content")
|
||||
|
||||
def __init__(self):
|
||||
|
@ -591,8 +589,8 @@ class SectionsInfo(dict):
|
|||
def add_sections_info(self, sections_info_file):
|
||||
first_line = sections_info_file.readline()
|
||||
|
||||
archive = Literal("In archive").suppress() + SectionsInfo.PATH.suppress() + Fragment.ENTITY.setResultsName("archive") + Literal(":").suppress()
|
||||
parser = archive
|
||||
archive_path = Literal("In archive").suppress() + Regex(r"[^:]+").setResultsName("archive_path") + Literal(":").suppress()
|
||||
parser = archive_path
|
||||
|
||||
results = None
|
||||
|
||||
|
@ -601,7 +599,8 @@ class SectionsInfo(dict):
|
|||
except ParseException as p:
|
||||
raise ParseException("File " + sections_info_file.name + " is not a valid sections info file. " + p.message)
|
||||
|
||||
self.sections[results.archive] = SectionsInfo.__info(sections_info_file.name, sections_info_file.read())
|
||||
archive = os.path.basename(results.archive_path)
|
||||
self.sections[archive] = SectionsInfo.__info(sections_info_file.name, sections_info_file.read())
|
||||
|
||||
def _get_infos_from_file(self, info):
|
||||
# Object file line: '{object}: file format elf32-xtensa-le'
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
|
||||
import argparse
|
||||
import os
|
||||
import traceback
|
||||
import sys
|
||||
|
||||
from fragments import FragmentFileModel
|
||||
from sdkconfig import SDKConfig
|
||||
|
@ -95,6 +97,9 @@ def main():
|
|||
print("linker script generation failed for %s\nERROR: %s" % (input_file.name, e.message))
|
||||
# Delete the file so the entire build will fail; and not use an outdated script.
|
||||
os.remove(output_file.name)
|
||||
# Print traceback and exit
|
||||
traceback.print_exc()
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in a new issue