Skip to content

Commit 999f798

Browse files
authored
Merge pull request #1914 from mbedmicro/theotherjimmy-refactor-flags
Replacement for #1872
2 parents 3a0d561 + 88054fa commit 999f798

15 files changed

+112
-77
lines changed

tools/export/atmelstudio.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ def generate(self):
7171
'solution_uuid': solution_uuid.upper(),
7272
'project_uuid': project_uuid.upper()
7373
}
74+
ctx.update(self.progen_flags)
7475
target = self.target.lower()
7576
self.gen_file('atmelstudio6_2.atsln.tmpl', ctx, '%s.atsln' % self.program_name)
7677
self.gen_file('atmelstudio6_2.cppproj.tmpl', ctx, '%s.cppproj' % self.program_name)

tools/export/atmelstudio6_2.cppproj.tmpl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
<armgcc.compiler.optimization.level>Optimize for size (-Os)</armgcc.compiler.optimization.level>
6161
<armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>
6262
<armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings>
63-
<armgcc.compiler.miscellaneous.OtherFlags>-std=gnu99 -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -MMD -MP</armgcc.compiler.miscellaneous.OtherFlags>
63+
<armgcc.compiler.miscellaneous.OtherFlags>{{c_flags|join(" ")}} {{common_flags|join(" ")}} -MMD -MP</armgcc.compiler.miscellaneous.OtherFlags>
6464
<armgcccpp.compiler.symbols.DefSymbols>
6565
<ListValues>
6666
<Value>NDEBUG</Value>
@@ -77,7 +77,7 @@
7777
<armgcccpp.compiler.optimization.level>Optimize for size (-Os)</armgcccpp.compiler.optimization.level>
7878
<armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>
7979
<armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings>
80-
<armgcccpp.compiler.miscellaneous.OtherFlags>-std=gnu++98 -fno-rtti -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -MMD -MP</armgcccpp.compiler.miscellaneous.OtherFlags>
80+
<armgcccpp.compiler.miscellaneous.OtherFlags>{{cxx_flags|join(" ")}} {{common_flags|join(" ")}} -MMD -MP</armgcccpp.compiler.miscellaneous.OtherFlags>
8181
<armgcccpp.linker.libraries.Libraries>
8282
<ListValues>
8383
<Value>libm</Value>
@@ -88,7 +88,7 @@
8888
</ListValues>
8989
</armgcccpp.linker.libraries.LibrarySearchPaths>
9090
<armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections>
91-
<armgcccpp.linker.miscellaneous.LinkerFlags>{% for p in library_paths %}-L../{{p}} {% endfor %} {% for f in object_files %}../{{f}} {% endfor %} {% for lib in libraries %}-l{{lib}} {% endfor %} -T../{{linker_script}} -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main -Wl,--cref -lstdc++ -lsupc++ -lm -lgcc -Wl,--start-group -lc -lc -lnosys -Wl,--end-group </armgcccpp.linker.miscellaneous.LinkerFlags>
91+
<armgcccpp.linker.miscellaneous.LinkerFlags>{% for p in library_paths %}-L../{{p}} {% endfor %} {% for f in object_files %}../{{f}} {% endfor %} {% for lib in libraries %}-l{{lib}} {% endfor %} -T../{{linker_script}} {{ld_flags|join(" ")}} {{common_flags|join(" ")}}</armgcccpp.linker.miscellaneous.LinkerFlags>
9292
<armgcccpp.preprocessingassembler.general.IncludePaths>
9393
<ListValues>
9494
{% for i in include_paths %}<Value>../{{i}}</Value>
@@ -123,7 +123,7 @@
123123
<armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>
124124
<armgcc.compiler.optimization.DebugLevel>Maximum (-g3)</armgcc.compiler.optimization.DebugLevel>
125125
<armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings>
126-
<armgcc.compiler.miscellaneous.OtherFlags>-std=gnu99 -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -MMD -MP</armgcc.compiler.miscellaneous.OtherFlags>
126+
<armgcc.compiler.miscellaneous.OtherFlags>{{c_flags|join(" ")}} {{common_flags|join(" ")}} -MMD -MP</armgcc.compiler.miscellaneous.OtherFlags>
127127
<armgcccpp.compiler.symbols.DefSymbols>
128128
<ListValues>
129129
<Value>DEBUG</Value>
@@ -141,7 +141,7 @@
141141
<armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>
142142
<armgcccpp.compiler.optimization.DebugLevel>Maximum (-g3)</armgcccpp.compiler.optimization.DebugLevel>
143143
<armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings>
144-
<armgcccpp.compiler.miscellaneous.OtherFlags>-std=gnu++98 -fno-rtti -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -MMD -MP</armgcccpp.compiler.miscellaneous.OtherFlags>
144+
<armgcccpp.compiler.miscellaneous.OtherFlags>{{cxx_flags|join(" ")}} {{common_flags|join(" ")}} -MMD -MP</armgcccpp.compiler.miscellaneous.OtherFlags>
145145
<armgcccpp.linker.libraries.Libraries>
146146
<ListValues>
147147
<Value>libm</Value>
@@ -152,7 +152,7 @@
152152
</ListValues>
153153
</armgcccpp.linker.libraries.LibrarySearchPaths>
154154
<armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections>
155-
<armgcccpp.linker.miscellaneous.LinkerFlags>{% for p in library_paths %}-L../{{p}} {% endfor %} {% for f in object_files %}../{{f}} {% endfor %} {% for lib in libraries %}-l{{lib}} {% endfor %} -T../{{linker_script}} -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main -Wl,--cref -lstdc++ -lsupc++ -lm -lgcc -Wl,--start-group -lc -lc -lnosys -Wl,--end-group </armgcccpp.linker.miscellaneous.LinkerFlags>
155+
<armgcccpp.linker.miscellaneous.LinkerFlags>{% for p in library_paths %}-L../{{p}} {% endfor %} {% for f in object_files %}../{{f}} {% endfor %} {% for lib in libraries %}-l{{lib}} {% endfor %} -T../{{linker_script}} {{ld_flags|join(" ")}} {{common_flags|join(" ")}}</armgcccpp.linker.miscellaneous.LinkerFlags>
156156
<armgcccpp.assembler.debugging.DebugLevel>Default (-g)</armgcccpp.assembler.debugging.DebugLevel>
157157
<armgcccpp.preprocessingassembler.general.IncludePaths>
158158
<ListValues>
@@ -173,4 +173,4 @@
173173
{% endfor %}
174174
</ItemGroup>
175175
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
176-
</Project>
176+
</Project>

