mirror of https://github.com/ARMmbed/mbed-os.git
88 lines
2.7 KiB
Python
88 lines
2.7 KiB
Python
#!/usr/bin/env python
|
|
# Copyright (c) 2019 Arm Limited and Contributors. All rights reserved.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
"""Test the arm toolchain."""
|
|
|
|
import os
|
|
import sys
|
|
from unittest import TestCase
|
|
|
|
import mock
|
|
|
|
|
|
ROOT = os.path.abspath(
|
|
os.path.join(os.path.dirname(__file__), "..", "..", "..")
|
|
)
|
|
sys.path.insert(0, ROOT)
|
|
|
|
from tools.toolchains.arm import ARM_STD, ARM_MICRO, ARMC6
|
|
from tools.toolchains.gcc import GCC_ARM
|
|
from tools.toolchains.iar import IAR
|
|
|
|
|
|
class TestArmToolchain(TestCase):
|
|
"""Test Arm classes."""
|
|
|
|
def test_arm_minimal_printf(self):
|
|
"""Test that linker flags are correctly added to an instance of ARM."""
|
|
mock_target = mock.MagicMock()
|
|
mock_target.core = "Cortex-M4"
|
|
mock_target.printf_lib = "minimal-printf"
|
|
mock_target.supported_toolchains = ["ARM", "uARM", "ARMC5"]
|
|
|
|
arm_std_obj = ARM_STD(mock_target)
|
|
arm_micro_obj = ARM_MICRO(mock_target)
|
|
arm_c6_obj = ARMC6(mock_target)
|
|
|
|
self.assertIn("-DMBED_MINIMAL_PRINTF", arm_std_obj.flags["common"])
|
|
self.assertIn("-DMBED_MINIMAL_PRINTF", arm_micro_obj.flags["common"])
|
|
self.assertIn("-DMBED_MINIMAL_PRINTF", arm_c6_obj.flags["common"])
|
|
|
|
|
|
class TestGccToolchain(TestCase):
|
|
"""Test the GCC class."""
|
|
|
|
def test_gcc_minimal_printf(self):
|
|
"""Test that linker flags are correctly added to an instance of GCC_ARM."""
|
|
mock_target = mock.MagicMock()
|
|
mock_target.core = "Cortex-M4"
|
|
mock_target.printf_lib = "minimal-printf"
|
|
mock_target.supported_toolchains = ["GCC_ARM"]
|
|
mock_target.is_TrustZone_secure_target = False
|
|
|
|
gcc_obj = GCC_ARM(mock_target)
|
|
|
|
self.assertIn("-DMBED_MINIMAL_PRINTF", gcc_obj.flags["common"])
|
|
|
|
minimal_printf_wraps = [
|
|
"-Wl,--wrap,printf",
|
|
"-Wl,--wrap,sprintf",
|
|
"-Wl,--wrap,snprintf",
|
|
"-Wl,--wrap,vprintf",
|
|
"-Wl,--wrap,vsprintf",
|
|
"-Wl,--wrap,vsnprintf",
|
|
"-Wl,--wrap,fprintf",
|
|
"-Wl,--wrap,vfprintf",
|
|
]
|
|
|
|
for i in minimal_printf_wraps:
|
|
self.assertIn(i, gcc_obj.flags["ld"])
|
|
|
|
|
|
class TestIarToolchain(TestCase):
|
|
"""Test the IAR class."""
|
|
|
|
def test_iar_minimal_printf(self):
|
|
"""Test that linker flags are correctly added to an instance of GCC_ARM."""
|
|
mock_target = mock.MagicMock()
|
|
mock_target.core = "Cortex-M4"
|
|
mock_target.printf_lib = "minimal-printf"
|
|
mock_target.supported_toolchains = ["IAR"]
|
|
mock_target.is_TrustZone_secure_target = False
|
|
|
|
iar_obj = IAR(mock_target)
|
|
var = "-DMBED_MINIMAL_PRINTF"
|
|
self.assertIn("-DMBED_MINIMAL_PRINTF", iar_obj.flags["common"])
|