bake-toolkit 2.50.0 → 2.51.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.
@@ -1,7 +1,7 @@
1
1
  module Bake
2
2
  class Version
3
3
  def self.number
4
- "2.50.0"
4
+ "2.51.0"
5
5
  end
6
6
 
7
7
  def self.printBakeVersion(ry = "")
@@ -113,25 +113,76 @@ module Bake
113
113
  end if configSteps
114
114
  end
115
115
 
116
- def addDependencies(block, config)
117
- config.dependency.each do |dep|
118
- @referencedConfigs[dep.name].each do |configRef|
119
- if configRef.name == dep.config
120
-
121
- if configRef.private && configRef.parent.name != config.parent.name
122
- Bake.formatter.printError("#{config.parent.name} (#{config.name}) depends on #{configRef.parent.name} (#{configRef.name}) which is private.", configRef)
123
- ExitHelper.exit(1)
116
+ def addSubDependencies(block, config)
117
+ subDeps = []
118
+ config.depInc.each do |dep|
119
+ if (Metamodel::Dependency === dep)
120
+ @referencedConfigs[dep.name].each do |configRef|
121
+ if configRef.name == dep.config
122
+ blockRef = Blocks::ALL_BLOCKS[configRef.qname]
123
+ break if blockRef.visited
124
+ blockRef.visited = true
125
+
126
+ subDeps += addSubDependencies(block, configRef)
127
+ subDeps << dep
128
+ break
124
129
  end
130
+ end
131
+ else
132
+ subDeps << dep if dep.inherit
133
+ end
134
+
135
+ end
136
+ @correctOrder << Blocks::ALL_BLOCKS[config.qname] if @corOrderActive
137
+ return subDeps
138
+ end
139
+
140
+ def addIncludes(block, config)
141
+ return if !config.respond_to?("includeDir")
142
+ config.includeDir.each do |inc|
143
+ if inc.inject == "front" || inc.infix == "front"
144
+
145
+ elsif inc.inject == "back" || inc.infix == "back"
146
+
147
+ end
148
+ end
149
+
150
+ end
125
151
 
126
- block.dependencies << configRef.qname if not Bake.options.project# and not Bake.options.filename
127
- blockRef = Blocks::ALL_BLOCKS[configRef.qname]
128
- block.childs << blockRef
129
- block.depToBlock[dep.name + "," + dep.config] = blockRef
130
- blockRef.parents << block
131
- break
152
+ def addDependencies(block, config)
153
+ Blocks::ALL_BLOCKS.each do |bname, b|
154
+ b.visited = false
155
+ end
156
+ block.visited = true
157
+
158
+ block.bes = []
159
+ block.config.depInc.each do |dep|
160
+ if (Metamodel::Dependency === dep)
161
+ @referencedConfigs[dep.name].each do |configRef|
162
+ if configRef.name == dep.config
163
+ qname = configRef.qname
164
+ blockRef = Blocks::ALL_BLOCKS[qname]
165
+
166
+ if configRef.private && configRef.parent.name != config.parent.name
167
+ Bake.formatter.printError("#{config.parent.name} (#{config.name}) depends on #{configRef.parent.name} (#{configRef.name}) which is private.", configRef)
168
+ ExitHelper.exit(1)
169
+ end
170
+
171
+ block.dependencies << qname if not Bake.options.project# and not Bake.options.filename
172
+ if !blockRef.visited
173
+ blockRef.visited = true
174
+ subDeps = addSubDependencies(block, configRef)
175
+ block.bes += subDeps
176
+ end
177
+ block.bes << dep
178
+ break
179
+ end
132
180
  end
181
+ else
182
+ block.bes << dep
133
183
  end
134
184
  end
185
+
135
186
  end
136
187
 
137
188
  def calcPrebuildBlocks
@@ -178,21 +229,59 @@ module Bake
178
229
  end
179
230
  end
180
231
  end
