Skip to content

Commit 474915c

Browse files
authored
Merge pull request #2186 from 0xc0170/fix_issue2183
Fix issue2183
2 parents 9626ef3 + 028f722 commit 474915c

File tree

4 files changed

+29
-25
lines changed

4 files changed

+29
-25
lines changed

tools/export/exporters.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ class OldLibrariesException(Exception): pass
2323

2424
class FailedBuildException(Exception) : pass
2525

26+
# Exporter descriptor for TARGETS
27+
# TARGETS as class attribute for backward compatibility (allows: if in Exporter.TARGETS)
28+
class ExporterTargetsProperty(object):
29+
def __init__(self, func):
30+
self.func = func
31+
def __get__(self, inst, cls):
32+
return self.func(cls)
33+
2634
class Exporter(object):
2735
TEMPLATE_DIR = dirname(__file__)
2836
DOT_IN_RELATIVE_PATH = False

tools/export/iar.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import os
1919
from project_generator_definitions.definitions import ProGenDef
2020

21-
from tools.export.exporters import Exporter
21+
from tools.export.exporters import Exporter, ExporterTargetsProperty
2222
from tools.targets import TARGET_MAP, TARGET_NAMES
2323

2424
# If you wish to add a new target, add it to project_generator_definitions, and then
@@ -35,19 +35,19 @@ class IAREmbeddedWorkbench(Exporter):
3535

3636
MBED_CONFIG_HEADER_SUPPORTED = True
3737

38-
@property
39-
def TARGETS(self):
40-
if not hasattr(self, "_targets_supported"):
41-
self._targets_supported = []
38+
@ExporterTargetsProperty
39+
def TARGETS(cls):
40+
if not hasattr(cls, "_targets_supported"):
41+
cls._targets_supported = []
4242
for target in TARGET_NAMES:
4343
try:
4444
if (ProGenDef('iar').is_supported(str(TARGET_MAP[target])) or
4545
ProGenDef('iar').is_supported(TARGET_MAP[target].progen['target'])):
46-
self._targets_supported.append(target)
46+
cls._targets_supported.append(target)
4747
except AttributeError:
4848
# target is not supported yet
4949
continue
50-
return self._targets_supported
50+
return cls._targets_supported
5151

5252
def generate(self, progen_build=False):
5353
""" Generates the project files """

tools/export/uvision4.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from os.path import basename, join, dirname
1818
from project_generator_definitions.definitions import ProGenDef
1919

20-
from tools.export.exporters import Exporter
20+
from tools.export.exporters import Exporter, ExporterTargetsProperty
2121
from tools.targets import TARGET_MAP, TARGET_NAMES
2222
from tools.settings import ARM_INC
2323

@@ -36,19 +36,19 @@ class Uvision4(Exporter):
3636

3737
MBED_CONFIG_HEADER_SUPPORTED = True
3838

39-
@property
40-
def TARGETS(self):
41-
if not hasattr(self, "_targets_supported"):
42-
self._targets_supported = []
39+
@ExporterTargetsProperty
40+
def TARGETS(cls):
41+
if not hasattr(cls, "_targets_supported"):
42+
cls._targets_supported = []
4343
for target in TARGET_NAMES:
4444
try:
4545
if (ProGenDef('uvision').is_supported(str(TARGET_MAP[target])) or
4646
ProGenDef('uvision').is_supported(TARGET_MAP[target].progen['target'])):
47-
self._targets_supported.append(target)
47+
cls._targets_supported.append(target)
4848
except AttributeError:
4949
# target is not supported yet
5050
continue
51-
return self._targets_supported
51+
return cls._targets_supported
5252

5353
def get_toolchain(self):
5454
return TARGET_MAP[self.target].default_toolchain

tools/export/uvision5.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from os.path import basename, join, dirname
1818
from project_generator_definitions.definitions import ProGenDef
1919

20-
from tools.export.exporters import Exporter
20+
from tools.export.exporters import Exporter, ExporterTargetsProperty
2121
from tools.targets import TARGET_MAP, TARGET_NAMES
2222
from tools.settings import ARM_INC
2323

@@ -36,23 +36,19 @@ class Uvision5(Exporter):
3636

3737
MBED_CONFIG_HEADER_SUPPORTED = True
3838

39-
# backward compatibility with our scripts
40-
def __init__(self):
41-
self._targets = []
42-
43-
@property
44-
def TARGETS(self):
45-
if not hasattr(self, "_targets_supported"):
46-
self._targets_supported = []
39+
@ExporterTargetsProperty
40+
def TARGETS(cls):
41+
if not hasattr(cls, "_targets_supported"):
42+
cls._targets_supported = []
4743
for target in TARGET_NAMES:
4844
try:
4945
if (ProGenDef('uvision5').is_supported(str(TARGET_MAP[target])) or
5046
ProGenDef('uvision5').is_supported(TARGET_MAP[target].progen['target'])):
51-
self._targets_supported.append(target)
47+
cls._targets_supported.append(target)
5248
except AttributeError:
5349
# target is not supported yet
5450
continue
55-
return self._targets_supported
51+
return cls._targets_supported
5652

5753
def get_toolchain(self):
5854
return TARGET_MAP[self.target].default_toolchain

0 commit comments

Comments
 (0)