Fixed toolchain flags so exporters can use them

pull/1893/head
Mihail Stoyanov 2016-06-10 13:12:21 +01:00
parent 75a18ff1a3
commit 51c10165ca
3 changed files with 46 additions and 33 deletions

View File

@ -21,6 +21,7 @@ from tools.toolchains import mbedToolchain
from tools.settings import ARM_BIN, ARM_INC, ARM_LIB, MY_ARM_CLIB, ARM_CPPLIB, GOANNA_PATH from tools.settings import ARM_BIN, ARM_INC, ARM_LIB, MY_ARM_CLIB, ARM_CPPLIB, GOANNA_PATH
from tools.hooks import hook_tool from tools.hooks import hook_tool
from tools.utils import mkdir from tools.utils import mkdir
import copy
class ARM(mbedToolchain): class ARM(mbedToolchain):
LINKER_EXT = '.sct' LINKER_EXT = '.sct'
@ -30,6 +31,17 @@ class ARM(mbedToolchain):
DIAGNOSTIC_PATTERN = re.compile('"(?P<file>[^"]+)", line (?P<line>\d+)( \(column (?P<column>\d+)\)|): (?P<severity>Warning|Error): (?P<message>.+)') DIAGNOSTIC_PATTERN = re.compile('"(?P<file>[^"]+)", line (?P<line>\d+)( \(column (?P<column>\d+)\)|): (?P<severity>Warning|Error): (?P<message>.+)')
DEP_PATTERN = re.compile('\S+:\s(?P<file>.+)\n') DEP_PATTERN = re.compile('\S+:\s(?P<file>.+)\n')
DEFAULT_FLAGS = {
'common': ["-c", "--gnu",
"-Otime", "--split_sections", "--apcs=interwork",
"--brief_diagnostics", "--restrict", "--multibyte_chars", "-I", "\""+ARM_INC+"\""],
'asm': [],
'c': ["--md", "--no_depend_system_headers", "--c99", "-D__ASSERT_MSG"],
'cxx': ["--cpp", "--no_rtti"],
'ld': [],
}
def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False): def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
mbedToolchain.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose) mbedToolchain.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
@ -43,34 +55,25 @@ class ARM(mbedToolchain):
cpu = target.core cpu = target.core
main_cc = join(ARM_BIN, "armcc") main_cc = join(ARM_BIN, "armcc")
common = ["-c",
"--cpu=%s" % cpu, "--gnu",
"-Otime", "--split_sections", "--apcs=interwork",
"--brief_diagnostics", "--restrict", "--multibyte_chars"
]
self.flags = copy.deepcopy(self.DEFAULT_FLAGS)
self.flags['common'] += ["--cpu=%s" % cpu]
if "save-asm" in self.options: if "save-asm" in self.options:
common.extend(["--asm", "--interleave"]) self.flags['common'].extend(["--asm", "--interleave"])
if "debug-info" in self.options: if "debug-info" in self.options:
common.append("-O0") self.flags['common'].append("-g")
self.flags['c'].append("-O0")
else: else:
common.append("-O3") self.flags['c'].append("-O3")
# add debug symbols for all builds
common.append("-g")
common_c = [ self.asm = [main_cc] + self.flags['common'] + self.flags['asm']
"--md", "--no_depend_system_headers",
'-I%s' % ARM_INC
]
self.asm = [main_cc] + common + ['-I%s' % ARM_INC]
if not "analyze" in self.options: if not "analyze" in self.options:
self.cc = [main_cc] + common + common_c + ["--c99"] self.cc = [main_cc] + self.flags['common'] + self.flags['c']
self.cppc = [main_cc] + common + common_c + ["--cpp", "--no_rtti"] self.cppc = [main_cc] + self.flags['common'] + self.flags['c'] + self.flags['cxx']
else: else:
self.cc = [join(GOANNA_PATH, "goannacc"), "--with-cc=" + main_cc.replace('\\', '/'), "--dialect=armcc", '--output-format="%s"' % self.GOANNA_FORMAT] + common + common_c + ["--c99"] self.cc = [join(GOANNA_PATH, "goannacc"), "--with-cc=" + main_cc.replace('\\', '/'), "--dialect=armcc", '--output-format="%s"' % self.GOANNA_FORMAT] + self.flags['common'] + self.flags['c']
self.cppc= [join(GOANNA_PATH, "goannac++"), "--with-cxx=" + main_cc.replace('\\', '/'), "--dialect=armcc", '--output-format="%s"' % self.GOANNA_FORMAT] + common + common_c + ["--cpp", "--no_rtti"] self.cppc= [join(GOANNA_PATH, "goannac++"), "--with-cxx=" + main_cc.replace('\\', '/'), "--dialect=armcc", '--output-format="%s"' % self.GOANNA_FORMAT] + self.flags['common'] + self.flags['c'] + self.flags['cxx']
self.ld = [join(ARM_BIN, "armlink")] self.ld = [join(ARM_BIN, "armlink")]
self.sys_libs = [] self.sys_libs = []
@ -214,8 +217,11 @@ class ARM(mbedToolchain):
class ARM_STD(ARM): class ARM_STD(ARM):
def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False): def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
ARM.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose) ARM.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
self.cc += ["-D__ASSERT_MSG"]
self.cppc += ["-D__ASSERT_MSG"] # Extend flags
self.flags['ld'].extend(["--libpath", ARM_LIB])
# Run-time values
self.ld.extend(["--libpath", ARM_LIB]) self.ld.extend(["--libpath", ARM_LIB])
@ -225,18 +231,24 @@ class ARM_MICRO(ARM):
def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False): def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
ARM.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose) ARM.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
# Compiler # Extend flags
self.asm += ["-D__MICROLIB"] self.flags['common'].extend(["-D__MICROLIB"])
self.cc += ["--library_type=microlib", "-D__MICROLIB", "-D__ASSERT_MSG"] self.flags['c'].extend(["--library_type=microlib"])
self.cppc += ["--library_type=microlib", "-D__MICROLIB", "-D__ASSERT_MSG"] self.flags['ld'].extend(["--library_type=microlib"])
# Linker # Run-time values
self.ld.append("--library_type=microlib") self.asm += ["-D__MICROLIB"]
self.cc += ["-D__MICROLIB", "--library_type=microlib"]
self.cppc += ["-D__MICROLIB", "--library_type=microlib"]
self.ld += ["--library_type=microlib"]
# We had to patch microlib to add C++ support # We had to patch microlib to add C++ support
# In later releases this patch should have entered mainline # In later releases this patch should have entered mainline
if ARM_MICRO.PATCHED_LIBRARY: if ARM_MICRO.PATCHED_LIBRARY:
self.ld.append("--noscanlib") # Run-time values
self.flags['ld'].extend(["--noscanlib"])
# Run-time values
self.ld += ["--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"]])
@ -247,4 +259,7 @@ class ARM_MICRO(ARM):
elif target.core in ["Cortex-M0", "Cortex-M0+"]: elif target.core in ["Cortex-M0", "Cortex-M0+"]:
self.sys_libs.extend([join(ARM_CPPLIB, lib+".l") for lib in ["cpp_ps", "cpprt_p"]]) self.sys_libs.extend([join(ARM_CPPLIB, lib+".l") for lib in ["cpp_ps", "cpprt_p"]])
else: else:
# Run-time values
self.flags['ld'].extend(["--libpath", ARM_LIB])
# Run-time values
self.ld.extend(["--libpath", ARM_LIB]) self.ld.extend(["--libpath", ARM_LIB])

View File

@ -74,11 +74,10 @@ class GCC(mbedToolchain):
common_flags.append("-save-temps") common_flags.append("-save-temps")
if "debug-info" in self.options: if "debug-info" in self.options:
common_flags.append("-g")
common_flags.append("-O0") common_flags.append("-O0")
else: else:
common_flags.append("-O2") common_flags.append("-O2")
# add debug symbols for all builds
common_flags.append("-g")
main_cc = join(tool_path, "arm-none-eabi-gcc") main_cc = join(tool_path, "arm-none-eabi-gcc")
main_cppc = join(tool_path, "arm-none-eabi-g++") main_cppc = join(tool_path, "arm-none-eabi-g++")

View File

@ -53,11 +53,10 @@ class IAR(mbedToolchain):
if "debug-info" in self.options: if "debug-info" in self.options:
c_flags.append("-r")
c_flags.append("-On") c_flags.append("-On")
else: else:
c_flags.append("-Oh") c_flags.append("-Oh")
# add debug symbols for all builds
c_flags.append("-r")
IAR_BIN = join(IAR_PATH, "bin") IAR_BIN = join(IAR_PATH, "bin")
main_cc = join(IAR_BIN, "iccarm") main_cc = join(IAR_BIN, "iccarm")