diff --git a/tools/toolchains/__init__.py b/tools/toolchains/__init__.py index 6dd9d31c3c8..07bd2cf8c99 100644 --- a/tools/toolchains/__init__.py +++ b/tools/toolchains/__init__.py @@ -849,6 +849,21 @@ def compile_command(self, source, object, includes): return None + def check_toolchain_path(self, name): + """Check if the path to toolchain is valid. Exit if not. + + Positional arguments: + name -- the name of the toolchain, as used when creating compile + commands to execute. Valid key for TOOLCHAIN_PATHS. + + No return value but causes a system exit of execution if the path + does not exist. + """ + if not exists(TOOLCHAIN_PATHS[name]): + print('[ERROR] Toolchain path does not exist for %s.\n' + 'Current value: %s' % (name, TOOLCHAIN_PATHS[name])) + sys.exit() + @abstractmethod def parse_dependencies(self, dep_path): """Parse the dependency information generated by the compiler. diff --git a/tools/toolchains/arm.py b/tools/toolchains/arm.py index cb55f731446..8f77973b276 100644 --- a/tools/toolchains/arm.py +++ b/tools/toolchains/arm.py @@ -45,6 +45,8 @@ class ARM(mbedToolchain): def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False): mbedToolchain.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose) + self.check_toolchain_path("ARM") + if target.core == "Cortex-M0+": cpu = "Cortex-M0" elif target.core == "Cortex-M4F": diff --git a/tools/toolchains/gcc.py b/tools/toolchains/gcc.py index b9c79a8abea..1ccad199e9c 100644 --- a/tools/toolchains/gcc.py +++ b/tools/toolchains/gcc.py @@ -272,6 +272,8 @@ class GCC_ARM(GCC): def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False): GCC.__init__(self, target, options, notify, macros, silent, TOOLCHAIN_PATHS['GCC_ARM'], extra_verbose=extra_verbose) + self.check_toolchain_path("GCC_ARM") + # Use latest gcc nanolib if "big-build" in self.options: use_nano = False @@ -297,6 +299,8 @@ class GCC_CR(GCC): def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False): GCC.__init__(self, target, options, notify, macros, silent, TOOLCHAIN_PATHS['GCC_CR'], extra_verbose=extra_verbose) + self.check_toolchain_path("GCC_CR") + additional_compiler_flags = [ "-D__NEWLIB__", "-D__CODE_RED", "-D__USE_CMSIS", "-DCPP_USE_HEAP", ] diff --git a/tools/toolchains/iar.py b/tools/toolchains/iar.py index dac3b4852d2..47d476c3732 100644 --- a/tools/toolchains/iar.py +++ b/tools/toolchains/iar.py @@ -46,6 +46,9 @@ class IAR(mbedToolchain): def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False): mbedToolchain.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose) + + self.check_toolchain_path("IAR") + if target.core == "Cortex-M7F" or target.core == "Cortex-M7FD": cpuchoice = "Cortex-M7" else: