Skip to content

Commit 779ee84

Browse files
authored
Merge pull request #5797 from hosse005/master
ARMC5+6: Specify CPU for ARM scatter file preprocessor
2 parents 1d759d0 + 9b8ba4d commit 779ee84

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed

tools/export/makefile/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,9 +228,10 @@ def prepare_sys_lib(libname):
228228

229229
def generate(self):
230230
if self.resources.linker_script:
231+
sct_file = self.resources.linker_script
231232
new_script = self.toolchain.correct_scatter_shebang(
232-
self.resources.linker_script)
233-
if new_script is not self.resources.linker_script:
233+
sct_file, join(self.resources.file_basepath[sct_file], "BUILD"))
234+
if new_script is not sct_file:
234235
self.resources.linker_script = new_script
235236
self.generated_files.append(new_script)
236237
return super(Arm, self).generate()

tools/export/uvision/__init__.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,12 +217,14 @@ def generate(self):
217217
# UVFile tuples defined above
218218
'project_files': sorted(list(self.format_src(srcs).iteritems()),
219219
key=lambda (group, _): group.lower()),
220-
'linker_script':self.toolchain.correct_scatter_shebang(
221-
self.resources.linker_script),
222220
'include_paths': '; '.join(self.resources.inc_dirs).encode('utf-8'),
223221
'device': DeviceUvision(self.target),
224222
}
225-
self.generated_files.append(ctx['linker_script'])
223+
sct_file = self.resources.linker_script
224+
ctx['linker_script'] = self.toolchain.correct_scatter_shebang(
225+
sct_file, self.resources.file_basepath[sct_file])
226+
if ctx['linker_script'] != sct_file:
227+
self.generated_files.append(ctx['linker_script'])
226228
core = ctx['device'].core
227229
ctx['cputype'] = core.rstrip("FD")
228230
if core.endswith("FD"):

tools/toolchains/arm.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
"""
1717
import re
1818
from copy import copy
19-
from os.path import join, dirname, splitext, basename, exists
20-
from os import makedirs, write
19+
from os.path import join, dirname, splitext, basename, exists, relpath
20+
from os import makedirs, write, curdir
2121
from tempfile import mkstemp
2222

2323
from tools.toolchains import mbedToolchain, TOOLCHAIN_PATHS
@@ -81,6 +81,8 @@ def __init__(self, target, notify=None, macros=None,
8181
self.ar = join(ARM_BIN, "armar")
8282
self.elf2bin = join(ARM_BIN, "fromelf")
8383

84+
self.SHEBANG += " --cpu=%s" % cpu
85+
8486
def parse_dependencies(self, dep_path):
8587
dependencies = []
8688
for line in open(dep_path).readlines():
@@ -182,7 +184,7 @@ def compile_c(self, source, object, includes):
182184
def compile_cpp(self, source, object, includes):
183185
return self.compile(self.cppc, source, object, includes)
184186

185-
def correct_scatter_shebang(self, scatter_file):
187+
def correct_scatter_shebang(self, scatter_file, base_path=curdir):
186188
"""Correct the shebang at the top of a scatter file.
187189
188190
Positional arguments:
@@ -196,16 +198,19 @@ def correct_scatter_shebang(self, scatter_file):
196198
"""
197199
with open(scatter_file, "rb") as input:
198200
lines = input.readlines()
199-
if (lines[0].startswith(self.SHEBANG) or
200-
not lines[0].startswith("#!")):
201+
if (lines[0].startswith(self.SHEBANG) or
202+
not lines[0].startswith("#!")):
201203
return scatter_file
202204
else:
203205
new_scatter = join(self.build_dir, ".link_script.sct")
206+
self.SHEBANG += " -I %s" % relpath(dirname(scatter_file),
207+
base_path)
204208
if self.need_update(new_scatter, [scatter_file]):
205209
with open(new_scatter, "wb") as out:
206210
out.write(self.SHEBANG)
207211
out.write("\n")
208212
out.write("".join(lines[1:]))
213+
209214
return new_scatter
210215

211216
@hook_tool
@@ -310,15 +315,19 @@ def __init__(self, target, *args, **kwargs):
310315
if target.core.lower().endswith("fd"):
311316
self.flags['common'].append("-mcpu=%s" % target.core.lower()[:-2])
312317
self.flags['ld'].append("--cpu=%s" % target.core.lower()[:-2])
318+
self.SHEBANG += " -mcpu=%s" % target.core.lower()[:-2]
313319
elif target.core.lower().endswith("f"):
314320
self.flags['common'].append("-mcpu=%s" % target.core.lower()[:-1])
315321
self.flags['ld'].append("--cpu=%s" % target.core.lower()[:-1])
322+
self.SHEBANG += " -mcpu=%s" % target.core.lower()[:-1]
316323
elif target.core.lower().endswith("ns"):
317324
self.flags['common'].append("-mcpu=%s" % target.core.lower()[:-3])
318325
self.flags['ld'].append("--cpu=%s" % target.core.lower()[:-3])
326+
self.SHEBANG += " -mcpu=%s" % target.core.lower()[:-3]
319327
else:
320328
self.flags['common'].append("-mcpu=%s" % target.core.lower())
321329
self.flags['ld'].append("--cpu=%s" % target.core.lower())
330+
self.SHEBANG += " -mcpu=%s" % target.core.lower()
322331

323332
if target.core == "Cortex-M4F":
324333
self.flags['common'].append("-mfpu=fpv4-sp-d16")
@@ -356,7 +365,6 @@ def __init__(self, target, *args, **kwargs):
356365
self.ar = [join(TOOLCHAIN_PATHS["ARMC6"], "armar")]
357366
self.elf2bin = join(TOOLCHAIN_PATHS["ARMC6"], "fromelf")
358367

359-
360368
def parse_dependencies(self, dep_path):
361369
return mbedToolchain.parse_dependencies(self, dep_path)
362370

0 commit comments

Comments
 (0)