Prepare support for ARMCC 5.03 (mainline microlib)

pull/4/head
Emilio Monti 2013-04-24 15:29:23 +01:00
parent a44371aa5c
commit a6cad7b15e
2 changed files with 21 additions and 3 deletions

View File

@ -46,9 +46,17 @@
using namespace mbed; using namespace mbed;
#if defined(__MICROLIB) && (__ARMCC_VERSION>5030000)
// Before version 5.03, we were using a patched version of microlib with proper names
extern const char __stdin_name[] = ":tt";
extern const char __stdout_name[] = ":tt";
extern const char __stderr_name[] = ":tt";
#else
extern const char __stdin_name[] = "/stdin"; extern const char __stdin_name[] = "/stdin";
extern const char __stdout_name[] = "/stdout"; extern const char __stdout_name[] = "/stdout";
extern const char __stderr_name[] = "/stderr"; extern const char __stderr_name[] = "/stderr";
#endif
/* newlib has the filehandle field in the FILE struct as a short, so /* newlib has the filehandle field in the FILE struct as a short, so
* we can't just return a Filehandle* from _open and instead have to * we can't just return a Filehandle* from _open and instead have to

View File

@ -128,7 +128,7 @@ class mbedToolchain:
CORTEX_SYMBOLS = { CORTEX_SYMBOLS = {
"Cortex-M3" : ["__CORTEX_M3", "ARM_MATH_CM3"], "Cortex-M3" : ["__CORTEX_M3", "ARM_MATH_CM3"],
"Cortex-M0" : ["__CORTEX_M0", "ARM_MATH_CM0"], "Cortex-M0" : ["__CORTEX_M0", "ARM_MATH_CM0"],
"Cortex-M0+": ["__CORTEX_M0", "ARM_MATH_CM0"], "Cortex-M0+": ["__CORTEX_M0PLUS", "ARM_MATH_CM0"],
} }
def __init__(self, target, notify=None): def __init__(self, target, notify=None):
@ -486,6 +486,7 @@ class ARM_STD(ARM):
class ARM_MICRO(ARM): class ARM_MICRO(ARM):
NAME = 'uARM' # In the future we want to rename it ARM_MICRO NAME = 'uARM' # In the future we want to rename it ARM_MICRO
PATCHED_LIBRARY = True
def __init__(self, target, notify=None): def __init__(self, target, notify=None):
ARM.__init__(self, target, notify) ARM.__init__(self, target, notify)
@ -496,7 +497,12 @@ class ARM_MICRO(ARM):
self.cppc += ["--library_type=microlib", "-D__MICROLIB"] self.cppc += ["--library_type=microlib", "-D__MICROLIB"]
# Linker # Linker
self.ld += ["--library_type=microlib", "--noscanlib"] self.ld.append("--library_type=microlib")
# We had to patch microlib to add C++ support
# In later releases this patch should have entered mainline
if ARM_MICRO.PATCHED_LIBRARY:
self.ld.append("--noscanlib")
# System Libraries # System Libraries
self.sys_libs.extend([join(MY_ARM_CLIB, lib+".l") for lib in ["mc_p", "mf_p", "m_ps"]]) self.sys_libs.extend([join(MY_ARM_CLIB, lib+".l") for lib in ["mc_p", "mf_p", "m_ps"]])
@ -656,10 +662,14 @@ class GCC_CW(GCC):
def __init__(self, target, notify=None): def __init__(self, target, notify=None):
tool_path = join(GCC_CW_PATH, "Cross_Tools/arm-none-eabi-gcc-4_6_2/bin") tool_path = join(GCC_CW_PATH, "Cross_Tools/arm-none-eabi-gcc-4_6_2/bin")
GCC.__init__(self, target, notify, tool_path) GCC.__init__(self, target, notify, tool_path)
self.CIRCULAR_DEPENDENCIES = False
# Compiler
self.cc.append('-mfloat-abi=soft')
# Linker
lib_path = join(GCC_CW_PATH, "MCU/ARM_GCC_Support/ewl/lib", GCC_CW.ARCH_LIB[target.core]) lib_path = join(GCC_CW_PATH, "MCU/ARM_GCC_Support/ewl/lib", GCC_CW.ARCH_LIB[target.core])
self.sys_libs = [] self.sys_libs = []
self.CIRCULAR_DEPENDENCIES = False
self.ld = [join(tool_path, "arm-none-eabi-g++"), self.ld = [join(tool_path, "arm-none-eabi-g++"),
"-Xlinker", "--gc-sections", "-Xlinker", "--gc-sections",
"-L%s" % lib_path, "-L%s" % lib_path,