Rev 8097 | Rev 9177 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8097 | Rev 8859 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | (* |
1 | (* |
2 | BSD 2-Clause License |
2 | BSD 2-Clause License |
Line 3... | Line 3... | ||
3 | 3 | ||
4 | Copyright (c) 2018-2020, Anton Krotov |
4 | Copyright (c) 2018-2021, Anton Krotov |
5 | All rights reserved. |
5 | All rights reserved. |
Line 6... | Line 6... | ||
6 | *) |
6 | *) |
Line 7... | Line 7... | ||
7 | 7 | ||
8 | MODULE Compiler; |
8 | MODULE Compiler; |
Line -... | Line 9... | ||
- | 9 | ||
- | 10 | IMPORT ST := STATEMENTS, PARS, UTILS, PATHS, PROG, C := CONSOLE, |
|
- | 11 | ERRORS, STRINGS, WRITER, MSP430, THUMB, TARGETS, SCAN; |
|
- | 12 | ||
- | 13 | ||
- | 14 | CONST |
|
- | 15 | ||
- | 16 | DEF_WINDOWS = "WINDOWS"; |
|
- | 17 | DEF_LINUX = "LINUX"; |
|
9 | 18 | DEF_KOLIBRIOS = "KOLIBRIOS"; |
|
10 | IMPORT ST := STATEMENTS, PARS, UTILS, PATHS, PROG, C := CONSOLE, |
19 | DEF_CPU_X86 = "CPU_X86"; |
11 | ERRORS, STRINGS, WRITER, MSP430, THUMB, TARGETS, SCAN; |
20 | DEF_CPU_X8664 = "CPU_X8664"; |
12 | 21 | ||
13 | 22 | ||
Line 92... | Line 101... | ||
92 | EXCL(checking, ST.chkWCHR) |
101 | EXCL(checking, ST.chkWCHR) |
93 | ELSIF param[j] = "r" THEN |
102 | ELSIF param[j] = "r" THEN |
94 | EXCL(checking, ST.chkCHR); |
103 | EXCL(checking, ST.chkCHR); |
95 | EXCL(checking, ST.chkWCHR); |
104 | EXCL(checking, ST.chkWCHR); |
96 | EXCL(checking, ST.chkBYTE) |
105 | EXCL(checking, ST.chkBYTE) |
- | 106 | ELSIF param[j] = "s" THEN |
|
- | 107 | EXCL(checking, ST.chkSTK) |
|
97 | ELSIF param[j] = "a" THEN |
108 | ELSIF param[j] = "a" THEN |
98 | checking := {} |
109 | checking := {} |
99 | END; |
110 | END; |
Line 100... | Line 111... | ||
100 | 111 | ||
Line 175... | Line 186... | ||
175 | options.pic := FALSE; |
186 | options.pic := FALSE; |
176 | options.lower := FALSE; |
187 | options.lower := FALSE; |
177 | options.checking := ST.chkALL; |
188 | options.checking := ST.chkALL; |
Line 178... | Line 189... | ||
178 | 189 | ||
- | 190 | PATHS.GetCurrentDirectory(app_path); |
|
- | 191 | ||
- | 192 | UTILS.GetArg(0, temp); |
|
- | 193 | PATHS.split(temp, path, modname, ext); |
|
- | 194 | IF PATHS.isRelative(path) THEN |
|
- | 195 | PATHS.RelPath(app_path, path, temp); |
|
- | 196 | path := temp |
|
179 | PATHS.GetCurrentDirectory(app_path); |
197 | END; |
Line 180... | Line 198... | ||
180 | lib_path := app_path; |
198 | lib_path := path; |
- | 199 | ||
- | 200 | UTILS.GetArg(1, inname); |
|
Line 181... | Line 201... | ||
181 | 201 | STRINGS.replace(inname, "\", UTILS.slash); |
|
182 | UTILS.GetArg(1, inname); |
202 | STRINGS.replace(inname, "/", UTILS.slash); |
183 | 203 | ||
184 | C.Ln; |
204 | C.Ln; |
Line 185... | Line 205... | ||
185 | C.String("Akron Oberon Compiler v"); C.Int(UTILS.vMajor); C.String("."); C.Int2(UTILS.vMinor); |
205 | C.String("Akron Oberon Compiler v"); C.Int(UTILS.vMajor); C.String("."); C.Int2(UTILS.vMinor); |
186 | C.String(" ("); C.Int(UTILS.bit_depth); C.StringLn("-bit)"); |
206 | C.String(" ("); C.Int(UTILS.bit_depth); C.StringLn("-bit) " + UTILS.Date); |
187 | C.StringLn("Copyright (c) 2018-2020, Anton Krotov"); |
207 | C.StringLn("Copyright (c) 2018-2021, Anton Krotov"); |
188 | 208 | ||
Line 218... | Line 238... | ||
218 | C.StringLn(" -ram |
238 | C.StringLn(" -ram |
219 | C.StringLn(" -rom |
239 | C.StringLn(" -rom |
220 | UTILS.Exit(0) |
240 | UTILS.Exit(0) |
221 | END; |
241 | END; |
Line 222... | Line 242... | ||
222 | 242 | ||
223 | C.StringLn("--------------------------------------------"); |
243 | C.Dashes; |
Line 224... | Line 244... | ||
224 | PATHS.split(inname, path, modname, ext); |
244 | PATHS.split(inname, path, modname, ext); |
225 | 245 | ||
226 | IF ext # UTILS.FILE_EXT THEN |
246 | IF ext # UTILS.FILE_EXT THEN |
Line 243... | Line 263... | ||
243 | target := TARGETS.target |
263 | target := TARGETS.target |
244 | ELSE |
264 | ELSE |
245 | ERRORS.Error(206) |
265 | ERRORS.Error(206) |
246 | END; |
266 | END; |
Line 247... | Line 267... | ||
247 | 267 | ||
248 | IF target = TARGETS.MSP430 THEN |
268 | IF TARGETS.CPU = TARGETS.cpuMSP430 THEN |
249 | options.ram := MSP430.minRAM; |
269 | options.ram := MSP430.minRAM; |
250 | options.rom := MSP430.minROM |
270 | options.rom := MSP430.minROM |
Line 251... | Line 271... | ||
251 | END; |
271 | END; |
252 | 272 | ||
253 | IF target = TARGETS.STM32CM3 THEN |
273 | IF (TARGETS.CPU = TARGETS.cpuTHUMB) & (TARGETS.OS = TARGETS.osNONE) THEN |
254 | options.ram := THUMB.STM32_minRAM; |
274 | options.ram := THUMB.minRAM; |
Line 255... | Line 275... | ||
255 | options.rom := THUMB.STM32_minROM |
275 | options.rom := THUMB.minROM |
256 | END; |
276 | END; |
257 | 277 | ||
Line 276... | Line 296... | ||
276 | END |
296 | END |
277 | END; |
297 | END; |
Line 278... | Line 298... | ||
278 | 298 | ||
Line -... | Line 299... | ||
- | 299 | PARS.init(options); |
|
- | 300 | ||
- | 301 | CASE TARGETS.OS OF |
|
- | 302 | |TARGETS.osNONE: |
|
- | 303 | |TARGETS.osWIN32, |
|
- | 304 | TARGETS.osWIN64: SCAN.NewDef(DEF_WINDOWS) |
|
- | 305 | |TARGETS.osLINUX32, |
|
- | 306 | TARGETS.osLINUX64: SCAN.NewDef(DEF_LINUX) |
|
- | 307 | |TARGETS.osKOS: SCAN.NewDef(DEF_KOLIBRIOS) |
|
- | 308 | END; |
|
- | 309 | ||
- | 310 | CASE TARGETS.CPU OF |
|
- | 311 | |TARGETS.cpuX86: SCAN.NewDef(DEF_CPU_X86) |
|
- | 312 | |TARGETS.cpuAMD64: SCAN.NewDef(DEF_CPU_X8664) |
|
- | 313 | |TARGETS.cpuMSP430: |
|
- | 314 | |TARGETS.cpuTHUMB: |
|
- | 315 | |TARGETS.cpuRVM32I: |
|
- | 316 | |TARGETS.cpuRVM64I: |
|
279 | PARS.init(options); |
317 | END; |
Line 280... | Line 318... | ||
280 | 318 | ||
281 | ST.compile(path, lib_path, modname, outname, target, options); |
319 | ST.compile(path, lib_path, modname, outname, target, options); |
282 | 320 | ||
283 | time := UTILS.GetTickCount() - UTILS.time; |
321 | time := UTILS.GetTickCount() - UTILS.time; |
284 | C.StringLn("--------------------------------------------"); |
322 | C.Dashes; |
Line 285... | Line 323... | ||
285 | C.Int(PARS.lines); C.String(" lines, "); |
323 | C.Int(PARS.lines); C.String(" lines, "); |