mirror of https://github.com/ARMmbed/mbed-os.git
Api tests modification and uLib related fixes
parent
50eb4f9da8
commit
7490b1c87f
|
@ -55,7 +55,11 @@ static SingletonPtr<PlatformMutex> _mutex;
|
||||||
# define PREFIX(x) _sys##x
|
# define PREFIX(x) _sys##x
|
||||||
# define OPEN_MAX _SYS_OPEN
|
# define OPEN_MAX _SYS_OPEN
|
||||||
# ifdef __MICROLIB
|
# ifdef __MICROLIB
|
||||||
# pragma import(__use_full_stdio)
|
# if __ARMCC_VERSION >= 6010050
|
||||||
|
asm(" .global __use_full_stdio\n");
|
||||||
|
# else
|
||||||
|
# pragma import(__use_full_stdio)
|
||||||
|
# endif
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
#elif defined(__ICCARM__)
|
#elif defined(__ICCARM__)
|
||||||
|
|
|
@ -130,7 +130,7 @@ def get_toolchain_name(target, toolchain_name):
|
||||||
if toolchain_name == "ARM":
|
if toolchain_name == "ARM":
|
||||||
return "ARM" #note that returning ARM here means, use ARMC5 toolchain
|
return "ARM" #note that returning ARM here means, use ARMC5 toolchain
|
||||||
else:
|
else:
|
||||||
return None #ARMC6 explicitly specified by user, but target doesnt seem to support ARMC6, so return error.
|
return "ARMC6" #ARMC6 explicitly specified by user, try ARMC6 anyway although the target doesnt explicitly specify ARMC6, as ARMC6 is our default ARM toolchain
|
||||||
elif toolchain_name == "uARM":
|
elif toolchain_name == "uARM":
|
||||||
if ("ARMC5" in target.supported_toolchains):
|
if ("ARMC5" in target.supported_toolchains):
|
||||||
return "uARM" #use ARM_MICRO to use AC5+microlib
|
return "uARM" #use ARM_MICRO to use AC5+microlib
|
||||||
|
@ -343,8 +343,7 @@ def prepare_toolchain(src_paths, build_dir, target, toolchain_name,
|
||||||
target.name, toolchain_name))
|
target.name, toolchain_name))
|
||||||
|
|
||||||
toolchain_name = get_toolchain_name(target, toolchain_name)
|
toolchain_name = get_toolchain_name(target, toolchain_name)
|
||||||
notify.debug("Selected toolchain: %s" % (toolchain_name))
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
cur_tc = TOOLCHAIN_CLASSES[toolchain_name]
|
cur_tc = TOOLCHAIN_CLASSES[toolchain_name]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
|
|
@ -41,9 +41,17 @@ from tools.notifier.mock import MockNotifier
|
||||||
|
|
||||||
ALPHABET = [char for char in printable if char not in [u'.', u'/', u'\\']]
|
ALPHABET = [char for char in printable if char not in [u'.', u'/', u'\\']]
|
||||||
|
|
||||||
|
#Create a global test target
|
||||||
|
test_target_map = TARGET_MAP["K64F"]
|
||||||
|
#We have to add ARMC5,UARM here to supported_toolchains, otherwise the creation of ARM class would fail as it won't find ARMC5 entry in supported_toolchains
|
||||||
|
#We also have to add uARM, cause, ARM_MICRO class would check for both uARM and ARMC5 in supported_toolchains(as ARM_MICRO represents ARMC5+Micro).
|
||||||
|
#And do this globally here so all tests can use this
|
||||||
|
test_target_map.supported_toolchains.append("ARMC5")
|
||||||
|
test_target_map.supported_toolchains.append("uARM")
|
||||||
|
|
||||||
|
|
||||||
@patch('tools.toolchains.arm.run_cmd')
|
@patch('tools.toolchains.arm.run_cmd')
|
||||||
def test_arm_version_check(_run_cmd):
|
def test_armc5_version_check(_run_cmd):
|
||||||
set_targets_json_location()
|
set_targets_json_location()
|
||||||
_run_cmd.return_value = ("""
|
_run_cmd.return_value = ("""
|
||||||
Product: ARM Compiler 5.06
|
Product: ARM Compiler 5.06
|
||||||
|
@ -51,7 +59,10 @@ def test_arm_version_check(_run_cmd):
|
||||||
Tool: armcc [4d3621]
|
Tool: armcc [4d3621]
|
||||||
""", "", 0)
|
""", "", 0)
|
||||||
notifier = MockNotifier()
|
notifier = MockNotifier()
|
||||||
toolchain = TOOLCHAIN_CLASSES["ARM"](TARGET_MAP["K64F"], notify=notifier)
|
target_map = TARGET_MAP["K64F"]
|
||||||
|
#We have to add ARMC5 here to supported_toolchains, otherwise the creation of ARM class would fail as it wont find ARMC5 entry in supported_toolchains
|
||||||
|
target_map.supported_toolchains.append("ARMC5")
|
||||||
|
toolchain = TOOLCHAIN_CLASSES["ARM"](target_map, notify=notifier)
|
||||||
toolchain.version_check()
|
toolchain.version_check()
|
||||||
assert notifier.messages == []
|
assert notifier.messages == []
|
||||||
_run_cmd.return_value = ("""
|
_run_cmd.return_value = ("""
|
||||||
|
@ -69,6 +80,20 @@ def test_arm_version_check(_run_cmd):
|
||||||
toolchain.version_check()
|
toolchain.version_check()
|
||||||
assert len(notifier.messages) == 1
|
assert len(notifier.messages) == 1
|
||||||
|
|
||||||
|
@patch('tools.toolchains.arm.run_cmd')
|
||||||
|
def test_armc6_version_check(_run_cmd):
|
||||||
|
set_targets_json_location()
|
||||||
|
notifier = MockNotifier()
|
||||||
|
print(TARGET_MAP["K64F"])
|
||||||
|
toolchain = TOOLCHAIN_CLASSES["ARMC6"](TARGET_MAP["K64F"], notify=notifier)
|
||||||
|
print(toolchain)
|
||||||
|
_run_cmd.return_value = ("""
|
||||||
|
Product: ARM Compiler 6.11 Professional
|
||||||
|
Component: ARM Compiler 6.11
|
||||||
|
Tool: armclang [5d3b4200]
|
||||||
|
""", "", 0)
|
||||||
|
toolchain.version_check()
|
||||||
|
assert notifier.messages == []
|
||||||
|
|
||||||
@patch('tools.toolchains.iar.run_cmd')
|
@patch('tools.toolchains.iar.run_cmd')
|
||||||
def test_iar_version_check(_run_cmd):
|
def test_iar_version_check(_run_cmd):
|
||||||
|
@ -141,7 +166,7 @@ def test_toolchain_profile_c(profile, source_file):
|
||||||
set_targets_json_location()
|
set_targets_json_location()
|
||||||
with patch('os.mkdir') as _mkdir:
|
with patch('os.mkdir') as _mkdir:
|
||||||
for _, tc_class in TOOLCHAIN_CLASSES.items():
|
for _, tc_class in TOOLCHAIN_CLASSES.items():
|
||||||
toolchain = tc_class(TARGET_MAP["K64F"], build_profile=profile,
|
toolchain = tc_class(test_target_map, build_profile=profile,
|
||||||
notify=MockNotifier())
|
notify=MockNotifier())
|
||||||
toolchain.inc_md5 = ""
|
toolchain.inc_md5 = ""
|
||||||
toolchain.build_dir = ""
|
toolchain.build_dir = ""
|
||||||
|
@ -173,7 +198,7 @@ def test_toolchain_profile_cpp(profile, source_file):
|
||||||
to_compile = os.path.join(*filename)
|
to_compile = os.path.join(*filename)
|
||||||
with patch('os.mkdir') as _mkdir:
|
with patch('os.mkdir') as _mkdir:
|
||||||
for _, tc_class in TOOLCHAIN_CLASSES.items():
|
for _, tc_class in TOOLCHAIN_CLASSES.items():
|
||||||
toolchain = tc_class(TARGET_MAP["K64F"], build_profile=profile,
|
toolchain = tc_class(test_target_map, build_profile=profile,
|
||||||
notify=MockNotifier())
|
notify=MockNotifier())
|
||||||
toolchain.inc_md5 = ""
|
toolchain.inc_md5 = ""
|
||||||
toolchain.build_dir = ""
|
toolchain.build_dir = ""
|
||||||
|
@ -205,7 +230,7 @@ def test_toolchain_profile_asm(profile, source_file):
|
||||||
to_compile = os.path.join(*filename)
|
to_compile = os.path.join(*filename)
|
||||||
with patch('os.mkdir') as _mkdir:
|
with patch('os.mkdir') as _mkdir:
|
||||||
for _, tc_class in TOOLCHAIN_CLASSES.items():
|
for _, tc_class in TOOLCHAIN_CLASSES.items():
|
||||||
toolchain = tc_class(TARGET_MAP["K64F"], build_profile=profile,
|
toolchain = tc_class(test_target_map, build_profile=profile,
|
||||||
notify=MockNotifier())
|
notify=MockNotifier())
|
||||||
toolchain.inc_md5 = ""
|
toolchain.inc_md5 = ""
|
||||||
toolchain.build_dir = ""
|
toolchain.build_dir = ""
|
||||||
|
@ -225,7 +250,7 @@ def test_toolchain_profile_asm(profile, source_file):
|
||||||
parameter)
|
parameter)
|
||||||
|
|
||||||
for name, Class in TOOLCHAIN_CLASSES.items():
|
for name, Class in TOOLCHAIN_CLASSES.items():
|
||||||
CLS = Class(TARGET_MAP["K64F"], notify=MockNotifier())
|
CLS = Class(test_target_map, notify=MockNotifier())
|
||||||
assert name == CLS.name or name == LEGACY_TOOLCHAIN_NAMES[CLS.name]
|
assert name == CLS.name or name == LEGACY_TOOLCHAIN_NAMES[CLS.name]
|
||||||
|
|
||||||
@given(fixed_dictionaries({
|
@given(fixed_dictionaries({
|
||||||
|
@ -245,7 +270,7 @@ def test_toolchain_profile_ld(profile, source_file):
|
||||||
with patch('os.mkdir') as _mkdir,\
|
with patch('os.mkdir') as _mkdir,\
|
||||||
patch('tools.toolchains.mbedToolchain.default_cmd') as _dflt_cmd:
|
patch('tools.toolchains.mbedToolchain.default_cmd') as _dflt_cmd:
|
||||||
for _, tc_class in TOOLCHAIN_CLASSES.items():
|
for _, tc_class in TOOLCHAIN_CLASSES.items():
|
||||||
toolchain = tc_class(TARGET_MAP["K64F"], build_profile=profile,
|
toolchain = tc_class(test_target_map, build_profile=profile,
|
||||||
notify=MockNotifier())
|
notify=MockNotifier())
|
||||||
toolchain.RESPONSE_FILES = False
|
toolchain.RESPONSE_FILES = False
|
||||||
toolchain.inc_md5 = ""
|
toolchain.inc_md5 = ""
|
||||||
|
@ -264,7 +289,7 @@ def test_toolchain_profile_ld(profile, source_file):
|
||||||
parameter)
|
parameter)
|
||||||
|
|
||||||
for name, Class in TOOLCHAIN_CLASSES.items():
|
for name, Class in TOOLCHAIN_CLASSES.items():
|
||||||
CLS = Class(TARGET_MAP["K64F"], notify=MockNotifier())
|
CLS = Class(test_target_map, notify=MockNotifier())
|
||||||
assert name == CLS.name or name == LEGACY_TOOLCHAIN_NAMES[CLS.name]
|
assert name == CLS.name or name == LEGACY_TOOLCHAIN_NAMES[CLS.name]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -390,10 +390,14 @@ class ARMC6(ARM_STD):
|
||||||
self.flags['common'].append("-DMBED_RTOS_SINGLE_THREAD")
|
self.flags['common'].append("-DMBED_RTOS_SINGLE_THREAD")
|
||||||
if "-D__MICROLIB" not in self.flags['common']:
|
if "-D__MICROLIB" not in self.flags['common']:
|
||||||
self.flags['common'].append("-D__MICROLIB")
|
self.flags['common'].append("-D__MICROLIB")
|
||||||
if "-Wl,--library_type=microlib" not in self.flags['ld']:
|
if "--library_type=microlib" not in self.flags['ld']:
|
||||||
self.flags['ld'].append("-Wl,--library_type=microlib")
|
self.flags['ld'].append("--library_type=microlib")
|
||||||
if "-Wl,--library_type=microlib" not in self.flags['common']:
|
if "-Wl,--library_type=microlib" not in self.flags['c']:
|
||||||
self.flags['common'].append("-Wl,--library_type=microlib")
|
self.flags['c'].append("-Wl,--library_type=microlib")
|
||||||
|
if "-Wl,--library_type=microlib" not in self.flags['cxx']:
|
||||||
|
self.flags['cxx'].append("-Wl,--library_type=microlib")
|
||||||
|
if "--library_type=microlib" not in self.flags['asm']:
|
||||||
|
self.flags['asm'].append("--library_type=microlib")
|
||||||
|
|
||||||
core = target.core
|
core = target.core
|
||||||
if CORE_ARCH[target.core] == 8:
|
if CORE_ARCH[target.core] == 8:
|
||||||
|
@ -470,7 +474,10 @@ class ARMC6(ARM_STD):
|
||||||
self.elf2bin = join(TOOLCHAIN_PATHS["ARMC6"], "fromelf")
|
self.elf2bin = join(TOOLCHAIN_PATHS["ARMC6"], "fromelf")
|
||||||
|
|
||||||
def _get_toolchain_labels(self):
|
def _get_toolchain_labels(self):
|
||||||
return ["ARM", "ARM_STD", "ARMC6"]
|
if getattr(self.target, "default_toolchain", "ARM") == "uARM":
|
||||||
|
return ["ARM", "ARM_MICRO"]
|
||||||
|
else:
|
||||||
|
return ["ARM", "ARM_STD"]
|
||||||
|
|
||||||
def parse_dependencies(self, dep_path):
|
def parse_dependencies(self, dep_path):
|
||||||
return mbedToolchain.parse_dependencies(self, dep_path)
|
return mbedToolchain.parse_dependencies(self, dep_path)
|
||||||
|
|
Loading…
Reference in New Issue