bake-toolkit 2.51.2 → 2.52.0
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/lib/bake/config/loader.rb +23 -14
- data/lib/bake/libElement.rb +2 -2
- data/lib/bake/model/metamodel.rb +8 -0
- data/lib/bake/model/metamodel_ext.rb +21 -0
- data/lib/bake/options/options.rb +10 -2
- data/lib/bake/options/usage.rb +1 -0
- data/lib/bake/toolchain/errorparser/gcc_compiler_error_parser.rb +3 -1
- data/lib/blocks/block.rb +6 -0
- data/lib/blocks/compile.rb +5 -3
- data/lib/blocks/convert.rb +6 -2
- data/lib/common/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 652c942772e53a8e02aacd190d4b5c6b7d15c5966727447cc4df221f2cf24843
|
4
|
+
data.tar.gz: 27952eb4784061168c8125bd0825a409e3ea681e9a8d6d4e8288c5f268021ebd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2257e2a91fda80533af002515c7bbfe4e6e8f44ecc719f2ad99ca3ca5d56b3dd4dc2c9e162737da30db73c8c3fa0b99ce36541d1af6e39dd071063305100c501
|
7
|
+
data.tar.gz: 9af48c70d00d6869c9bf59c16e5da761bf29b49b94b9f08ce4a269cc6a32387816ec3a131adc05790badaa176e96ca192e29f73b1051c9b7ce3104ebc66accbb
|
data/lib/bake/config/loader.rb
CHANGED
@@ -87,13 +87,7 @@ module Bake
|
|
87
87
|
|
88
88
|
# check if config has to be manipulated
|
89
89
|
@adaptConfigs.each do |c|
|
90
|
-
|
91
|
-
if isMain
|
92
|
-
@defaultToolchainName = config.defaultToolchain.basedOn unless config.defaultToolchain.nil?
|
93
|
-
@mainProjectName = config.parent.name
|
94
|
-
@mainConfigName = config.name
|
95
|
-
end
|
96
|
-
|
90
|
+
|
97
91
|
projSplitted = c.project.split(";")
|
98
92
|
confSplitted = c.name.split(";")
|
99
93
|
projPatterns = projSplitted.map { |p| /\A#{p.gsub("*", "(\\w*)")}\z/ }
|
@@ -107,13 +101,28 @@ module Bake
|
|
107
101
|
|| (isMain and confSplitted.any? {|p| p == "__MAIN__"}) \
|
108
102
|
|| confSplitted.any? {|p| p == "__ALL__"}
|
109
103
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
104
|
+
adaptHash = c.parent.getHash
|
105
|
+
|
106
|
+
configHash = {
|
107
|
+
"toolchain" => [@defaultToolchainName],
|
108
|
+
"os" => [Utils::OS.name],
|
109
|
+
"mainProject" => [@mainProjectName],
|
110
|
+
"mainConfig" => [@mainConfigName]
|
111
|
+
}
|
112
|
+
config.scopes.each do |s|
|
113
|
+
configHash[s.name] = [] unless configHash.has_key?(s.name)
|
114
|
+
configHash[s.name] += s.value.split(";")
|
115
|
+
end
|
116
|
+
|
117
|
+
checkCondition = lambda {|name,value|
|
118
|
+
return true if adaptHash[name].empty?
|
119
|
+
if !configHash.has_key?(name)
|
120
|
+
return adaptHash[name].any?{|ah| ah.empty?}
|
121
|
+
end
|
122
|
+
adaptHash[name].any? { |ah| configHash[name].any?{|ch| ah.match(ch)}}
|
123
|
+
}
|
124
|
+
|
125
|
+
adaptCondition = adaptHash.all? {|name,value| checkCondition.call(name, value)}
|
117
126
|
|
118
127
|
invertLogic = (Bake::Metamodel::Unless === c.parent)
|
119
128
|
next if (adaptCondition && invertLogic) || (!adaptCondition && !invertLogic)
|
data/lib/bake/libElement.rb
CHANGED
@@ -53,9 +53,9 @@ module Bake
|
|
53
53
|
def self.addOwnLib(block)
|
54
54
|
if block.library
|
55
55
|
adaptedPath, prefix = adaptPath(block.library.archive_name, block, prefix)
|
56
|
+
cb = block.library.compileBlock
|
56
57
|
if (block.prebuild and File.exist?adaptedPath) or
|
57
|
-
(!
|
58
|
-
(!block.library.compileBlock.nil? and !block.library.compileBlock.calcSources(true, true).empty?)
|
58
|
+
(!cb.nil? and !(cb.calcSources(true, true) - cb.source_files_ignored_in_lib).empty?)
|
59
59
|
@@linker_libs_array << adaptedPath
|
60
60
|
@@source_libraries << adaptedPath
|
61
61
|
end
|
data/lib/bake/model/metamodel.rb
CHANGED
@@ -30,6 +30,11 @@ module Bake
|
|
30
30
|
|
31
31
|
CompilerType = RGen::MetamodelBuilder::DataTypes::Enum.new( :name => "CompilerType", :literals => [:CPP, :C, :ASM])
|
32
32
|
|
33
|
+
class Scope < ModelElement
|
34
|
+
has_attr 'name', String, :defaultValueLiteral => ""
|
35
|
+
has_attr 'value', String, :defaultValueLiteral => ""
|
36
|
+
end
|
37
|
+
|
33
38
|
class Flags < ModelElement
|
34
39
|
has_attr 'overwrite', String, :defaultValueLiteral => ""
|
35
40
|
has_attr 'add', String, :defaultValueLiteral => ""
|
@@ -137,6 +142,7 @@ module Bake
|
|
137
142
|
|
138
143
|
class Files < ModelElement
|
139
144
|
has_attr 'name', String, :defaultValueLiteral => ""
|
145
|
+
has_attr 'compileOnly', Boolean, :defaultValueLiteral => "false"
|
140
146
|
contains_many 'define', Define, 'parent'
|
141
147
|
contains_many 'flags', Flags, 'parent'
|
142
148
|
end
|
@@ -276,6 +282,7 @@ module Bake
|
|
276
282
|
has_attr 'project', String, :defaultValueLiteral => ""
|
277
283
|
has_attr 'private', Boolean, :defaultValueLiteral => "false"
|
278
284
|
has_attr 'mergeInc', String, :defaultValueLiteral => ""
|
285
|
+
contains_many 'scopes', Scope, 'parent'
|
279
286
|
contains_one 'description', Description, 'parent'
|
280
287
|
contains_one 'startupSteps', StartupSteps, 'parent'
|
281
288
|
contains_one 'preSteps', PreSteps, 'parent'
|
@@ -336,6 +343,7 @@ module Bake
|
|
336
343
|
has_attr 'mainProject', String, :defaultValueLiteral => ""
|
337
344
|
has_attr 'mainConfig', String, :defaultValueLiteral => ""
|
338
345
|
contains_many 'config', BaseConfig_INTERNAL, 'parent'
|
346
|
+
contains_many 'scopes', Scope, 'parent'
|
339
347
|
end
|
340
348
|
|
341
349
|
class If < Adapt
|
@@ -32,6 +32,27 @@ module Bake
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
+
module Adapt::ClassModule
|
36
|
+
def mapValue(str)
|
37
|
+
str.split(";").map { |p| /\A#{p.gsub("*", "(\\w*)")}\z/ }
|
38
|
+
end
|
39
|
+
def calcHash()
|
40
|
+
@hash = {}
|
41
|
+
deprecated = ["toolchain", "mainConfig", "mainProject", "os"]
|
42
|
+
deprecated.each do |d|
|
43
|
+
@hash[d] = self.send(d).empty? ? [] : mapValue(self.send(d))
|
44
|
+
end
|
45
|
+
self.scopes.each do |s|
|
46
|
+
@hash[s.name] = [] unless @hash.has_key?(s.name)
|
47
|
+
@hash[s.name] += mapValue(s.value)
|
48
|
+
end
|
49
|
+
@hash
|
50
|
+
end
|
51
|
+
def getHash
|
52
|
+
@hash ||= calcHash()
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
35
56
|
module BaseConfig_INTERNAL::ClassModule
|
36
57
|
def qname
|
37
58
|
@qname ||= parent.name + "," + name
|
data/lib/bake/options/options.rb
CHANGED
@@ -24,7 +24,7 @@ module Bake
|
|
24
24
|
attr_reader :include_filter, :exclude_filter, :adapt # String List
|
25
25
|
attr_reader :conversion_info, :stopOnFirstError, :clean, :rebuild, :show_includes, :show_includes_and_defines, :projectPaths, :qac, :dry, :syncedOutput, :debug_threads, :skipBuildingLine # Boolean
|
26
26
|
attr_reader :linkOnly, :compileOnly, :no_autodir, :clobber, :docu, :debug, :prepro, :prebuild, :printTime, :json, :wparse, :caseSensitivityCheck, :fileCmd, :profiling # Boolean
|
27
|
-
attr_reader :dotAndCompile
|
27
|
+
attr_reader :dotAndCompile, :show_roots
|
28
28
|
attr_reader :threads, :socket # Fixnum
|
29
29
|
attr_reader :vars, :include_filter_args # map
|
30
30
|
attr_reader :verbose
|
@@ -91,6 +91,7 @@ module Bake
|
|
91
91
|
@defines = []
|
92
92
|
@fileCmd = false
|
93
93
|
@dotAndCompile = false
|
94
|
+
@show_roots = false
|
94
95
|
|
95
96
|
add_option(["-b", "" ], lambda { |x| set_build_config(x) })
|
96
97
|
add_option(["-m" ], lambda { |x| @main_dir = x })
|
@@ -109,7 +110,7 @@ module Bake
|
|
109
110
|
add_option(["--no-autodir", "--no_autodir" ], lambda { @no_autodir = true })
|
110
111
|
|
111
112
|
add_option(["--create" ], lambda { |x| Bake::Create.proj(x) })
|
112
|
-
add_option(["--conversion-info", "--conversion_info" ], lambda { @conversion_info = true
|
113
|
+
add_option(["--conversion-info", "--conversion_info" ], lambda { @conversion_info = true; @syncedOutput = true })
|
113
114
|
add_option(["--file-list", "--file_list" ], lambda { @filelist = Set.new })
|
114
115
|
add_option(["--filter-paths" ], lambda { @projectPaths = true })
|
115
116
|
add_option(["--qac" ], lambda { @qac = true })
|
@@ -165,6 +166,8 @@ module Bake
|
|
165
166
|
|
166
167
|
# deprecated and not replaced by new command
|
167
168
|
add_option(["--show_include_paths" ], lambda { @show_includes = true })
|
169
|
+
|
170
|
+
add_option(["--roots" ], lambda { @show_roots = true })
|
168
171
|
|
169
172
|
end
|
170
173
|
|
@@ -189,6 +192,11 @@ module Bake
|
|
189
192
|
end
|
190
193
|
|
191
194
|
@roots = Root.uniq(@roots)
|
195
|
+
|
196
|
+
if @show_roots
|
197
|
+
puts @roots.map {|r| r.dir }
|
198
|
+
ExitHelper.exit(0)
|
199
|
+
end
|
192
200
|
|
193
201
|
@adapt.uniq!
|
194
202
|
|
data/lib/bake/options/usage.rb
CHANGED
@@ -54,6 +54,7 @@ module Bake
|
|
54
54
|
puts " --incs-and-defs=json Prints includes and defines of all projects in json format"
|
55
55
|
puts " --incs-and-defs=bake Used by IDEs plugins"
|
56
56
|
puts " --conversion-info Prints infos for an external tool which converts bake configs for other build systems"
|
57
|
+
puts " --roots Prints all workspace roots"
|
57
58
|
puts " --file-list Writes all sources and headers used by a SINGLE config into '<config output folder>/file-list.txt'."
|
58
59
|
puts " Writes all sources and headers used by ALL configs into '<main config output folder/global-file-list.txt'."
|
59
60
|
puts " --prebuild Does not build configs which are marked as 'prebuild', this feature is used for distributions."
|
@@ -4,7 +4,8 @@ module Bake
|
|
4
4
|
class GCCCompilerErrorParser < ErrorParser
|
5
5
|
|
6
6
|
def initialize()
|
7
|
-
@error_expression =
|
7
|
+
@error_expression = /([^:]+):([0-9]+)[:0-9]* (catastrophic |fatal )*([A-Za-z\._]+): (.+)/
|
8
|
+
@error_expression2 = /([^:]+)\(([0-9]+)\): (catastrophic |fatal )*([A-Za-z\._]+): (.+)/
|
8
9
|
end
|
9
10
|
|
10
11
|
def scan_lines(consoleOutput, proj_dir)
|
@@ -13,6 +14,7 @@ module Bake
|
|
13
14
|
consoleOutput[0].each_line do |l|
|
14
15
|
d = ErrorDesc.new
|
15
16
|
scan_res = l.gsub(/\r\n?/, "").scan(@error_expression)
|
17
|
+
scan_res = l.gsub(/\r\n?/, "").scan(@error_expression2) if !(scan_res.length > 0)
|
16
18
|
if scan_res.length > 0
|
17
19
|
d.file_name = File.expand_path(scan_res[0][0], proj_dir)
|
18
20
|
d.line_number = scan_res[0][1].to_i
|
data/lib/blocks/block.rb
CHANGED
@@ -64,6 +64,10 @@ module Bake
|
|
64
64
|
def set_library(library)
|
65
65
|
@library = library
|
66
66
|
end
|
67
|
+
|
68
|
+
def qname()
|
69
|
+
@projectName + "," + @configName
|
70
|
+
end
|
67
71
|
|
68
72
|
def initialize(config, referencedConfigs, prebuild, tcs)
|
69
73
|
@inDeps = false
|
@@ -210,6 +214,7 @@ module Bake
|
|
210
214
|
end
|
211
215
|
|
212
216
|
def isBuildBlock?
|
217
|
+
return true if Bake.options.conversion_info
|
213
218
|
@isBuildBlock ||= calcIsBuildBlock
|
214
219
|
end
|
215
220
|
|
@@ -548,6 +553,7 @@ module Bake
|
|
548
553
|
def calcOutputDir
|
549
554
|
if @tcs[:OUTPUT_DIR] != nil
|
550
555
|
p = convPath(@tcs[:OUTPUT_DIR])
|
556
|
+
p = p[2..-1] if p.start_with?("./")
|
551
557
|
@output_dir = p
|
552
558
|
else
|
553
559
|
qacPart = Bake.options.qac ? (".qac" + Bake.options.buildDirDelimiter) : ""
|
data/lib/blocks/compile.rb
CHANGED
@@ -47,7 +47,7 @@ module Bake
|
|
47
47
|
|
48
48
|
class Compile < BlockBase
|
49
49
|
|
50
|
-
attr_reader :objects, :include_list
|
50
|
+
attr_reader :objects, :include_list, :source_files_ignored_in_lib
|
51
51
|
|
52
52
|
def mutex
|
53
53
|
@mutex ||= Mutex.new
|
@@ -526,7 +526,7 @@ module Bake
|
|
526
526
|
end
|
527
527
|
end
|
528
528
|
@object_files[source] = object
|
529
|
-
@objects << object
|
529
|
+
@objects << object unless @source_files_ignored_in_lib.include?(source)
|
530
530
|
end
|
531
531
|
end
|
532
532
|
end
|
@@ -534,6 +534,7 @@ module Bake
|
|
534
534
|
def calcSources(cleaning = false, keep = false)
|
535
535
|
return @source_files if @source_files and not @source_files.empty?
|
536
536
|
@source_files = []
|
537
|
+
@source_files_ignored_in_lib = []
|
537
538
|
|
538
539
|
exclude_files = Set.new
|
539
540
|
@config.excludeFiles.each do |pr|
|
@@ -559,6 +560,7 @@ module Bake
|
|
559
560
|
next if source_files.include?(f)
|
560
561
|
source_files << f
|
561
562
|
@source_files << f
|
563
|
+
@source_files_ignored_in_lib << f if sources.compileOnly
|
562
564
|
end
|
563
565
|
end
|
564
566
|
|
@@ -591,7 +593,7 @@ module Bake
|
|
591
593
|
end
|
592
594
|
end
|
593
595
|
|
594
|
-
@source_files
|
596
|
+
return @source_files
|
595
597
|
end
|
596
598
|
|
597
599
|
def calcIncludesInternal(block)
|
data/lib/blocks/convert.rb
CHANGED
@@ -12,6 +12,10 @@ module Bake
|
|
12
12
|
|
13
13
|
def execute
|
14
14
|
Dir.chdir(@projectDir) do
|
15
|
+
calcFileTcs
|
16
|
+
calcIncludes
|
17
|
+
calcDefines
|
18
|
+
calcFlags
|
15
19
|
calcSources
|
16
20
|
|
17
21
|
puts "START_INFO"
|
@@ -24,9 +28,9 @@ module Bake
|
|
24
28
|
puts " BAKE_DEFINES"
|
25
29
|
(@block.tcs[:COMPILER][:CPP][:DEFINES] + @block.tcs[:COMPILER][:C][:DEFINES] + @block.tcs[:COMPILER][:ASM][:DEFINES]).uniq.each { |s| puts " #{s}" }
|
26
30
|
puts " BAKE_DEPENDENCIES"
|
27
|
-
@block.dependencies.each { |dep| puts " #{dep.
|
31
|
+
@block.dependencies.each { |dep| puts " #{ALL_BLOCKS[dep].qname}" }
|
28
32
|
puts " BAKE_DEPENDENCIES_FILTERED"
|
29
|
-
@block.dependencies.each { |dep| puts " #{dep.
|
33
|
+
@block.dependencies.each { |dep| pn = ALL_BLOCKS[dep].projectName; puts " #{ALL_BLOCKS[dep].qname}" unless @projectName == pn || pn == "gmock" || pn == "gtest" }
|
30
34
|
puts "END_INFO"
|
31
35
|
end
|
32
36
|
return true
|
data/lib/common/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bake-toolkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.52.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Schaal
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rtext
|