tools/export/codered.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,6 @@ def generate(self):
5353
'libraries': libraries,
5454
'symbols': self.get_symbols()
5555
}
56+
ctx.update(self.progen_flags)
5657
self.gen_file('codered_%s_project.tmpl' % self.target.lower(), ctx, '.project')
5758
self.gen_file('codered_%s_cproject.tmpl' % self.target.lower(), ctx, '.cproject')

tools/export/codered_cproject_common.tmpl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
<listOptionValue builtIn="false" value="{{s}}"/>
3535
{% endfor %}
3636
</option>
37-
<option id="gnu.cpp.compiler.option.other.other.1100343989" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
37+
<option id="gnu.cpp.compiler.option.other.other.1100343989" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c {{cxx_flags|join(" ")}} {{common_flags|join(" ")}}" valueType="string"/>
3838

3939
<option id="gnu.cpp.compiler.option.include.paths.1011871574" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
4040
{% for path in include_paths %}
@@ -56,7 +56,7 @@
5656
<listOptionValue builtIn="false" value="{{s}}"/>
5757
{% endfor %}
5858
</option>
59-
<option id="gnu.c.compiler.option.misc.other.1521041525" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
59+
<option id="gnu.c.compiler.option.misc.other.1521041525" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c {{c_flags|join(" ")}} {{common_flags|join(" ")}}" valueType="string"/>
6060

