diff --git a/tools/build_api.py b/tools/build_api.py index fe0b4c0e8b2..ba89cfa578e 100644 --- a/tools/build_api.py +++ b/tools/build_api.py @@ -145,6 +145,8 @@ def get_config(src_paths, target, toolchain_name): prev_features = features toolchain.config.validate_config() + if toolchain.config.has_regions: + _ = list(toolchain.config.regions) cfg, macros = toolchain.config.get_config_data() features = toolchain.config.get_features() diff --git a/tools/config/__init__.py b/tools/config/__init__.py index fd4a2d3d868..aaa5344f4d6 100644 --- a/tools/config/__init__.py +++ b/tools/config/__init__.py @@ -17,7 +17,7 @@ from copy import deepcopy import os -from os.path import dirname, abspath +from os.path import dirname, abspath, exists import sys from collections import namedtuple from os.path import splitext @@ -506,6 +506,8 @@ def regions(self): "build a bootloader project") if 'target.bootloader_img' in target_overrides: filename = target_overrides['target.bootloader_img'] + if not exists(filename): + raise ConfigException("Bootloader %s not found" % filename) part = intelhex_offset(filename, offset=rom_start) if part.minaddr() != rom_start: raise ConfigException("bootloader executable does not " diff --git a/tools/test/config_test/test29/mbed_app.json b/tools/test/config_test/test29/mbed_app.json new file mode 100644 index 00000000000..c2ba944b9d2 --- /dev/null +++ b/tools/test/config_test/test29/mbed_app.json @@ -0,0 +1,7 @@ +{ + "target_overrides": { + "K64F": { + "target.bootloader_img": "does_not_exists.bin" + } + } +} diff --git a/tools/test/config_test/test29/test_data.py b/tools/test/config_test/test29/test_data.py new file mode 100644 index 00000000000..935d3d9037a --- /dev/null +++ b/tools/test/config_test/test29/test_data.py @@ -0,0 +1,6 @@ +expected_results = { + "K64F": { + "desc": "error when bootloader not found", + "exception_msg": "not found" + } +}