Skip to content

Commit 6f14439

Browse files
committed
Merge pull request #1691 from 0xc0170/dev_flags_uvision
Flags unification for uvision
2 parents d1dc989 + 690b8f0 commit 6f14439

File tree

2 files changed

+36
-26
lines changed

2 files changed

+36
-26
lines changed

workspace_tools/export/uvision4.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,16 @@ def generate(self):
6464

6565
project_data['tool_specific'] = {}
6666
project_data['tool_specific'].update(tool_specific)
67+
68+
# get flags from toolchain and apply
69+
project_data['tool_specific']['uvision']['misc'] = {}
70+
project_data['tool_specific']['uvision']['misc']['asm_flags'] = self.toolchain.flags['common'] + self.toolchain.flags['asm']
71+
project_data['tool_specific']['uvision']['misc']['c_flags'] = self.toolchain.flags['common'] + self.toolchain.flags['c']
72+
# not compatible with c99 flag set in the template
73+
project_data['tool_specific']['uvision']['misc']['c_flags'].remove("--c99")
74+
project_data['tool_specific']['uvision']['misc']['cxx_flags'] = self.toolchain.flags['common'] + self.toolchain.flags['ld']
75+
project_data['tool_specific']['uvision']['misc']['ld_flags'] = self.toolchain.flags['ld']
76+
6777
i = 0
6878
for macro in project_data['common']['macros']:
6979
# armasm does not like floating numbers in macros, timestamp to int

workspace_tools/toolchains/arm.py

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,16 @@ class ARM(mbedToolchain):
3030
DIAGNOSTIC_PATTERN = re.compile('"(?P<file>[^"]+)", line (?P<line>\d+)( \(column (?P<column>\d+)\)|): (?P<severity>Warning|Error): (?P<message>.+)')
3131
DEP_PATTERN = re.compile('\S+:\s(?P<file>.+)\n')
3232

33+
DEFAULT_FLAGS = {
34+
'common': ["-c", "--gnu", "-Otime", "--split_sections", "--apcs=interwork",
35+
"--brief_diagnostics", "--restrict", "--multibyte_chars"],
36+
'asm': ['-I%s' % ARM_INC],
37+
'c': ["--md", "--no_depend_system_headers", '-I%s' % ARM_INC,
38+
"--c99", "-D__ASSERT_MSG" ],
39+
'cxx': ["--cpp", "--no_rtti", "-D__ASSERT_MSG"],
40+
'ld': [],
41+
}
42+
3343
def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
3444
mbedToolchain.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
3545

@@ -43,33 +53,25 @@ def __init__(self, target, options=None, notify=None, macros=None, silent=False,
4353
cpu = target.core
4454

4555
main_cc = join(ARM_BIN, "armcc")
46-
common = ["-c",
47-
"--cpu=%s" % cpu, "--gnu",
48-
"-Otime", "--split_sections", "--apcs=interwork",
49-
"--brief_diagnostics", "--restrict", "--multibyte_chars"
50-
]
5156

57+
self.flags = self.DEFAULT_FLAGS
58+
self.flags['common'] += ["--cpu=%s" % cpu]
5259
if "save-asm" in self.options:
53-
common.extend(["--asm", "--interleave"])
60+
self.flags['common'].extend(["--asm", "--interleave"])
5461

5562
if "debug-info" in self.options:
56-
common.append("-g")
57-
common.append("-O0")
63+
self.flags['common'].append("-g")
64+
self.flags['common'].append("-O0")
5865
else:
59-
common.append("-O3")
60-
61-
common_c = [
62-
"--md", "--no_depend_system_headers",
63-
'-I%s' % ARM_INC
64-
]
66+
self.flags['common'].append("-O3")
6567

66-
self.asm = [main_cc] + common + ['-I%s' % ARM_INC]
68+
self.asm = [main_cc] + self.flags['common'] + self.flags['asm']
6769
if not "analyze" in self.options:
68-
self.cc = [main_cc] + common + common_c + ["--c99"]
69-
self.cppc = [main_cc] + common + common_c + ["--cpp", "--no_rtti"]
70+
self.cc = [main_cc] + self.flags['common'] + self.flags['c']
71+
self.cppc = [main_cc] + self.flags['common'] + self.flags['c'] + self.flags['cxx']
7072
else:
71-
self.cc = [join(GOANNA_PATH, "goannacc"), "--with-cc=" + main_cc.replace('\\', '/'), "--dialect=armcc", '--output-format="%s"' % self.GOANNA_FORMAT] + common + common_c + ["--c99"]
72-
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"]
73+
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']
74+
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']
7375

7476
self.ld = [join(ARM_BIN, "armlink")]
7577
self.sys_libs = []
@@ -151,8 +153,6 @@ def binary(self, resources, elf, bin):
151153
class ARM_STD(ARM):
152154
def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
153155
ARM.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
154-
self.cc += ["-D__ASSERT_MSG"]
155-
self.cppc += ["-D__ASSERT_MSG"]
156156
self.ld.append("--libpath=%s" % ARM_LIB)
157157

158158

@@ -163,17 +163,17 @@ def __init__(self, target, options=None, notify=None, macros=None, silent=False,
163163
ARM.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
164164

165165
# Compiler
166-
self.asm += ["-D__MICROLIB"]
167-
self.cc += ["--library_type=microlib", "-D__MICROLIB", "-D__ASSERT_MSG"]
168-
self.cppc += ["--library_type=microlib", "-D__MICROLIB", "-D__ASSERT_MSG"]
166+
self.flags['asm'] += ["-D__MICROLIB"]
167+
self.flags['c'] += ["--library_type=microlib", "-D__MICROLIB"]
168+
self.flags['cxx'] += ["--library_type=microlib", "-D__MICROLIB"]
169169

170170
# Linker
171-
self.ld.append("--library_type=microlib")
171+
self.flags['ld'].append("--library_type=microlib")
172172

173173
# We had to patch microlib to add C++ support
174174
# In later releases this patch should have entered mainline
175175
if ARM_MICRO.PATCHED_LIBRARY:
176-
self.ld.append("--noscanlib")
176+
self.flags['ld'].append("--noscanlib")
177177

178178
# System Libraries
179179
self.sys_libs.extend([join(MY_ARM_CLIB, lib+".l") for lib in ["mc_p", "mf_p", "m_ps"]])

0 commit comments

Comments
 (0)