bake-toolkit 1.8.0.1 → 2.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/bake +14 -53
- data/bin/bakery +50 -43
- data/bin/createVSProjects +3 -3
- data/doc/cmd/install.html +1 -5
- data/doc/cmd/usecmd.html +29 -5
- data/doc/dyk/lint.html +21 -4
- data/doc/dyk/tipps.html +0 -6
- data/doc/eclipse/import.html +3 -1
- data/doc/eclipse/import/Import.png +0 -0
- data/doc/eclipse/use.html +8 -5
- data/doc/further/change.html +134 -1
- data/doc/further/issues.html +1 -0
- data/doc/further/wish.html +24 -21
- data/doc/index.html +1 -1
- data/doc/syntax/subst.html +8 -1
- data/doc/syntax/syntax.html +42 -14
- data/lib/bake/cache.rb +51 -59
- data/lib/bake/config/loader.rb +289 -0
- data/lib/bake/libElement.rb +134 -0
- data/lib/bake/mergeConfig.rb +1 -1
- data/lib/bake/model/language.rb +1 -1
- data/lib/bake/model/loader.rb +88 -0
- data/lib/bake/model/metamodel.rb +24 -16
- data/lib/bake/model/metamodel_ext.rb +9 -4
- data/lib/bake/options/options.rb +222 -0
- data/lib/bake/options/showConfigNames.rb +44 -0
- data/lib/bake/options/showDoc.rb +19 -0
- data/lib/bake/options/showLicense.rb +9 -0
- data/lib/bake/options/showToolchains.rb +39 -0
- data/lib/bake/options/usage.rb +54 -0
- data/lib/bake/process_output.rb +10 -0
- data/lib/bake/subst.rb +105 -40
- data/lib/bake/toolchain/clang.rb +44 -0
- data/lib/bake/toolchain/colorizing_formatter.rb +125 -0
- data/lib/bake/toolchain/diab.rb +53 -0
- data/lib/bake/toolchain/errorparser/diab_compiler_error_parser.rb +40 -0
- data/lib/bake/toolchain/errorparser/diab_linker_error_parser.rb +41 -0
- data/lib/bake/toolchain/errorparser/error_parser.rb +71 -0
- data/lib/bake/toolchain/errorparser/gcc_compiler_error_parser.rb +35 -0
- data/lib/bake/toolchain/errorparser/gcc_linker_error_parser.rb +35 -0
- data/lib/bake/toolchain/errorparser/greenhills_compiler_error_parser.rb +32 -0
- data/lib/bake/toolchain/errorparser/greenhills_linker_error_parser.rb +44 -0
- data/lib/bake/toolchain/errorparser/keil_compiler_error_parser.rb +40 -0
- data/lib/bake/toolchain/errorparser/keil_linker_error_parser.rb +30 -0
- data/lib/bake/toolchain/errorparser/lint_error_parser.rb +34 -0
- data/lib/bake/toolchain/errorparser/process_output.rb +3 -0
- data/lib/bake/toolchain/errorparser/ti_compiler_error_parser.rb +30 -0
- data/lib/bake/toolchain/errorparser/ti_linker_error_parser.rb +30 -0
- data/lib/bake/toolchain/gcc.rb +49 -0
- data/lib/bake/toolchain/gcc_param.rb +7 -0
- data/lib/bake/toolchain/greenhills.rb +52 -0
- data/lib/bake/toolchain/keil.rb +55 -0
- data/lib/bake/toolchain/lint.rb +20 -0
- data/lib/bake/toolchain/provider.rb +136 -0
- data/lib/bake/toolchain/ti.rb +47 -0
- data/lib/bake/util.rb +27 -15
- data/lib/bakery/buildPattern.rb +1 -1
- data/lib/bakery/model/language.rb +1 -1
- data/lib/bakery/model/loader.rb +56 -0
- data/lib/bakery/model/metamodel.rb +1 -1
- data/lib/bakery/options/options.rb +87 -0
- data/lib/bakery/toBake.rb +10 -6
- data/lib/blocks/block.rb +225 -0
- data/lib/blocks/blockBase.rb +155 -0
- data/lib/blocks/commandLine.rb +25 -0
- data/lib/blocks/compile.rb +382 -0
- data/lib/blocks/docu.rb +28 -0
- data/lib/blocks/executable.rb +143 -0
- data/lib/blocks/has_execute_command.rb +31 -0
- data/lib/blocks/library.rb +78 -0
- data/lib/blocks/lint.rb +53 -0
- data/lib/blocks/makefile.rb +87 -0
- data/lib/blocks/showIncludes.rb +114 -0
- data/lib/common/abortException.rb +4 -0
- data/lib/common/cleanup.rb +9 -0
- data/lib/common/exit_helper.rb +28 -0
- data/lib/common/ext/file.rb +88 -0
- data/lib/common/ext/stdout.rb +45 -0
- data/lib/common/ide_interface.rb +194 -0
- data/lib/common/options/option.rb +13 -0
- data/lib/common/options/parser.rb +59 -0
- data/lib/common/process.rb +64 -0
- data/lib/common/utils.rb +52 -0
- data/lib/{bake → common}/version.rb +3 -10
- data/lib/multithread/job.rb +44 -0
- data/lib/tocxx.rb +201 -932
- data/lib/vs/options.rb +3 -2
- data/license.txt +47 -22
- metadata +90 -30
- data/bin/bake-doc +0 -12
- data/lib/alias/loader.rb +0 -56
- data/lib/alias/model/language.rb +0 -22
- data/lib/alias/model/metamodel.rb +0 -29
- data/lib/bake/loader.rb +0 -92
- data/lib/bake/options.rb +0 -421
- data/lib/bakery/loader.rb +0 -57
- data/lib/bakery/options.rb +0 -105
- data/lib/option/parser.rb +0 -73
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'bake/toolchain/provider'
|
2
|
+
require 'common/utils'
|
3
|
+
require 'bake/toolchain/errorparser/diab_compiler_error_parser'
|
4
|
+
require 'bake/toolchain/errorparser/diab_linker_error_parser'
|
5
|
+
|
6
|
+
module Bake
|
7
|
+
module Toolchain
|
8
|
+
|
9
|
+
DiabChain = Provider.add("Diab")
|
10
|
+
|
11
|
+
DiabChain[:COMPILER][:C].update({
|
12
|
+
:COMMAND => "dcc",
|
13
|
+
:FLAGS => "",
|
14
|
+
:DEFINE_FLAG => "-D",
|
15
|
+
:OBJECT_FILE_FLAG => "-o",
|
16
|
+
:OBJ_FLAG_SPACE => true,
|
17
|
+
:INCLUDE_PATH_FLAG => "-I",
|
18
|
+
:COMPILE_FLAGS => "-c",
|
19
|
+
:DEP_FLAGS => "-Xmake-dependency=5 -Xmake-dependency-savefile=",
|
20
|
+
:DEP_FLAGS_SPACE => false,
|
21
|
+
:PREPRO_FLAGS => "-P"
|
22
|
+
})
|
23
|
+
|
24
|
+
DiabChain[:COMPILER][:CPP] = Utils.deep_copy(DiabChain[:COMPILER][:C])
|
25
|
+
DiabChain[:COMPILER][:CPP][:SOURCE_FILE_ENDINGS] = Provider.default[:COMPILER][:CPP][:SOURCE_FILE_ENDINGS]
|
26
|
+
|
27
|
+
DiabChain[:COMPILER][:ASM] = Utils.deep_copy(DiabChain[:COMPILER][:C])
|
28
|
+
DiabChain[:COMPILER][:ASM][:COMMAND] = "das"
|
29
|
+
DiabChain[:COMPILER][:ASM][:COMPILE_FLAGS] = ""
|
30
|
+
DiabChain[:COMPILER][:ASM][:SOURCE_FILE_ENDINGS] = Provider.default[:COMPILER][:ASM][:SOURCE_FILE_ENDINGS]
|
31
|
+
DiabChain[:COMPILER][:ASM][:PREPRO_FLAGS] = ""
|
32
|
+
|
33
|
+
DiabChain[:ARCHIVER][:COMMAND] = "dar"
|
34
|
+
DiabChain[:ARCHIVER][:ARCHIVE_FLAGS] = "-rc"
|
35
|
+
|
36
|
+
DiabChain[:LINKER][:COMMAND] = "dcc"
|
37
|
+
DiabChain[:LINKER][:SCRIPT] = "-Wm"
|
38
|
+
DiabChain[:LINKER][:USER_LIB_FLAG] = "-l:"
|
39
|
+
DiabChain[:LINKER][:EXE_FLAG] = "-o"
|
40
|
+
DiabChain[:LINKER][:LIB_FLAG] = "-l"
|
41
|
+
DiabChain[:LINKER][:LIB_PATH_FLAG] = "-L"
|
42
|
+
DiabChain[:LINKER][:MAP_FILE_FLAG] = "-Wl,-m6" # no map file if this string is empty, otherwise -Wl,-m6>abc.map
|
43
|
+
DiabChain[:LINKER][:OUTPUT_ENDING] = ".elf"
|
44
|
+
|
45
|
+
diabCompilerErrorParser = DiabCompilerErrorParser.new
|
46
|
+
DiabChain[:COMPILER][:C][:ERROR_PARSER] = diabCompilerErrorParser
|
47
|
+
DiabChain[:COMPILER][:CPP][:ERROR_PARSER] = diabCompilerErrorParser
|
48
|
+
DiabChain[:COMPILER][:ASM][:ERROR_PARSER] = diabCompilerErrorParser
|
49
|
+
DiabChain[:ARCHIVER][:ERROR_PARSER] = diabCompilerErrorParser
|
50
|
+
DiabChain[:LINKER][:ERROR_PARSER] = DiabLinkerErrorParser.new
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'bake/toolchain/errorparser/error_parser'
|
2
|
+
|
3
|
+
module Bake
|
4
|
+
class DiabCompilerErrorParser < ErrorParser
|
5
|
+
|
6
|
+
def initialize()
|
7
|
+
@error_expression_start = /\"(.+)\", line ([0-9]+): (?!included)(catastrophic |fatal )*([A-Za-z]+)[:]* (.+)/
|
8
|
+
@error_expression_end = /^[ \t]*\^/ # well, it may end without "^"... in this case the error will last the next one starts or console text ends
|
9
|
+
end
|
10
|
+
|
11
|
+
def scan_lines(consoleOutput, proj_dir)
|
12
|
+
res = []
|
13
|
+
error_severity = 255
|
14
|
+
consoleOutputFullnames = ""
|
15
|
+
consoleOutput.each_line do |l|
|
16
|
+
d = ErrorDesc.new
|
17
|
+
lstripped = l.rstrip
|
18
|
+
scan_res = lstripped.scan(@error_expression_start)
|
19
|
+
if scan_res.length == 0
|
20
|
+
d.severity = error_severity
|
21
|
+
d.message = lstripped
|
22
|
+
if lstripped.scan(@error_expression_end).length > 0
|
23
|
+
error_severity = 255
|
24
|
+
end
|
25
|
+
else
|
26
|
+
d.file_name = File.expand_path(scan_res[0][0])
|
27
|
+
d.line_number = scan_res[0][1].to_i
|
28
|
+
d.message = scan_res[0][4]
|
29
|
+
d.severity = get_severity(scan_res[0][3])
|
30
|
+
error_severity = d.severity
|
31
|
+
l.gsub!(scan_res[0][0],d.file_name)
|
32
|
+
end
|
33
|
+
res << d
|
34
|
+
consoleOutputFullnames << l
|
35
|
+
end
|
36
|
+
[res, consoleOutputFullnames]
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'bake/toolchain/errorparser/error_parser'
|
2
|
+
|
3
|
+
module Bake
|
4
|
+
class DiabLinkerErrorParser < ErrorParser
|
5
|
+
|
6
|
+
def initialize()
|
7
|
+
@error_expression = /dld: ([A-Za-z]+): (.+)/
|
8
|
+
@error_expression_linkerscript = /dld: \"([^\"]+)\", line ([0-9]+): (.+)/
|
9
|
+
end
|
10
|
+
|
11
|
+
def scan_lines(consoleOutput, proj_dir)
|
12
|
+
res = []
|
13
|
+
error_severity = 255
|
14
|
+
consoleOutput.each_line do |l|
|
15
|
+
l.rstrip!
|
16
|
+
d = ErrorDesc.new
|
17
|
+
scan_res = l.scan(@error_expression)
|
18
|
+
scan_res2 = l.scan(@error_expression_linkerscript)
|
19
|
+
if scan_res.length == 0 and scan_res2.length == 0 # msg will end with the beginning of the next message
|
20
|
+
d.severity = error_severity
|
21
|
+
d.message = l
|
22
|
+
elsif scan_res.length > 0
|
23
|
+
d.file_name = proj_dir
|
24
|
+
d.line_number = 0
|
25
|
+
d.message = scan_res[0][1]
|
26
|
+
d.severity = get_severity(scan_res[0][0])
|
27
|
+
error_severity = d.severity
|
28
|
+
else
|
29
|
+
d.file_name = proj_dir+"/"+scan_res2[0][0]
|
30
|
+
d.line_number = scan_res2[0][1].to_i
|
31
|
+
d.message = scan_res2[0][2]
|
32
|
+
d.severity = SEVERITY_ERROR
|
33
|
+
error_severity = d.severity
|
34
|
+
end
|
35
|
+
res << d
|
36
|
+
end
|
37
|
+
[res, consoleOutput]
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module Bake
|
2
|
+
|
3
|
+
class ErrorDesc
|
4
|
+
def initialize
|
5
|
+
@severity = 255
|
6
|
+
end
|
7
|
+
attr_accessor :severity
|
8
|
+
attr_accessor :line_number
|
9
|
+
attr_accessor :message
|
10
|
+
attr_accessor :file_name
|
11
|
+
end
|
12
|
+
|
13
|
+
class ErrorParser
|
14
|
+
|
15
|
+
SEVERITY_INFO = 0
|
16
|
+
SEVERITY_WARNING = 1
|
17
|
+
SEVERITY_ERROR = 2
|
18
|
+
SEVERITY_OK = 255
|
19
|
+
|
20
|
+
def scan(consoleOutput, proj_dir)
|
21
|
+
raise "Use specialized classes only"
|
22
|
+
end
|
23
|
+
|
24
|
+
def get_severity(str)
|
25
|
+
if str.downcase == "info" || str.downcase == "note"
|
26
|
+
SEVERITY_INFO
|
27
|
+
elsif str.downcase == "warning"
|
28
|
+
SEVERITY_WARNING
|
29
|
+
else
|
30
|
+
SEVERITY_ERROR
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def inv_severity(s)
|
35
|
+
if s == SEVERITY_INFO
|
36
|
+
"info"
|
37
|
+
elsif s == SEVERITY_WARNING
|
38
|
+
"warning"
|
39
|
+
elsif s == SEVERITY_ERROR
|
40
|
+
"error"
|
41
|
+
else
|
42
|
+
raise "Unknown severity: #{s}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# scan the output from the console line by line and return a list of ErrorDesc objects.
|
47
|
+
# for none-error/warning lines the description object will indicate that as severity 255
|
48
|
+
# for single line errors/warnings: description will contain severity, line-number, message and file-name
|
49
|
+
#
|
50
|
+
# for multi-line errors/warnings:
|
51
|
+
# one description object for each line, first one will contain all single line error information,
|
52
|
+
# all following desc.objects will just repeat the severity and include the message
|
53
|
+
#
|
54
|
+
def scan_lines(consoleOutput, proj_dir)
|
55
|
+
raise "Use specialized classes only"
|
56
|
+
end
|
57
|
+
|
58
|
+
def makeVsError(line, d)
|
59
|
+
if d.file_name == nil
|
60
|
+
return line
|
61
|
+
end
|
62
|
+
|
63
|
+
ret = d.file_name
|
64
|
+
ret = ret + "(" + d.line_number.to_s + ")" if (d.line_number and d.line_number > 0)
|
65
|
+
ret = ret + ": " + inv_severity(d.severity) + ": " + d.message
|
66
|
+
return ret
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'bake/toolchain/errorparser/error_parser'
|
2
|
+
|
3
|
+
module Bake
|
4
|
+
class GCCCompilerErrorParser < ErrorParser
|
5
|
+
|
6
|
+
def initialize()
|
7
|
+
@error_expression = /([^:]+):([0-9]+)[:0-9]* (catastrophic |fatal )*([A-Za-z\._]+): (.+)/
|
8
|
+
end
|
9
|
+
|
10
|
+
def scan_lines(consoleOutput, proj_dir)
|
11
|
+
res = []
|
12
|
+
consoleOutputFullnames = ""
|
13
|
+
consoleOutput.each_line do |l|
|
14
|
+
d = ErrorDesc.new
|
15
|
+
scan_res = l.gsub(/\r\n?/, "").scan(@error_expression)
|
16
|
+
if scan_res.length > 0
|
17
|
+
d.file_name = File.expand_path(scan_res[0][0])
|
18
|
+
d.line_number = scan_res[0][1].to_i
|
19
|
+
d.message = scan_res[0][4]
|
20
|
+
if (scan_res[0][3].include?".")
|
21
|
+
d.severity = SEVERITY_ERROR
|
22
|
+
d.message = scan_res[0][3] + ": " + d.message
|
23
|
+
else
|
24
|
+
d.severity = get_severity(scan_res[0][3])
|
25
|
+
end
|
26
|
+
l.gsub!(scan_res[0][0],d.file_name)
|
27
|
+
end
|
28
|
+
res << d
|
29
|
+
consoleOutputFullnames << l
|
30
|
+
end
|
31
|
+
[res, consoleOutputFullnames]
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'bake/toolchain/errorparser/error_parser'
|
2
|
+
|
3
|
+
module Bake
|
4
|
+
class GCCLinkerErrorParser < ErrorParser
|
5
|
+
|
6
|
+
def initialize()
|
7
|
+
# todo: is every line an error?
|
8
|
+
# todo: some linker errors look like simple text, dunno how to parse properly...
|
9
|
+
# @error_expression1 = /(.*:\(\..*\)): (.*)/ # e.g. /c/Tool/Temp/ccAlar4R.o:x.cpp:(.text+0x17): undefined reference to `_a'
|
10
|
+
# @error_expression2 = /(.*):([0-9]+): (.*)/ # e.g. /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../i686-pc-cygwin/bin/ld:roodi.yml.a:1: syntax error
|
11
|
+
end
|
12
|
+
|
13
|
+
def scan_lines(consoleOutput, proj_dir)
|
14
|
+
res = []
|
15
|
+
consoleOutput.each_line do |l|
|
16
|
+
l.rstrip!
|
17
|
+
d = ErrorDesc.new
|
18
|
+
d.file_name = proj_dir
|
19
|
+
d.line_number = 0
|
20
|
+
d.message = l
|
21
|
+
if l.length == 0
|
22
|
+
d.severity = SEVERITY_OK
|
23
|
+
elsif l.include?" Warning:"
|
24
|
+
d.severity = SEVERITY_WARNING
|
25
|
+
else
|
26
|
+
d.severity = SEVERITY_ERROR
|
27
|
+
end
|
28
|
+
res << d
|
29
|
+
end
|
30
|
+
[res, consoleOutput]
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'bake/toolchain/errorparser/error_parser'
|
2
|
+
|
3
|
+
module Bake
|
4
|
+
class GreenHillsCompilerErrorParser < ErrorParser
|
5
|
+
|
6
|
+
def initialize()
|
7
|
+
# example:
|
8
|
+
# "test.c", line 1: warning #123-D: blah blub
|
9
|
+
@error_expression = /"([^"]+)", line ([0-9]+)[:0-9]* (catastrophic |fatal )*([A-Za-z\._]+) (.+)/
|
10
|
+
end
|
11
|
+
|
12
|
+
def scan_lines(consoleOutput, proj_dir)
|
13
|
+
res = []
|
14
|
+
consoleOutputFullnames = ""
|
15
|
+
consoleOutput.each_line do |l|
|
16
|
+
d = ErrorDesc.new
|
17
|
+
scan_res = l.gsub(/\r\n?/, "").scan(@error_expression)
|
18
|
+
if scan_res.length > 0
|
19
|
+
d.file_name = File.expand_path(scan_res[0][0])
|
20
|
+
d.line_number = scan_res[0][1].to_i
|
21
|
+
d.message = scan_res[0][4]
|
22
|
+
d.severity = get_severity(scan_res[0][3])
|
23
|
+
l.gsub!(scan_res[0][0],d.file_name)
|
24
|
+
end
|
25
|
+
res << d
|
26
|
+
consoleOutputFullnames << l
|
27
|
+
end
|
28
|
+
[res, consoleOutputFullnames]
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'bake/toolchain/errorparser/error_parser'
|
2
|
+
|
3
|
+
module Bake
|
4
|
+
class GreenHillsLinkerErrorParser < ErrorParser
|
5
|
+
|
6
|
+
# detect this:
|
7
|
+
|
8
|
+
# C++ prelinker: recompiling "x/y.z"
|
9
|
+
# "blah.h", line 1: warning #123-D: expression has no effect
|
10
|
+
# uiuiui
|
11
|
+
# ^
|
12
|
+
# detected during:
|
13
|
+
# instantiation of ...
|
14
|
+
|
15
|
+
# dblink: WARNING: 10 problems were encountered while processing debug information, see "Debug/xy.dle" for details.
|
16
|
+
|
17
|
+
def initialize()
|
18
|
+
@error_expression = /ld: (.+)/
|
19
|
+
end
|
20
|
+
|
21
|
+
def scan_lines(consoleOutput, proj_dir)
|
22
|
+
res = []
|
23
|
+
error_severity = 255
|
24
|
+
consoleOutput.each_line do |l|
|
25
|
+
l.rstrip!
|
26
|
+
d = ErrorDesc.new
|
27
|
+
scan_res = l.scan(@error_expression)
|
28
|
+
if scan_res.length == 0 # msg will end with the beginning of the next message
|
29
|
+
d.severity = error_severity
|
30
|
+
d.message = l
|
31
|
+
elsif scan_res.length > 0
|
32
|
+
d.file_name = proj_dir
|
33
|
+
d.line_number = 0
|
34
|
+
d.message = scan_res[0][0]
|
35
|
+
d.severity = SEVERITY_ERROR
|
36
|
+
error_severity = d.severity
|
37
|
+
end
|
38
|
+
res << d
|
39
|
+
end
|
40
|
+
[res, consoleOutput]
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'bake/toolchain/errorparser/error_parser'
|
2
|
+
|
3
|
+
module Bake
|
4
|
+
class KeilCompilerErrorParser < ErrorParser
|
5
|
+
|
6
|
+
def initialize()
|
7
|
+
@error_expression_start = /\"(.+)\", line ([0-9]+): (?!included)(catastrophic |fatal )*([A-Za-z]+)[:]* (.+)/
|
8
|
+
@error_expression_end = /^[ \t]*\^/ # well, it may end without "^"... in this case the error will last the next one starts or console text ends
|
9
|
+
end
|
10
|
+
|
11
|
+
def scan_lines(consoleOutput, proj_dir)
|
12
|
+
res = []
|
13
|
+
error_severity = 255
|
14
|
+
consoleOutputFullnames = ""
|
15
|
+
consoleOutput.each_line do |l|
|
16
|
+
d = ErrorDesc.new
|
17
|
+
lstripped = l.rstrip
|
18
|
+
scan_res = lstripped.scan(@error_expression_start)
|
19
|
+
if scan_res.length == 0
|
20
|
+
d.severity = error_severity
|
21
|
+
d.message = lstripped
|
22
|
+
if lstripped.scan(@error_expression_end).length > 0
|
23
|
+
error_severity = 255
|
24
|
+
end
|
25
|
+
else
|
26
|
+
d.file_name = File.expand_path(scan_res[0][0])
|
27
|
+
d.line_number = scan_res[0][1].to_i
|
28
|
+
d.message = scan_res[0][4]
|
29
|
+
d.severity = get_severity(scan_res[0][3])
|
30
|
+
error_severity = d.severity
|
31
|
+
l.gsub!(scan_res[0][0],d.file_name)
|
32
|
+
end
|
33
|
+
res << d
|
34
|
+
consoleOutputFullnames << l
|
35
|
+
end
|
36
|
+
[res, consoleOutputFullnames]
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'bake/toolchain/errorparser/error_parser'
|
2
|
+
|
3
|
+
module Bake
|
4
|
+
class KeilLinkerErrorParser < ErrorParser
|
5
|
+
|
6
|
+
def initialize()
|
7
|
+
@error_expression = /([^:]+): (L[0-9]+[A-Z]: .+)/
|
8
|
+
end
|
9
|
+
|
10
|
+
def scan_lines(consoleOutput, proj_dir)
|
11
|
+
res = []
|
12
|
+
consoleOutput.each_line do |l|
|
13
|
+
l.rstrip!
|
14
|
+
d = ErrorDesc.new
|
15
|
+
scan_res = l.scan(@error_expression)
|
16
|
+
if scan_res.length > 0
|
17
|
+
d.file_name = proj_dir
|
18
|
+
d.line_number = 0
|
19
|
+
d.message = scan_res[0][1]
|
20
|
+
d.severity = get_severity(scan_res[0][0])
|
21
|
+
error_severity = d.severity
|
22
|
+
end
|
23
|
+
res << d
|
24
|
+
end
|
25
|
+
[res, consoleOutput]
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'bake/toolchain/errorparser/error_parser'
|
2
|
+
|
3
|
+
module Bake
|
4
|
+
class LintErrorParser < ErrorParser
|
5
|
+
|
6
|
+
def initialize()
|
7
|
+
@error_expression = /([^:]*):([0-9]+): ([A-Za-z]+)[ ]*(.+)/
|
8
|
+
end
|
9
|
+
|
10
|
+
def scan_lines(consoleOutput, proj_dir)
|
11
|
+
res = []
|
12
|
+
consoleOutputFullnames = ""
|
13
|
+
consoleOutput.each_line do |l|
|
14
|
+
d = ErrorDesc.new
|
15
|
+
scan_res = l.gsub(/\r\n?/, "").scan(@error_expression)
|
16
|
+
if scan_res.length > 0
|
17
|
+
if (scan_res[0][0] == "")
|
18
|
+
d.file_name = proj_dir
|
19
|
+
else
|
20
|
+
d.file_name = File.expand_path(scan_res[0][0])
|
21
|
+
end
|
22
|
+
d.line_number = scan_res[0][1].to_i
|
23
|
+
d.severity = get_severity(scan_res[0][2])
|
24
|
+
d.message = scan_res[0][3]
|
25
|
+
l.gsub!(scan_res[0][0],d.file_name)
|
26
|
+
end
|
27
|
+
res << d
|
28
|
+
consoleOutputFullnames << l
|
29
|
+
end
|
30
|
+
[res, consoleOutputFullnames]
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|