Skip to content

Commit cfa484b

Browse files
eatradishYu Shen
andcommitted
feat: add MIPS toolchain support
- Implement MIPS (MTI) toolchain support for *nix and MinGW64 platforms as the MTI_GCC (MIPS MTI GCC Compiler) project type. - Default to a baseline set of MIPS compiler flags. - Add barebones GCC Model data in /res/data/models/*/mips.gcc.model.json. Co-authored-by: Yu Shen <yu.shen@oss.cipunited.com> Signed-off-by: Mingcong Bai <jeffbai@oss.cipunited.com>
1 parent 93b3b47 commit cfa484b

14 files changed

Lines changed: 1452 additions & 27 deletions

lang/mips.mti.gcc.verify.json

Lines changed: 376 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,376 @@
1+
{
2+
"title": "MIPS GCC Options",
3+
"$schema": "http://json-schema.org/draft-04/schema#",
4+
"type": "object",
5+
"definitions": {
6+
"FLAGS": {
7+
"markdownDescription": "Other Options",
8+
"description.zh-cn": "其他选项",
9+
"size": "huge",
10+
"type": [
11+
"string",
12+
"array"
13+
],
14+
"items": {
15+
"type": "string"
16+
},
17+
"default": []
18+
}
19+
},
20+
"properties": {
21+
"beforeBuildTasks": {
22+
"markdownDescription": "List of commands to execute before build",
23+
"description.zh-cn": "构建前要执行的命令列表",
24+
"type": "array",
25+
"default": [
26+
{
27+
"name": "clean",
28+
"command": "del /Q \"${OutDir}\\*.*\""
29+
}
30+
],
31+
"items": {
32+
"type": "object",
33+
"required": [
34+
"name",
35+
"command"
36+
],
37+
"properties": {
38+
"name": {
39+
"markdownDescription": "A readable name for display",
40+
"description.zh-cn": "用于显示的可读名称",
41+
"type": "string"
42+
},
43+
"command": {
44+
"markdownDescription": "Shell command line",
45+
"description.zh-cn": "Shell 命令行",
46+
"type": "string"
47+
},
48+
"disable": {
49+
"markdownDescription": "Disable this command",
50+
"description.zh-cn": "禁用此命令",
51+
"type": "boolean",
52+
"enum": [
53+
true,
54+
false
55+
]
56+
},
57+
"abortAfterFailed": {
58+
"markdownDescription": "Whether to skip subsequent commands if this command failed",
59+
"description.zh-cn": "是否在此命令失败时,跳过后续的命令",
60+
"type": "boolean",
61+
"enum": [
62+
true,
63+
false
64+
]
65+
},
66+
"stopBuildAfterFailed": {
67+
"markdownDescription": "Whether to stop compiling directly when this command failed",
68+
"description.zh-cn": "是否在此命令失败时,直接停止编译",
69+
"type": "boolean",
70+
"enum": [
71+
true,
72+
false
73+
]
74+
}
75+
}
76+
}
77+
},
78+
"afterBuildTasks": {
79+
"markdownDescription": "List of commands to execute after build",
80+
"description.zh-cn": "构建结束后要执行的命令列表",
81+
"type": "array",
82+
"default": [
83+
{
84+
"name": "clean",
85+
"command": "del \"${OutDir}\\*._*\""
86+
}
87+
],
88+
"items": {
89+
"type": "object",
90+
"required": [
91+
"name",
92+
"command"
93+
],
94+
"properties": {
95+
"name": {
96+
"markdownDescription": "A readable name for display",
97+
"description.zh-cn": "用于显示的可读名称",
98+
"type": "string"
99+
},
100+
"command": {
101+
"markdownDescription": "Shell command line",
102+
"description.zh-cn": "Shell 命令行",
103+
"type": "string"
104+
},
105+
"disable": {
106+
"markdownDescription": "Disable this command",
107+
"description.zh-cn": "禁用此命令",
108+
"type": "boolean",
109+
"enum": [
110+
true,
111+
false
112+
]
113+
},
114+
"abortAfterFailed": {
115+
"markdownDescription": "Whether to skip subsequent commands if this command failed",
116+
"description.zh-cn": "是否在此命令失败时,跳过后续的命令",
117+
"type": "boolean",
118+
"enum": [
119+
true,
120+
false
121+
]
122+
}
123+
}
124+
}
125+
},
126+
"global": {
127+
"markdownDescription": "Global Options",
128+
"description.zh-cn": "全局选项",
129+
"type": "object",
130+
"properties": {
131+
"output-debug-info": {
132+
"markdownDescription": "Output debug information",
133+
"description.zh-cn": "输出调试信息",
134+
"type": "string",
135+
"default": "disable",
136+
"enum": [
137+
"disable",
138+
"enable",
139+
"dwarf-2",
140+
"dwarf-3"
141+
]
142+
},
143+
"$float-abi-type": {
144+
"markdownDescription": "Hardware floating-point ABI",
145+
"description.zh-cn": "硬件浮点 ABI",
146+
"type": "string",
147+
"default": "softfp",
148+
"enum": [
149+
"soft-float",
150+
"hard-float"
151+
]
152+
},
153+
"arch": {
154+
"markdownDescription": "Arch",
155+
"description.zh-cn": "指令集(arch)",
156+
"size": "small",
157+
"type": "string",
158+
"auto_complete_ctx": "gcc.compiler.archs"
159+
},
160+
"abi": {
161+
"readable_name": "ABI",
162+
"readable_name.zh-cn": "调用约定(abi)",
163+
"markdownDescription": "Integer and floating-point calling convention",
164+
"description.zh-cn": "整数和浮点调用约定",
165+
"size": "small",
166+
"auto_complete_ctx": "gcc.compiler.abis"
167+
},
168+
"misc-control": {
169+
"markdownDescription": "Other Global Options",
170+
"description.zh-cn": "编译器附加选项(全局)",
171+
"$ref": "#/definitions/FLAGS",
172+
"default": ""
173+
}
174+
}
175+
},
176+
"c/cpp-compiler": {
177+
"markdownDescription": "C/C++ Compiler Options",
178+
"description.zh-cn": "C/C++ 编译器选项",
179+
"type": "object",
180+
"properties": {
181+
"language-c": {
182+
"markdownDescription": "C Standard",
183+
"description.zh-cn": "C 标准",
184+
"type": "string",
185+
"default": "c11",
186+
"enum": [
187+
"c89",
188+
"c90",
189+
"c99",
190+
"c11",
191+
"c17",
192+
"gnu89",
193+
"gnu90",
194+
"gnu99",
195+
"gnu11",
196+
"gnu17"
197+
]
198+
},
199+
"language-cpp": {
200+
"markdownDescription": "C++ Standard",
201+
"description.zh-cn": "C++ 标准",
202+
"type": "string",
203+
"default": "c++11",
204+
"enum": [
205+
"c++98",
206+
"gnu++98",
207+
"c++11",
208+
"gnu++11",
209+
"c++14",
210+
"gnu++14",
211+
"c++17",
212+
"gnu++17"
213+
]
214+
},
215+
"optimization": {
216+
"markdownDescription": "Optimization Level",
217+
"description.zh-cn": "代码优化级别",
218+
"type": "string",
219+
"default": "level-0",
220+
"enum": [
221+
"level-0",
222+
"level-1",
223+
"level-2",
224+
"level-3",
225+
"level-size",
226+
"level-fast",
227+
"level-debug"
228+
],
229+
"enumDescriptions": [
230+
"-O0 (default)",
231+
"-O1",
232+
"-O2",
233+
"-O3",
234+
"-Os",
235+
"-Ofast",
236+
"-Og"
237+
]
238+
},
239+
"warnings": {
240+
"markdownDescription": "Warning Level",
241+
"description.zh-cn": "警告等级",
242+
"type": "string",
243+
"default": "all-warnings",
244+
"enum": [
245+
"no-warnings",
246+
"all-warnings"
247+
]
248+
},
249+
"turn-warning-into-errors": {
250+
"markdownDescription": "Turn warnings into errors",
251+
"description.zh-cn": "将警告转化为错误",
252+
"type": "boolean"
253+
},
254+
"one-elf-section-per-function": {
255+
"markdownDescription": "One ELF Section per Function",
256+
"type": "boolean"
257+
},
258+
"one-elf-section-per-data": {
259+
"markdownDescription": "One ELF Section per Data",
260+
"type": "boolean"
261+
},
262+
"C_FLAGS": {
263+
"markdownDescription": "Other C Compiler Options",
264+
"description.zh-cn": "C 编译器附加选项",
265+
"$ref": "#/definitions/FLAGS",
266+
"default": ""
267+
},
268+
"CXX_FLAGS": {
269+
"markdownDescription": "Other C++ Compiler Options",
270+
"description.zh-cn": "C++ 编译器附加选项",
271+
"$ref": "#/definitions/FLAGS",
272+
"default": ""
273+
}
274+
}
275+
},
276+
"asm-compiler": {
277+
"markdownDescription": "Assembler Options",
278+
"description.zh-cn": "汇编器选项",
279+
"type": "object",
280+
"properties": {
281+
"defines": {
282+
"readable_name": "Preprocessor Definitions",
283+
"readable_name.zh-cn": "预处理器定义",
284+
"markdownDescription": "Preprocessor Definitions",
285+
"description.zh-cn": "预处理器定义",
286+
"type": "array",
287+
"items": {
288+
"type": "string"
289+
}
290+
},
291+
"ASM_FLAGS": {
292+
"markdownDescription": "Other Assembler Options",
293+
"description.zh-cn": "汇编器附加选项",
294+
"$ref": "#/definitions/FLAGS",
295+
"default": ""
296+
}
297+
}
298+
},
299+
"linker": {
300+
"markdownDescription": "Linker Options",
301+
"description.zh-cn": "链接器选项",
302+
"type": "object",
303+
"properties": {
304+
"output-format": {
305+
"type": "string",
306+
"default": "elf",
307+
"description": "Output Format",
308+
"description.zh-cn": "输出格式",
309+
"enum": [
310+
"elf",
311+
"lib"
312+
],
313+
"enumDescriptions": [
314+
"ELF",
315+
"LIB"
316+
]
317+
},
318+
"$disableOutputTask": {
319+
"type": "boolean",
320+
"markdownDescription": "Not Output Hex/Bin File",
321+
"description.zh-cn": "不生成 Hex/Bin 文件",
322+
"enum": [
323+
true,
324+
false
325+
]
326+
},
327+
"remove-unused-input-sections": {
328+
"markdownDescription": "Remove Unused Input Sections",
329+
"type": "boolean"
330+
},
331+
"not-print-mem-usage": {
332+
"markdownDescription": "Not Print Memory Usage (disable: -Wl,--print-memory-usage)",
333+
"type": "boolean"
334+
},
335+
"LD_FLAGS": {
336+
"readable_name": "Other Linker Options",
337+
"readable_name.zh-cn": "链接器附加选项",
338+
"markdownDescription": "Use '-Wl[,option]...' pass options to the linker",
339+
"description.zh-cn": "使用 '-Wl[,option]...' 传递链接器选项",
340+
"$ref": "#/definitions/FLAGS",
341+
"default": ""
342+
},
343+
"LIB_FLAGS": {
344+
"readable_name": "Lib Flags",
345+
"readable_name.zh-cn": "链接库选项",
346+
"markdownDescription": "Lib Flags, like: -lxxx",
347+
"description.zh-cn": "链接库选项,例如:-lxxx",
348+
"$ref": "#/definitions/FLAGS",
349+
"default": ""
350+
},
351+
"object-order": {
352+
"type": "array",
353+
"readable_name": "Object Order",
354+
"readable_name.zh-cn": "Object Order",
355+
"markdownDescription": "Object Order (used to determine the order in which object files are linked)",
356+
"description.zh-cn": "Object Order(用于决定某些 obj 文件的链接顺序)",
357+
"default": [],
358+
"properties": {
359+
"pattern": {
360+
"type": "string",
361+
"readable_name": "Pattern",
362+
"description": "A glob pattern (https://github.com/dazinator/DotNet.Glob) to match a object (*.o) file",
363+
"default": "**/your/pattern/for/object/file/path/*.o"
364+
},
365+
"order": {
366+
"type": "number",
367+
"readable_name": "Order",
368+
"description": "An integer number (The smaller the value, the higher the priority)",
369+
"default": 0
370+
}
371+
}
372+
}
373+
}
374+
}
375+
}
376+
}

0 commit comments

Comments
 (0)