mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #9946 from bridadan/fix_make_armc6
Fix include paths for the assembler for makefilespull/10043/head
commit
b35b37d231
|
@ -18,7 +18,7 @@ from __future__ import print_function, absolute_import
|
||||||
from builtins import str
|
from builtins import str
|
||||||
|
|
||||||
from os.path import splitext, basename, relpath, join, abspath, dirname,\
|
from os.path import splitext, basename, relpath, join, abspath, dirname,\
|
||||||
exists
|
exists, normpath
|
||||||
from os import remove
|
from os import remove
|
||||||
import sys
|
import sys
|
||||||
from subprocess import check_output, CalledProcessError, Popen, PIPE
|
from subprocess import check_output, CalledProcessError, Popen, PIPE
|
||||||
|
@ -38,6 +38,15 @@ SHELL_ESCAPE_TABLE = {
|
||||||
def shell_escape(string):
|
def shell_escape(string):
|
||||||
return "".join(SHELL_ESCAPE_TABLE.get(char, char) for char in string)
|
return "".join(SHELL_ESCAPE_TABLE.get(char, char) for char in string)
|
||||||
|
|
||||||
|
def _fix_include_asm_flag(flag, ctx):
|
||||||
|
if flag.startswith('-I'):
|
||||||
|
new_path = normpath(join(ctx['vpath'][0], flag[2:]))
|
||||||
|
return "-I{}".format(new_path)
|
||||||
|
elif flag.startswith('--preinclude='):
|
||||||
|
new_path = normpath(join(ctx['vpath'][0], flag[13:]))
|
||||||
|
return "--preinclude={}".format(new_path)
|
||||||
|
else:
|
||||||
|
return flag
|
||||||
|
|
||||||
class Makefile(Exporter):
|
class Makefile(Exporter):
|
||||||
"""Generic Makefile template that mimics the behavior of the python build
|
"""Generic Makefile template that mimics the behavior of the python build
|
||||||
|
@ -139,12 +148,14 @@ class Makefile(Exporter):
|
||||||
# Add the virtual path the the include option in the ASM flags
|
# Add the virtual path the the include option in the ASM flags
|
||||||
new_asm_flags = []
|
new_asm_flags = []
|
||||||
for flag in ctx['asm_flags']:
|
for flag in ctx['asm_flags']:
|
||||||
if flag.startswith('-I'):
|
if flag.startswith('--cpreproc_opts='):
|
||||||
new_asm_flags.append("-I{}/{}".format(ctx['vpath'][0], flag[2:]))
|
sub_flags = flag.split(',')
|
||||||
elif flag.startswith('--preinclude='):
|
new_sub_flags = []
|
||||||
new_asm_flags.append("--preinclude={}/{}".format(ctx['vpath'][0], flag[13:]))
|
for sub_flag in sub_flags:
|
||||||
|
new_sub_flags.append(_fix_include_asm_flag(sub_flag, ctx))
|
||||||
|
new_asm_flags.append(','.join(new_sub_flags))
|
||||||
else:
|
else:
|
||||||
new_asm_flags.append(flag)
|
new_asm_flags.append(_fix_include_asm_flag(flag, ctx))
|
||||||
ctx['asm_flags'] = new_asm_flags
|
ctx['asm_flags'] = new_asm_flags
|
||||||
|
|
||||||
for templatefile in \
|
for templatefile in \
|
||||||
|
@ -273,33 +284,37 @@ class Armc5(Arm):
|
||||||
NAME = 'Make-ARMc5'
|
NAME = 'Make-ARMc5'
|
||||||
TOOLCHAIN = "ARM"
|
TOOLCHAIN = "ARM"
|
||||||
PREPROCESS_ASM = True
|
PREPROCESS_ASM = True
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def is_target_supported(cls, target_name):
|
def is_target_supported(cls, target_name):
|
||||||
target = TARGET_MAP[target_name]
|
target = TARGET_MAP[target_name]
|
||||||
|
|
||||||
if int(target.build_tools_metadata["version"]) > 0:
|
if int(target.build_tools_metadata["version"]) > 0:
|
||||||
#Although toolchain name is set to ARM above we should check for ARMC5 for 5.12/onwards
|
#Although toolchain name is set to ARM above we should check for ARMC5 for 5.12/onwards
|
||||||
if "ARMC5" not in target.supported_toolchains:
|
if "ARMC5" not in target.supported_toolchains:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return apply_supported_whitelist(
|
arm_res = apply_supported_whitelist(
|
||||||
cls.TOOLCHAIN, cls.POST_BINARY_WHITELIST, target)
|
"ARM", cls.POST_BINARY_WHITELIST, target
|
||||||
|
)
|
||||||
|
armc5_res = apply_supported_whitelist(
|
||||||
|
"ARMC5", cls.POST_BINARY_WHITELIST, target
|
||||||
|
)
|
||||||
|
return arm_res or armc5_res
|
||||||
|
|
||||||
class Armc6(Arm):
|
class Armc6(Arm):
|
||||||
"""ARM Compiler 6 (armclang) specific generic makefile target"""
|
"""ARM Compiler 6 (armclang) specific generic makefile target"""
|
||||||
NAME = 'Make-ARMc6'
|
NAME = 'Make-ARMc6'
|
||||||
TOOLCHAIN = "ARMC6"
|
TOOLCHAIN = "ARMC6"
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def is_target_supported(cls, target_name):
|
def is_target_supported(cls, target_name):
|
||||||
target = TARGET_MAP[target_name]
|
target = TARGET_MAP[target_name]
|
||||||
|
|
||||||
if int(target.build_tools_metadata["version"]) > 0:
|
if int(target.build_tools_metadata["version"]) > 0:
|
||||||
if not (len(set(target.supported_toolchains).intersection(
|
if not (len(set(target.supported_toolchains).intersection(
|
||||||
set(["ARM", "ARMC6"]))) > 0):
|
set(["ARM", "ARMC6"]))) > 0):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if not apply_supported_whitelist(
|
if not apply_supported_whitelist(
|
||||||
cls.TOOLCHAIN, cls.POST_BINARY_WHITELIST, target):
|
cls.TOOLCHAIN, cls.POST_BINARY_WHITELIST, target):
|
||||||
#ARMC6 is not in the list, but also check for ARM as ARM represents ARMC6 for 5.12/onwards
|
#ARMC6 is not in the list, but also check for ARM as ARM represents ARMC6 for 5.12/onwards
|
||||||
|
@ -311,7 +326,7 @@ class Armc6(Arm):
|
||||||
else:
|
else:
|
||||||
return apply_supported_whitelist(
|
return apply_supported_whitelist(
|
||||||
cls.TOOLCHAIN, cls.POST_BINARY_WHITELIST, target)
|
cls.TOOLCHAIN, cls.POST_BINARY_WHITELIST, target)
|
||||||
|
|
||||||
|
|
||||||
class IAR(Makefile):
|
class IAR(Makefile):
|
||||||
"""IAR specific makefile target"""
|
"""IAR specific makefile target"""
|
||||||
|
|
Loading…
Reference in New Issue