232
+
233
+ def makeIncs
234
+ Blocks::ALL_BLOCKS.each do |name,block|
235
+ bes2 = []
236
+ block.bes.each do |inc|
237
+ rootsFound = false
238
+ if Metamodel::IncludeDir === inc
239
+ if inc.name == "___ROOTS___"
240
+ Bake.options.roots.each do |r|
241
+ i = Metamodel::IncludeDir.new
242
+ i.name = r.dir
243
+ i.inherit = inc.inherit
244
+ i.inject = inc.inject
245
+ i.infix = inc.infix
246
+ i.parent = inc.parent
247
+ bes2 << i
248
+ end
249
+ rootsFound = true
250
+ else
251
+ if inc.parent == block.config
252
+ Dir.chdir(block.projectDir) do
253
+ i = block.convPath(inc,nil,true)
254
+ inc.name = File.expand_path(Pathname.new(i).cleanpath)
255
+ end
256
+ end
257
+ end
258
+ end
259
+ bes2 << inc if !rootsFound
260
+ end
261
+ block.bes = bes2
262
+ end
263
+ end
181
264
 
182
265
  def makeGraph
266
+ mainConfig = @referencedConfigs[Bake.options.main_project_name].select { |c| c.name == Bake.options.build_config }.first
183
267
  @referencedConfigs.each do |projName, configs|
184
268
  configs.each do |config|
185
269
  block = Blocks::ALL_BLOCKS[config.qname]
186
- addDependencies(block, config)
270
+ if (config == mainConfig)
271
+ @correctOrder = []
272
+ @corOrderActive = true
273
+ end
274
+ addDependencies(block, config)
275
+ if (config == mainConfig)
276
+ @correctOrder.unshift(block)
277
+ @corOrderActive = false
278
+ end
187
279
  end
188
280
  end
189
281
  Blocks::ALL_BLOCKS.each do |name,block|
190
282
  block.dependencies.uniq!
191
- block.childs.uniq!
192
- block.parents.uniq!
193
283
  end
194
284
 
195
-
196
285
  # inject dependencies
197
286
  num_interations = 0
198
287
  begin
@@ -200,44 +289,74 @@ module Bake
200
289
  puts "Inject dependencies, iteration #{num_interations}:"
201
290
  Blocks::ALL_BLOCKS.each do |name,block|
202
291
  puts block.config.qname
203
- block.dependencies.each { |d| puts "- #{d}" }
292
+ block.bes.select{|b| Metamodel::Dependency === b}.each { |d| puts "- #{d.name},#{d.config}" }
204
293
  end
205
294
  end
206
295
 
207
296
  counter = 0
208
- Blocks::ALL_BLOCKS.each do |name,block|
209
- block.getBlocks(:parents).each do |b|
210
- b.config.dependency.each do |d|
297
+ @correctOrder.reverse.each do |block|
298
+ name = block.config.qname
299
+ difr = []
300
+ diba = []
301
+ block.bes.each do |d|
302
+ if Metamodel::Dependency === d
211
303
  next if d.inject == ""
212
-
213
304
  dqname = "#{d.name},#{d.config}"
214
- dblock = Blocks::ALL_BLOCKS[dqname]
215
305
  next if name == dqname
216
- next if block.childs.include? dblock
217
- counter += 1
218
- newD = MergeConfig::cloneModelElement(d)
219
- newD.setInject("")
220
- ls = block.config.getBaseElement
221
- dblock.parents << block
222
-
223
306
  if d.inject == "front"
224
- block.config.setBaseElement(ls.unshift(newD))
225
- block.childs.unshift dblock
226
- block.dependencies.unshift dqname if not Bake.options.project
227
- else
228
- block.config.setBaseElement(ls + [newD])
229
- block.childs << dblock
230
- block.dependencies << dqname if not Bake.options.project
307
+ difr << d
308
+ elsif d.inject == "back"
309
+ diba << d
310
+ end
311
+ d.inject = "" # this prevents injecting to injected deps
312
+ d.setInjected
313
+ elsif Metamodel::IncludeDir === d
314
+ if d.inject == "front" || d.infix == "front"
315
+ difr << d
316
+ elsif d.inject == "back" || d.infix == "back"
317
+ diba << d
231
318
  end
232
- block.depToBlock[d.name + "," + d.config] = dblock
319
+ d.inject = "" # this prevents injecting to injected deps
320
+ d.infix = ""
321
+ end
322
+ end
323
+ next if difr.empty? && diba.empty?
233
324
 
