Merge pull request #2186 from 0xc0170/fix_issue2183

Fix issue2183
pull/2188/head
Bogdan Marinescu 2016-07-19 11:31:35 +03:00 committed by GitHub
commit 474915c22c
4 changed files with 29 additions and 25 deletions

View File

@ -23,6 +23,14 @@ class OldLibrariesException(Exception): pass
class FailedBuildException(Exception) : pass
# Exporter descriptor for TARGETS
# TARGETS as class attribute for backward compatibility (allows: if in Exporter.TARGETS)
class ExporterTargetsProperty(object):
def __init__(self, func):
self.func = func
def __get__(self, inst, cls):
return self.func(cls)
class Exporter(object):
TEMPLATE_DIR = dirname(__file__)
DOT_IN_RELATIVE_PATH = False

View File

@ -18,7 +18,7 @@ import re
import os
from project_generator_definitions.definitions import ProGenDef
from tools.export.exporters import Exporter
from tools.export.exporters import Exporter, ExporterTargetsProperty
from tools.targets import TARGET_MAP, TARGET_NAMES
# If you wish to add a new target, add it to project_generator_definitions, and then
@ -35,19 +35,19 @@ class IAREmbeddedWorkbench(Exporter):
MBED_CONFIG_HEADER_SUPPORTED = True
@property
def TARGETS(self):
if not hasattr(self, "_targets_supported"):
self._targets_supported = []
@ExporterTargetsProperty
def TARGETS(cls):
if not hasattr(cls, "_targets_supported"):
cls._targets_supported = []
for target in TARGET_NAMES:
try:
if (ProGenDef('iar').is_supported(str(TARGET_MAP[target])) or
ProGenDef('iar').is_supported(TARGET_MAP[target].progen['target'])):
self._targets_supported.append(target)
cls._targets_supported.append(target)
except AttributeError:
# target is not supported yet
continue
return self._targets_supported
return cls._targets_supported
def generate(self, progen_build=False):
""" Generates the project files """

View File

@ -17,7 +17,7 @@ limitations under the License.
from os.path import basename, join, dirname
from project_generator_definitions.definitions import ProGenDef
from tools.export.exporters import Exporter
from tools.export.exporters import Exporter, ExporterTargetsProperty
from tools.targets import TARGET_MAP, TARGET_NAMES
from tools.settings import ARM_INC
@ -36,19 +36,19 @@ class Uvision4(Exporter):
MBED_CONFIG_HEADER_SUPPORTED = True
@property
def TARGETS(self):
if not hasattr(self, "_targets_supported"):
self._targets_supported = []
@ExporterTargetsProperty
def TARGETS(cls):
if not hasattr(cls, "_targets_supported"):
cls._targets_supported = []
for target in TARGET_NAMES:
try:
if (ProGenDef('uvision').is_supported(str(TARGET_MAP[target])) or
ProGenDef('uvision').is_supported(TARGET_MAP[target].progen['target'])):
self._targets_supported.append(target)
cls._targets_supported.append(target)
except AttributeError:
# target is not supported yet
continue
return self._targets_supported
return cls._targets_supported
def get_toolchain(self):
return TARGET_MAP[self.target].default_toolchain

View File

@ -17,7 +17,7 @@ limitations under the License.
from os.path import basename, join, dirname
from project_generator_definitions.definitions import ProGenDef
from tools.export.exporters import Exporter
from tools.export.exporters import Exporter, ExporterTargetsProperty
from tools.targets import TARGET_MAP, TARGET_NAMES
from tools.settings import ARM_INC
@ -36,23 +36,19 @@ class Uvision5(Exporter):
MBED_CONFIG_HEADER_SUPPORTED = True
# backward compatibility with our scripts
def __init__(self):
self._targets = []
@property
def TARGETS(self):
if not hasattr(self, "_targets_supported"):
self._targets_supported = []
@ExporterTargetsProperty
def TARGETS(cls):
if not hasattr(cls, "_targets_supported"):
cls._targets_supported = []
for target in TARGET_NAMES:
try:
if (ProGenDef('uvision5').is_supported(str(TARGET_MAP[target])) or
ProGenDef('uvision5').is_supported(TARGET_MAP[target].progen['target'])):
self._targets_supported.append(target)
cls._targets_supported.append(target)
except AttributeError:
# target is not supported yet
continue
return self._targets_supported
return cls._targets_supported
def get_toolchain(self):
return TARGET_MAP[self.target].default_toolchain