Workaround for SS not taking into account linker ordering

pull/1100/head
Steven Cooreman 2015-05-06 15:51:25 -05:00
parent 74f1dc1cb6
commit 8d783f9acf
2 changed files with 45 additions and 2 deletions

View File

@ -87,6 +87,15 @@ class SimplicityV3(Exporter):
's_sources':'1'
}
EXCLUDED_LIBS = [
'm',
'c',
'gcc',
'nosys',
'supc++',
'stdc++'
]
DOT_IN_RELATIVE_PATH = False
orderedPaths = Folder("Root")
@ -108,6 +117,15 @@ class SimplicityV3(Exporter):
main_files = []
EXCLUDED_LIBS = [
'm',
'c',
'gcc',
'nosys',
'supc++',
'stdc++'
]
for r_type in ['s_sources', 'c_sources', 'cpp_sources']:
r = getattr(self.resources, r_type)
if r:
@ -120,7 +138,8 @@ class SimplicityV3(Exporter):
libraries = []
for lib in self.resources.libraries:
l, _ = splitext(basename(lib))
libraries.append(l[3:])
if l[3:] not in EXCLUDED_LIBS:
libraries.append(l[3:])
defines = []
for define in self.get_symbols():

View File

@ -2,7 +2,7 @@
<project xmlns:model="http://www.silabs.com/sls/IDE.ecore" name="{{ name }}" kitCompatibility="{{ kit }}"
partCompatibility="{{ part }}"
toolchainCompatibility="com.silabs.ide.si32.gcc:4.8.3.20131129"
sdkCompatibility="com.silabs.sdk.si32.efm32.sls:2.0.5"
sdkCompatibility="com.silabs.sdk.si32.efm32"
propertyScope="project"
contentRoot=".">
{# Hierarchically include all folders into the project #}
@ -55,6 +55,18 @@
${workspace_loc:/${ProjName}/{{ file }}}{% if not loop.last %} {% endif %}
{%- endfor -%}"/>
{%- endif %}
{# Manually override linker ordering #}
{%- if libraries %}
<toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.linker.base" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.linker.category.ordering.selection" value="
{%- if object_files -%}
{%- for file in object_files -%}
${workspace_loc:/${ProjName}/{{ file }}};
{%- endfor -%}
{%- endif -%}
{%- for library in libraries -%}
${-l{{ library }}}{% if not loop.last %};{% endif %}
{%- endfor -%}"/>
{%- endif %}
{# Define mbed-specific linker file #}
<toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.toolchain.exe" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.linker.usescript" value="true"/>
<toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.toolchain.exe" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.linker.script" value="${workspace_loc:/${ProjName}/{{ linker_script }}}"/>
@ -100,6 +112,18 @@
${workspace_loc:/${ProjName}/{{ file }}}{% if not loop.last %} {% endif %}
{%- endfor -%}"/>
{%- endif %}
{# Manually override linker ordering #}
{%- if libraries %}
<toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.linker.base" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.linker.category.ordering.selection" value="
{%- if object_files -%}
{%- for file in object_files -%}
${workspace_loc:/${ProjName}/{{ file }}};
{%- endfor -%}
{%- endif -%}
{%- for library in libraries -%}{% if not loop.last %};{% endif %}
${-l{{ library }}}
{%- endfor -%}"/>
{%- endif %}
{# Define mbed-specific linker file #}
<toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.toolchain.exe" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.linker.usescript" value="true"/>
<toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.toolchain.exe" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.linker.script" value="${workspace_loc:/${ProjName}/{{ linker_script }}}"/>