Merge pull request #3600 from theotherjimmy/refactor-sys-libs

[toolchains] Refactor sys libs
pull/3649/head
Martin Kojtal 2017-01-26 10:30:27 +02:00 committed by GitHub
commit 7316b89c1d
5 changed files with 22 additions and 7 deletions

View File

@ -80,7 +80,7 @@ SREC_CAT = srec_cat
{% endfor %}
LD_FLAGS :={%- block ld_flags -%} {{ld_flags|join(" ")}} {% endblock %}
{% block sys_libs -%}{%- endblock %}
LD_SYS_LIBS :={%- block sys_libs -%} {{ld_sys_libs|join(" ")}} {% endblock %}
# Tools and Flags
###############################################################################

View File

@ -52,6 +52,8 @@ class Makefile(Exporter):
libraries = [self.prepare_lib(basename(lib)) for lib
in self.resources.libraries]
sys_libs = [self.prepare_sys_lib(lib) for lib
in self.toolchain.sys_libs]
ctx = {
'name': self.project_name,
@ -61,6 +63,7 @@ class Makefile(Exporter):
'library_paths': self.resources.lib_dirs,
'linker_script': self.resources.linker_script,
'libraries': libraries,
'ld_sys_libs': sys_libs,
'hex_files': self.resources.hex_files,
'vpath': (["../../.."]
if (basename(dirname(dirname(self.export_dir)))
@ -171,6 +174,10 @@ class GccArm(Makefile):
def prepare_lib(libname):
return "-l:" + libname
@staticmethod
def prepare_sys_lib(libname):
return "-l" + libname
class Armc5(Makefile):
"""ARM Compiler 5 specific makefile target"""
@ -186,6 +193,10 @@ class Armc5(Makefile):
def prepare_lib(libname):
return libname
@staticmethod
def prepare_sys_lib(libname):
return libname
class IAR(Makefile):
"""IAR specific makefile target"""
@ -202,3 +213,9 @@ class IAR(Makefile):
if "lib" == libname[:3]:
libname = libname[3:]
return "-l" + splitext(libname)[0]
@staticmethod
def prepare_sys_lib(libname):
if "lib" == libname[:3]:
libname = libname[3:]
return "-l" + splitext(libname)[0]

View File

@ -1,10 +1,6 @@
{% extends "makefile/Makefile.tmpl" %}
{% block sys_libs %}
{% for lib in ["-lstdc++", "-lsupc++", "-lm", "-lc", "-lgcc", "-lnosys"] -%}
LD_SYS_LIBS += {{lib}}
{% endfor %}
{%- endblock %}
{%- block sys_libs -%} -Wl,--start-group {{ld_sys_libs|join(" ")}} -Wl,--end-group {%- endblock -%}
{% block elf2bin %}
$(ELF2BIN) -O binary $< $@

View File

@ -266,6 +266,9 @@ class mbedToolchain:
# Toolchain flags
self.flags = deepcopy(build_profile or self.profile_template)
# System libraries provided by the toolchain
self.sys_libs = []
# User-defined macros
self.macros = macros or []

View File

@ -66,7 +66,6 @@ class ARM(mbedToolchain):
self.cppc = [main_cc] + self.flags['common'] + self.flags['c'] + self.flags['cxx']
self.ld = [join(ARM_BIN, "armlink")]
self.sys_libs = []
self.ar = join(ARM_BIN, "armar")
self.elf2bin = join(ARM_BIN, "fromelf")