325
+ block.bes.each do |dep|
326
+ next unless Metamodel::Dependency === dep
327
+ if dep.injected?
328
+ difr2 = difr.select{|d| Metamodel::IncludeDir === d }
329
+ diba2 = diba.select{|d| Metamodel::IncludeDir === d }
330
+ else
331
+ difr2 = difr
332
+ diba2 = diba
234
333
  end
334
+
335
+ fde = Blocks::ALL_BLOCKS[dep.name+","+dep.config]
336
+ l1 = fde.bes.length
337
+ fde.bes = (difr2 + fde.bes + diba2).uniq # .select{|d| !(Metamodel::Dependency===d) || d.name != dep.name || d.config != dep.config }
338
+ l2 = fde.bes.length
339
+ counter += 1 if (l2 != l1)
235
340
  end
236
341
  end
237
342
  num_interations += 1
238
343
  end while counter > 0
239
344
  end
240
345
 
346
+ def makeUniq
347
+ Blocks::ALL_BLOCKS.each do |name,block|
348
+ bes2 = []
349
+ blockSet = Set.new
350
+ block.bes.each do |b|
351
+ n = Metamodel::Dependency === b ? b.name+","+b.config : b.name + "," + b.inherit.to_s
352
+ next if blockSet.include?n
353
+ blockSet << n
354
+ bes2 << b
355
+ end
356
+ block.bes = bes2
357
+ end
358
+ end
359
+
241
360
  def makeDot
242
361
 
243
362
  File.open(Bake.options.dot, 'w') do |file|
@@ -523,20 +642,33 @@ module Bake
523
642
  Bake.options.analyze = @defaultToolchain[:COMPILER][:CPP][:COMPILE_FLAGS].include?"analyze"
524
643
  Bake.options.eclipseOrder = @mainConfig.defaultToolchain.eclipseOrder
525
644
 
645
+ puts "Profiling #{Time.now - $timeStart}: create base toolchains..." if Bake.options.profiling
526
646
  createBaseTcsForConfig
647
+ puts "Profiling #{Time.now - $timeStart}: substitute variables..." if Bake.options.profiling
527
648
  substVars
649
+ puts "Profiling #{Time.now - $timeStart}: toolchains..." if Bake.options.profiling
528
650
  createTcsForConfig
529
-
530
651
  @@linkBlock = 0
531
-
532
652
  @prebuild = nil
533
- calcPrebuildBlocks if Bake.options.prebuild
534
-
653
+ if Bake.options.prebuild
654
+ puts "Profiling #{Time.now - $timeStart}: create prebuild blocks..." if Bake.options.profiling
655
+ calcPrebuildBlocks
656
+ end
657
+ puts "Profiling #{Time.now - $timeStart}: make blocks..." if Bake.options.profiling
535
658
  makeBlocks
659
+ puts "Profiling #{Time.now - $timeStart}: make graph..." if Bake.options.profiling
536
660
  makeGraph
537
- makeDot if Bake.options.dot
538
-
661
+ puts "Profiling #{Time.now - $timeStart}: make includes..." if Bake.options.profiling
662
+ makeIncs
663
+ puts "Profiling #{Time.now - $timeStart}: make uniq..." if Bake.options.profiling
664
+ makeUniq
665
+ if Bake.options.dot
666
+ puts "Profiling #{Time.now - $timeStart}: make dot..." if Bake.options.profiling
667
+ makeDot
668
+ end
669
+ puts "Profiling #{Time.now - $timeStart}: convert to building blocks..." if Bake.options.profiling
539
670
  convert2bb
671
+
540
672
  ensure
541
673
  if Bake.options.show_includes || Bake.options.show_includes_and_defines
542
674
  Thread.current[:stdout] = orgStdout
@@ -559,6 +691,8 @@ module Bake
559
691
  ideAbort = false
560
692
  Blocks::Block.reset_delayed_result
561
693
 
694
+ puts "Profiling #{Time.now - $timeStart}: start build..." if Bake.options.profiling
695
+
562
696
  begin
563
697
  Blocks::Block.init_threads()
564
698
  result = callBlocks(startBlocks, :startup, true)
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.50.0
4
+ version: 2.51.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-02-07 00:00:00.000000000 Z
11
+ date: 2019-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rtext