6161
<option id="gnu.c.compiler.option.include.paths.1293117680" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
6262
{% for path in include_paths %}
@@ -69,7 +69,7 @@
6969
<tool id="com.crt.advproject.gas.exe.debug.1277199919" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.debug">
7070
<option id="com.crt.advproject.gas.arch.1079400011" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.{{ self.core() }}" valueType="enumerated"/>
7171
<option id="com.crt.advproject.gas.thumb.1976113150" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
72-
<option id="gnu.both.asm.option.flags.crt.1501250871" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__ -DDEBUG -D__CODE_RED " valueType="string"/>
72+
<option id="gnu.both.asm.option.flags.crt.1501250871" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c {{asm_flags|join(" ")}} {{common_flags|join(" ")}} -D__NEWLIB__ -DDEBUG -D__CODE_RED " valueType="string"/>
7373
<option id="com.crt.advproject.gas.hdrlib.473313643" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
7474
<inputType id="com.crt.advproject.assembler.input.910682278" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
7575
</tool>
@@ -949,7 +949,7 @@
949949
<listOptionValue builtIn="false" value="{{s}}"/>
950950
{% endfor %}
951951
</option>
952-
<option id="gnu.cpp.compiler.option.other.other.1338090461" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
952+
<option id="gnu.cpp.compiler.option.other.other.1338090461" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c {{cxx_flags|join(" ")}} {{common_flags|join(" ")}}" valueType="string"/>
953953
<option id="gnu.cpp.compiler.option.optimization.flags.475225500" name="Other optimization flags" superClass="gnu.cpp.compiler.option.optimization.flags" value="-Os" valueType="string"/>
954954

955955
<option id="gnu.cpp.compiler.option.include.paths.17539784" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
@@ -972,14 +972,14 @@
972972
<listOptionValue builtIn="false" value="{{s}}"/>
973973
{% endfor %}
974974
</option>
975-
<option id="gnu.c.compiler.option.misc.other.2015545820" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
975+
<option id="gnu.c.compiler.option.misc.other.2015545820" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c {{c_flags|join(" ")}} {{common_flags|join(" ")}}" valueType="string"/>
976976
<option id="gnu.c.compiler.option.optimization.flags.675461365" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-Os" valueType="string"/>
977977
<inputType id="com.crt.advproject.compiler.input.1938378962" superClass="com.crt.advproject.compiler.input"/>
978978
</tool>
979979
<tool id="com.crt.advproject.gas.exe.release.579950187" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.release">
980980
<option id="com.crt.advproject.gas.arch.1401271875" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.{{ self.core() }}" valueType="enumerated"/>
981981
<option id="com.crt.advproject.gas.thumb.1024544278" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
982-
<option id="gnu.both.asm.option.flags.crt.637466836" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__ -DNDEBUG -D__CODE_RED " valueType="string"/>
982+
<option id="gnu.both.asm.option.flags.crt.637466836" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c {{asm_flags|join(" ")}} {{common_flags|join(" ")}} -D__NEWLIB__ -DNDEBUG -D__CODE_RED " valueType="string"/>
983983
<option id="com.crt.advproject.gas.hdrlib.492600365" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
984984
<inputType id="com.crt.advproject.assembler.input.812068162" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
985985
</tool>

tools/export/emblocks.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ def generate(self):
6969
'symbols': self.get_symbols(),
7070
'object_files': self.resources.objects,
7171
'sys_libs': self.toolchain.sys_libs,
72-
'cc_org': self.toolchain.cc[1:],
73-
'ld_org': self.toolchain.ld[1:],
74-
'cppc_org': self.toolchain.cppc[1:]
72+
'cc_org': self.flags['common'] + self.flags['c'],
73+
'ld_org': self.flags['common'] + self.flags['ld'],
74+
'cppc_org': self.flags['common'] + self.flags['cxx']
7575
}
7676

7777
# EmBlocks intermediate file template

