mirror of https://github.com/ARMmbed/mbed-os.git
Conditionally enable post build in uvision for managed bootloader
parent
a0cce48282
commit
1319948412
|
@ -2,13 +2,14 @@ from __future__ import print_function, absolute_import
|
||||||
from builtins import str
|
from builtins import str
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from os.path import normpath, exists, dirname
|
from os.path import normpath, exists, dirname, join, abspath
|
||||||
import ntpath
|
import ntpath
|
||||||
import copy
|
import copy
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
import shutil
|
import shutil
|
||||||
from subprocess import Popen, PIPE
|
from subprocess import Popen, PIPE
|
||||||
import re
|
import re
|
||||||
|
import json
|
||||||
|
|
||||||
from tools.resources import FileType
|
from tools.resources import FileType
|
||||||
from tools.targets import TARGET_MAP, CORE_ARCH
|
from tools.targets import TARGET_MAP, CORE_ARCH
|
||||||
|
@ -243,7 +244,30 @@ class Uvision(Exporter):
|
||||||
'include_paths': ';'.join(self.filter_dot(d) for d in
|
'include_paths': ';'.join(self.filter_dot(d) for d in
|
||||||
self.resources.inc_dirs),
|
self.resources.inc_dirs),
|
||||||
'device': DeviceUvision(self.target),
|
'device': DeviceUvision(self.target),
|
||||||
|
'postbuild_step_active': 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if self.toolchain.config.has_regions:
|
||||||
|
# Serialize region information
|
||||||
|
export_info = {}
|
||||||
|
restrict_size = getattr(self.toolchain.config.target, "restrict_size")
|
||||||
|
if restrict_size:
|
||||||
|
export_info["target"] = {
|
||||||
|
"restrict_size": restrict_size
|
||||||
|
}
|
||||||
|
|
||||||
|
binary_path = "BUILD/{}.hex".format(self.project_name)
|
||||||
|
region_list = list(self.toolchain.config.regions)
|
||||||
|
export_info["region_list"] = [
|
||||||
|
r._replace(filename=binary_path) if r.active else r for r in region_list
|
||||||
|
]
|
||||||
|
# Enable the post build step
|
||||||
|
ctx['postbuild_step'] = (
|
||||||
|
'python mbed-os/tools/export/uvision/postbuild.py "$K\\" "#L"'
|
||||||
|
)
|
||||||
|
ctx['postbuild_step_active'] = 1
|
||||||
|
ctx['export_info'] = json.dumps(export_info, indent=4)
|
||||||
|
|
||||||
sct_file_ref = self.resources.get_file_refs(FileType.LD_SCRIPT)[0]
|
sct_file_ref = self.resources.get_file_refs(FileType.LD_SCRIPT)[0]
|
||||||
sct_file_ref = self.toolchain.correct_scatter_shebang(
|
sct_file_ref = self.toolchain.correct_scatter_shebang(
|
||||||
sct_file_ref, dirname(sct_file_ref.name)
|
sct_file_ref, dirname(sct_file_ref.name)
|
||||||
|
@ -271,10 +295,29 @@ class Uvision(Exporter):
|
||||||
'uvision/uvision_debug.tmpl', ctx, self.project_name + ".uvoptx"
|
'uvision/uvision_debug.tmpl', ctx, self.project_name + ".uvoptx"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if ctx['postbuild_step_active']:
|
||||||
|
self.gen_file(
|
||||||
|
'uvision/debug_init.ini', ctx, 'debug_init.ini'
|
||||||
|
)
|
||||||
|
self.gen_file(
|
||||||
|
'uvision/flash_init.ini', ctx, 'flash_init.ini'
|
||||||
|
)
|
||||||
|
self.gen_file(
|
||||||
|
'uvision/export_info.tmpl', ctx, 'export_info.json'
|
||||||
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def clean(project_name):
|
def clean(project_name):
|
||||||
os.remove(project_name + ".uvprojx")
|
os.remove(project_name + ".uvprojx")
|
||||||
os.remove(project_name + ".uvoptx")
|
os.remove(project_name + ".uvoptx")
|
||||||
|
|
||||||
|
if exists("export_info.json"):
|
||||||
|
os.remove("export_info.json")
|
||||||
|
if exists("debug_init.ini"):
|
||||||
|
os.remove("debug_init.ini")
|
||||||
|
if exists("flash_init.ini"):
|
||||||
|
os.remove("flash_init.ini")
|
||||||
|
|
||||||
# legacy .build directory cleaned if exists
|
# legacy .build directory cleaned if exists
|
||||||
if exists('.build'):
|
if exists('.build'):
|
||||||
shutil.rmtree('.build')
|
shutil.rmtree('.build')
|
||||||
|
|
Loading…
Reference in New Issue