mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #3600 from theotherjimmy/refactor-sys-libs
[toolchains] Refactor sys libspull/3649/head
commit
7316b89c1d
|
@ -80,7 +80,7 @@ SREC_CAT = srec_cat
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
LD_FLAGS :={%- block ld_flags -%} {{ld_flags|join(" ")}} {% endblock %}
|
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
|
# Tools and Flags
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
|
@ -52,6 +52,8 @@ class Makefile(Exporter):
|
||||||
|
|
||||||
libraries = [self.prepare_lib(basename(lib)) for lib
|
libraries = [self.prepare_lib(basename(lib)) for lib
|
||||||
in self.resources.libraries]
|
in self.resources.libraries]
|
||||||
|
sys_libs = [self.prepare_sys_lib(lib) for lib
|
||||||
|
in self.toolchain.sys_libs]
|
||||||
|
|
||||||
ctx = {
|
ctx = {
|
||||||
'name': self.project_name,
|
'name': self.project_name,
|
||||||
|
@ -61,6 +63,7 @@ class Makefile(Exporter):
|
||||||
'library_paths': self.resources.lib_dirs,
|
'library_paths': self.resources.lib_dirs,
|
||||||
'linker_script': self.resources.linker_script,
|
'linker_script': self.resources.linker_script,
|
||||||
'libraries': libraries,
|
'libraries': libraries,
|
||||||
|
'ld_sys_libs': sys_libs,
|
||||||
'hex_files': self.resources.hex_files,
|
'hex_files': self.resources.hex_files,
|
||||||
'vpath': (["../../.."]
|
'vpath': (["../../.."]
|
||||||
if (basename(dirname(dirname(self.export_dir)))
|
if (basename(dirname(dirname(self.export_dir)))
|
||||||
|
@ -171,6 +174,10 @@ class GccArm(Makefile):
|
||||||
def prepare_lib(libname):
|
def prepare_lib(libname):
|
||||||
return "-l:" + libname
|
return "-l:" + libname
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def prepare_sys_lib(libname):
|
||||||
|
return "-l" + libname
|
||||||
|
|
||||||
|
|
||||||
class Armc5(Makefile):
|
class Armc5(Makefile):
|
||||||
"""ARM Compiler 5 specific makefile target"""
|
"""ARM Compiler 5 specific makefile target"""
|
||||||
|
@ -186,6 +193,10 @@ class Armc5(Makefile):
|
||||||
def prepare_lib(libname):
|
def prepare_lib(libname):
|
||||||
return libname
|
return libname
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def prepare_sys_lib(libname):
|
||||||
|
return libname
|
||||||
|
|
||||||
|
|
||||||
class IAR(Makefile):
|
class IAR(Makefile):
|
||||||
"""IAR specific makefile target"""
|
"""IAR specific makefile target"""
|
||||||
|
@ -202,3 +213,9 @@ class IAR(Makefile):
|
||||||
if "lib" == libname[:3]:
|
if "lib" == libname[:3]:
|
||||||
libname = libname[3:]
|
libname = libname[3:]
|
||||||
return "-l" + splitext(libname)[0]
|
return "-l" + splitext(libname)[0]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def prepare_sys_lib(libname):
|
||||||
|
if "lib" == libname[:3]:
|
||||||
|
libname = libname[3:]
|
||||||
|
return "-l" + splitext(libname)[0]
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
{% extends "makefile/Makefile.tmpl" %}
|
{% extends "makefile/Makefile.tmpl" %}
|
||||||
|
|
||||||
{% block sys_libs %}
|
{%- block sys_libs -%} -Wl,--start-group {{ld_sys_libs|join(" ")}} -Wl,--end-group {%- endblock -%}
|
||||||
{% for lib in ["-lstdc++", "-lsupc++", "-lm", "-lc", "-lgcc", "-lnosys"] -%}
|
|
||||||
LD_SYS_LIBS += {{lib}}
|
|
||||||
{% endfor %}
|
|
||||||
{%- endblock %}
|
|
||||||
|
|
||||||
{% block elf2bin %}
|
{% block elf2bin %}
|
||||||
$(ELF2BIN) -O binary $< $@
|
$(ELF2BIN) -O binary $< $@
|
||||||
|
|
|
@ -266,6 +266,9 @@ class mbedToolchain:
|
||||||
# Toolchain flags
|
# Toolchain flags
|
||||||
self.flags = deepcopy(build_profile or self.profile_template)
|
self.flags = deepcopy(build_profile or self.profile_template)
|
||||||
|
|
||||||
|
# System libraries provided by the toolchain
|
||||||
|
self.sys_libs = []
|
||||||
|
|
||||||
# User-defined macros
|
# User-defined macros
|
||||||
self.macros = macros or []
|
self.macros = macros or []
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,6 @@ class ARM(mbedToolchain):
|
||||||
self.cppc = [main_cc] + self.flags['common'] + self.flags['c'] + self.flags['cxx']
|
self.cppc = [main_cc] + 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.ar = join(ARM_BIN, "armar")
|
self.ar = join(ARM_BIN, "armar")
|
||||||
self.elf2bin = join(ARM_BIN, "fromelf")
|
self.elf2bin = join(ARM_BIN, "fromelf")
|
||||||
|
|
Loading…
Reference in New Issue