tools/export/exporters.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,16 @@ def __init__(self, target, inputDir, program_name, build_url_resolver, extra_sym
3939
def get_toolchain(self):
4040
return self.TOOLCHAIN
4141

42+
@property
43+
def flags(self):
44+
return self.toolchain.flags
45+
46+
@property
47+
def progen_flags(self):
48+
if not hasattr(self, "_progen_flag_cache") :
49+
self._progen_flag_cache = dict([(key + "_flags", value) for key,value in self.flags.iteritems()])
50+
return self._progen_flag_cache
51+
4252
def __scan_and_copy(self, src_path, trg_path):
4353
resources = self.toolchain.scan_resources(src_path)
4454

tools/export/gcc_arm_common.tmpl

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,12 @@ endif
3434
{%- endblock %}
3535

3636
CPU = {% block cpu %}{% for cf in cpu_flags %}{{cf|replace("-mfloat-abi=softfp","-mfloat-abi=$(FLOAT_ABI)")}} {% endfor %}{% endblock %}
37-
CC_FLAGS = {% block cc_flags %}$(CPU) -c -g -fno-common -fmessage-length=0 -Wall -Wextra -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -MMD -MP{% endblock %}
37+
CC_FLAGS = {% block cc_flags %}{{common_flags|join(" ")}} {{c_flags|join(" ")}} -MMD -MP{% endblock %}
38+
CPPC_FLAGS = {% block cppc_flags %}{{common_flags|join(" ")}} {{cxx_flags|join(" ")}} -MMD -MP{% endblock %}
39+
ASM_FLAGS = {% block asm_flags %}{{asm_flags|join(" ")}} {{common_flags|join(" ")}}{% endblock %}
3840
CC_SYMBOLS = {% block cc_symbols %}{% for s in symbols %}-D{{s}} {% endfor %}{% endblock %}
3941

40-
LD_FLAGS = {%- block ld_flags -%} $(CPU) -Wl,--gc-sections --specs=nano.specs -Wl,--wrap,main -Wl,-Map=$(PROJECT).map,--cref -Wl,--wrap,_malloc_r -Wl,--wrap,_free_r -Wl,--wrap,_realloc_r
41-
{%- if "-mcpu=cortex-m0" in cpu_flags or "-mcpu=cortex-m0plus" in cpu_flags -%}
42-
#LD_FLAGS += -u _printf_float -u _scanf_float
43-
{%- else -%}
44-
{{ ' ' }}-u _printf_float -u _scanf_float
45-
{%- endif -%}
46-
{% endblock %}
42+
LD_FLAGS = {%- block ld_flags -%} {{ld_flags|join(" ")}} {% endblock %}
4743
LD_SYS_LIBS = {% block ld_sys_libs %}-lstdc++ -lsupc++ -lm -lc -lgcc -lnosys{% endblock %}
4844
{% endblock %}
4945

@@ -65,17 +61,17 @@ clean:
6561
{% endblock %}
6662

6763
.asm.o:
68-
$(CC) $(CPU) -c -x assembler-with-cpp -o $@ $<
64+
$(CC) $(CPU) -c $(ASM_FLAGS) -o $@ $<
6965
.s.o:
70-
$(CC) $(CPU) -c -x assembler-with-cpp -o $@ $<
66+
$(CC) $(CPU) -c $(ASM_FLAGS) -o $@ $<
7167
.S.o:
72-
$(CC) $(CPU) -c -x assembler-with-cpp -o $@ $<
68+
$(CC) $(CPU) -c $(ASM_FLAGS) -o $@ $<
7369

7470
.c.o:
75-
$(CC) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99 $(INCLUDE_PATHS) -o $@ $<
71+
$(CC) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o $@ $<
7672

7773
.cpp.o:
78-
$(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 -fno-rtti $(INCLUDE_PATHS) -o $@ $<
74+
$(CPP) $(CPPC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o $@ $<
7975

8076

8177
{% block target_project_elf %}

tools/export/gccarm.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,4 +148,5 @@ def generate(self):
148148
'symbols': self.get_symbols(),
149149
'cpu_flags': self.toolchain.cpu
150150
}
151+
ctx.update(self.progen_flags)
151152
self.gen_file('gcc_arm_%s.tmpl' % self.target.lower(), ctx, 'Makefile')

tools/export/iar.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@ def generate(self):
6666
}
6767

6868
project_data['tool_specific'] = {}
69-
project_data['tool_specific'].update(tool_specific)
69+
project_data['tool_specific'].setdefault("iar", {})
70+
project_data['tool_specific']['iar'].setdefault("misc", {})
71+
project_data['tool_specific']['iar'].update(tool_specific['iar'])
72+
project_data['tool_specific']['iar']['misc'].update(self.progen_flags)
7073
project_data['common']['build_dir'] = os.path.join(project_data['common']['build_dir'], 'iar_arm')
7174
self.progen_gen_file('iar_arm', project_data)
7275

tools/export/simplicityv3.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ def generate(self):
169169
'kit': self.KITS[self.target],
170170
'loopcount': 0
171171
}
172+
ctx.update(self.progen_flags)
172173

173174
## Strip main folder from include paths because ssproj is not capable of handling it
174175
if '.' in ctx['include_paths']:

0 commit comments

Comments
 (0)