bake-toolkit 2.46.0 → 2.47.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/bin/bake +46 -46
- data/bin/bake-doc +1 -1
- data/bin/bake-format +1 -1
- data/bin/bakeclean +1 -1
- data/bin/bakeqac +9 -9
- data/bin/bakery +11 -11
- data/lib/adapt/config/loader.rb +2 -2
- data/lib/bake/cache.rb +5 -5
- data/lib/bake/config/loader.rb +3 -3
- data/lib/bake/mergeConfig.rb +1 -1
- data/lib/bake/model/language.rb +1 -4
- data/lib/bake/model/loader.rb +6 -6
- data/lib/bake/model/metamodel.rb +21 -0
- data/lib/bake/model/metamodel_ext.rb +2 -2
- data/lib/bake/options/create.rb +1 -1
- data/lib/bake/options/options.rb +24 -16
- data/lib/bake/options/showDoc.rb +1 -1
- data/lib/bake/options/usage.rb +3 -1
- data/lib/bake/subst.rb +14 -13
- data/lib/bake/toolchain/clang.rb +5 -5
- data/lib/bake/toolchain/clang_analyze.rb +2 -2
- data/lib/bake/toolchain/diab.rb +4 -4
- data/lib/bake/toolchain/errorparser/diab_compiler_error_parser.rb +1 -1
- data/lib/bake/toolchain/errorparser/diab_linker_error_parser.rb +1 -1
- data/lib/bake/toolchain/errorparser/gcc_compiler_error_parser.rb +1 -1
- data/lib/bake/toolchain/errorparser/gcc_linker_error_parser.rb +1 -1
- data/lib/bake/toolchain/errorparser/greenhills_compiler_error_parser.rb +1 -1
- data/lib/bake/toolchain/errorparser/greenhills_linker_error_parser.rb +1 -1
- data/lib/bake/toolchain/errorparser/keil_compiler_error_parser.rb +1 -1
- data/lib/bake/toolchain/errorparser/keil_linker_error_parser.rb +1 -1
- data/lib/bake/toolchain/errorparser/msvc_compiler_error_parser.rb +1 -1
- data/lib/bake/toolchain/errorparser/msvc_linker_error_parser.rb +1 -1
- data/lib/bake/toolchain/errorparser/tasking_compiler_error_parser.rb +1 -1
- data/lib/bake/toolchain/errorparser/tasking_linker_error_parser.rb +1 -1
- data/lib/bake/toolchain/errorparser/ti_compiler_error_parser.rb +1 -1
- data/lib/bake/toolchain/errorparser/ti_linker_error_parser.rb +1 -1
- data/lib/bake/toolchain/gcc.rb +9 -5
- data/lib/bake/toolchain/gcc_env.rb +5 -5
- data/lib/bake/toolchain/greenhills.rb +4 -4
- data/lib/bake/toolchain/keil.rb +5 -5
- data/lib/bake/toolchain/msvc.rb +5 -5
- data/lib/bake/toolchain/provider.rb +10 -10
- data/lib/bake/toolchain/tasking.rb +4 -4
- data/lib/bake/toolchain/ti.rb +5 -5
- data/lib/bake/util.rb +5 -6
- data/lib/bakeclean/options/options.rb +2 -2
- data/lib/bakeqac/options/options.rb +4 -4
- data/lib/bakery/model/language.rb +1 -1
- data/lib/bakery/model/loader.rb +5 -5
- data/lib/bakery/options/options.rb +4 -4
- data/lib/bakery/toBake.rb +1 -1
- data/lib/blocks/block.rb +4 -4
- data/lib/blocks/blockBase.rb +0 -11
- data/lib/blocks/commandLine.rb +2 -2
- data/lib/blocks/compile.rb +69 -29
- data/lib/blocks/convert.rb +1 -1
- data/lib/blocks/docu.rb +1 -1
- data/lib/blocks/executable.rb +1 -1
- data/lib/blocks/fileutil.rb +62 -0
- data/lib/blocks/library.rb +1 -1
- data/lib/blocks/makefile.rb +1 -1
- data/lib/blocks/showIncludes.rb +4 -4
- data/lib/blocks/sleep.rb +41 -0
- data/lib/common/cleanup.rb +1 -1
- data/lib/common/crc32.rb +1 -1
- data/lib/common/ext/file.rb +1 -1
- data/lib/common/ext/stdout.rb +1 -1
- data/lib/common/ide_interface.rb +2 -2
- data/lib/common/options/parser.rb +2 -2
- data/lib/common/version.rb +1 -1
- data/lib/multithread/job.rb +1 -1
- data/lib/tocxx.rb +124 -102
- metadata +5 -6
- data/bin/createVSProjects +0 -214
- data/lib/vs/options.rb +0 -69
data/lib/blocks/commandLine.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative 'has_execute_command'
|
2
2
|
|
3
3
|
module Bake
|
4
4
|
module Blocks
|
@@ -6,7 +6,7 @@ module Bake
|
|
6
6
|
class CommandLine
|
7
7
|
include HasExecuteCommand
|
8
8
|
|
9
|
-
def initialize(config
|
9
|
+
def initialize(config)
|
10
10
|
@config = config # Bake::Metamodel::CommandLine
|
11
11
|
@commandLine = config.name
|
12
12
|
@projectDir = config.get_project_dir
|
data/lib/blocks/compile.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
|
1
|
+
require_relative 'blockBase'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
require_relative '../multithread/job'
|
4
|
+
require_relative '../common/process'
|
5
|
+
require_relative '../common/ext/dir'
|
6
|
+
require_relative '../common/utils'
|
7
|
+
require_relative '../bake/toolchain/colorizing_formatter'
|
8
|
+
require_relative '../bake/config/loader'
|
9
9
|
|
10
10
|
|
11
11
|
begin
|
@@ -254,14 +254,70 @@ module Bake
|
|
254
254
|
|
255
255
|
success = true
|
256
256
|
consoleOutput = ""
|
257
|
-
|
258
|
-
|
257
|
+
incList = nil
|
258
|
+
if !Bake.options.diabCaseCheck
|
259
|
+
success, consoleOutput = ProcessHelper.run(cmd, false, false, nil, [0], @projectDir) if !Bake.options.dry
|
260
|
+
incList = process_result(cmd, consoleOutput, compiler[:ERROR_PARSER], nil, reason, success)
|
261
|
+
end
|
262
|
+
|
259
263
|
if type != :ASM and not Bake.options.analyze and not Bake.options.prepro
|
260
264
|
Dir.mutex.synchronize do
|
261
|
-
|
262
|
-
|
263
|
-
|
265
|
+
if !Bake.options.diabCaseCheck
|
266
|
+
Dir.chdir(@projectDir) do
|
267
|
+
incList = Compile.read_depfile(dep_filename, @projectDir, @block.tcs[:COMPILER][:DEP_FILE_SINGLE_LINE]) if incList.nil?
|
268
|
+
Compile.write_depfile(source, incList, dep_filename_conv, @projectDir)
|
269
|
+
end
|
264
270
|
end
|
271
|
+
if !Bake.options.dry && Bake.options.caseSensitivityCheck
|
272
|
+
wrongCase = []
|
273
|
+
|
274
|
+
if compiler[:COMMAND] == "dcc"
|
275
|
+
if Bake.options.diabCaseCheck
|
276
|
+
pos = cmd.find_index(compiler[:OBJECT_FILE_FLAG])
|
277
|
+
preProCmd = (cmd[0..pos-1] + cmd[pos+2..-1] + ["-E"])
|
278
|
+
success, consoleOutput = ProcessHelper.run(preProCmd, false, false, nil, [0], @projectDir)
|
279
|
+
if !success
|
280
|
+
Bake.formatter.printError("Error: could not compile #{source}")
|
281
|
+
raise SystemCommandFailed.new
|
282
|
+
end
|
283
|
+
Dir.chdir(@projectDir) do
|
284
|
+
incList = Compile.read_depfile(dep_filename, @projectDir, @block.tcs[:COMPILER][:DEP_FILE_SINGLE_LINE])
|
285
|
+
Compile.write_depfile(source, incList, dep_filename_conv, @projectDir)
|
286
|
+
end
|
287
|
+
ergs = consoleOutput.scan(/# \d+ "([^"]+)" \d+/)
|
288
|
+
ergs.each do |f|
|
289
|
+
next if source.include?f[0]
|
290
|
+
next if f[0].length>=2 && f[0][1] == ":"
|
291
|
+
filenameToCheck = f[0].gsub(/\\/,"/").gsub(/\/\//,"/").gsub(/\A\.\//,"")
|
292
|
+
if incList.none?{|i| i.include?(filenameToCheck) }
|
293
|
+
Dir.chdir(@projectDir) do
|
294
|
+
wrongCase << [filenameToCheck, realname(filenameToCheck)]
|
295
|
+
end
|
296
|
+
end
|
297
|
+
end
|
298
|
+
end
|
299
|
+
else # not diab
|
300
|
+
Dir.chdir(@projectDir) do
|
301
|
+
incList.each do |dep|
|
302
|
+
if dep.length<2 || dep[1] != ":"
|
303
|
+
real = realname(dep)
|
304
|
+
if dep != real && dep.upcase == real.upcase
|
305
|
+
wrongCase << [dep, real]
|
306
|
+
end
|
307
|
+
end
|
308
|
+
end unless incList.nil?
|
309
|
+
end
|
310
|
+
end
|
311
|
+
|
312
|
+
if wrongCase.length > 0
|
313
|
+
wrongCase.each do |c|
|
314
|
+
Bake.formatter.printError("Case sensitivity error in #{source}:\n included: #{c[0]}\n realname: #{c[1]}")
|
315
|
+
end
|
316
|
+
FileUtils.rm_f(dep_filename_conv)
|
317
|
+
raise SystemCommandFailed.new
|
318
|
+
end
|
319
|
+
end
|
320
|
+
|
265
321
|
end
|
266
322
|
|
267
323
|
incList.each do |h|
|
@@ -316,32 +372,16 @@ module Bake
|
|
316
372
|
# todo: move to toolchain util file
|
317
373
|
def self.write_depfile(source, deps, dep_filename_conv, projDir)
|
318
374
|
if deps && !Bake.options.dry
|
319
|
-
wrongCase = false
|
320
375
|
begin
|
321
376
|
File.open(dep_filename_conv, 'wb') do |f|
|
322
377
|
deps.each do |dep|
|
323
378
|
f.puts(dep)
|
324
|
-
|
325
|
-
if (Bake.options.caseSensitivityCheck)
|
326
|
-
if dep.length<2 || dep[1] != ":"
|
327
|
-
real = realname(dep)
|
328
|
-
if dep != real && dep.upcase == real.upcase
|
329
|
-
Bake.formatter.printError("Case sensitivity error in #{source}:\n included: #{dep}\n realname: #{real}")
|
330
|
-
wrongCase = true
|
331
|
-
end
|
332
|
-
end
|
333
|
-
end
|
334
|
-
|
335
379
|
end
|
336
380
|
end
|
337
381
|
rescue Exception
|
338
382
|
Bake.formatter.printWarning("Could not write '#{dep_filename_conv}'", projDir)
|
339
383
|
return nil
|
340
384
|
end
|
341
|
-
if wrongCase
|
342
|
-
FileUtils.rm_f(dep_filename_conv)
|
343
|
-
raise SystemCommandFailed.new
|
344
|
-
end
|
345
385
|
end
|
346
386
|
end
|
347
387
|
|
@@ -601,7 +641,7 @@ module Bake
|
|
601
641
|
end
|
602
642
|
|
603
643
|
def getDefines(compiler)
|
604
|
-
compiler[:DEFINES].map {|k| "#{compiler[:DEFINE_FLAG]}#{k}"}
|
644
|
+
(compiler[:DEFINES] + Bake.options.defines).map {|k| "#{compiler[:DEFINE_FLAG]}#{k}"}
|
605
645
|
end
|
606
646
|
|
607
647
|
def getFlags(compiler)
|
data/lib/blocks/convert.rb
CHANGED
data/lib/blocks/docu.rb
CHANGED
data/lib/blocks/executable.rb
CHANGED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module Bake
|
4
|
+
module Blocks
|
5
|
+
|
6
|
+
class FileUtil
|
7
|
+
|
8
|
+
def initialize(config, type, projectDir)
|
9
|
+
@arg1 = config.name
|
10
|
+
@arg2 = config.respond_to?(:to) ? config.to : nil
|
11
|
+
@type = type
|
12
|
+
@projectDir = projectDir
|
13
|
+
@echo = (config.echo != "off")
|
14
|
+
end
|
15
|
+
|
16
|
+
def run
|
17
|
+
Dir.chdir(@projectDir) do
|
18
|
+
if @type == :touch
|
19
|
+
puts "Touching #{@arg1}" if @echo
|
20
|
+
FileUtils.touch(@arg1)
|
21
|
+
elsif @type == :move
|
22
|
+
puts "Moving #{@arg1} to #{@arg2}" if @echo
|
23
|
+
FileUtils.mv(@arg1, @arg2)
|
24
|
+
elsif @type == :copy
|
25
|
+
puts "Copying #{@arg1} to #{@arg2}" if @echo
|
26
|
+
FileUtils.cp_r(@arg1, @arg2)
|
27
|
+
elsif @type == :remove
|
28
|
+
puts "Removing #{@arg1}" if @echo
|
29
|
+
FileUtils.rm_rf(@arg1)
|
30
|
+
elsif @type == :makedir
|
31
|
+
puts "Making #{@arg1}" if @echo
|
32
|
+
FileUtils.mkdir_p(@arg1)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
return true
|
36
|
+
end
|
37
|
+
|
38
|
+
def execute
|
39
|
+
return run()
|
40
|
+
end
|
41
|
+
|
42
|
+
def startupStep
|
43
|
+
return run()
|
44
|
+
end
|
45
|
+
|
46
|
+
def exitStep
|
47
|
+
return run()
|
48
|
+
end
|
49
|
+
|
50
|
+
def cleanStep
|
51
|
+
return run()
|
52
|
+
end
|
53
|
+
|
54
|
+
def clean
|
55
|
+
# nothing to do here
|
56
|
+
return true
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
data/lib/blocks/library.rb
CHANGED
data/lib/blocks/makefile.rb
CHANGED
data/lib/blocks/showIncludes.rb
CHANGED
@@ -110,9 +110,9 @@ module Bake
|
|
110
110
|
if Bake.options.json
|
111
111
|
projs[projName] =
|
112
112
|
{ :includes => (blockIncs + intIncs).uniq,
|
113
|
-
:cpp_defines => (blockDefs[:CPP] + intDefs[:CPP]).uniq,
|
114
|
-
:c_defines => (blockDefs[:C] + intDefs[:C]).uniq,
|
115
|
-
:asm_defines => (blockDefs[:ASM] + intDefs[:ASM]).uniq,
|
113
|
+
:cpp_defines => (blockDefs[:CPP] + intDefs[:CPP]).uniq + Bake.options.defines,
|
114
|
+
:c_defines => (blockDefs[:C] + intDefs[:C]).uniq + Bake.options.defines,
|
115
|
+
:asm_defines => (blockDefs[:ASM] + intDefs[:ASM]).uniq + Bake.options.defines,
|
116
116
|
:dir => blocks.first.projectDir
|
117
117
|
}
|
118
118
|
else
|
@@ -122,7 +122,7 @@ module Bake
|
|
122
122
|
(blockIncs + intIncs).uniq.each { |i| puts " #{i}" }
|
123
123
|
[:CPP, :C, :ASM].each do |type|
|
124
124
|
puts " #{type} defines"
|
125
|
-
(blockDefs[type] + intDefs[type]).uniq.each { |d| puts " #{d}" }
|
125
|
+
(blockDefs[type] + intDefs[type] + Bake.options.defines).uniq.each { |d| puts " #{d}" }
|
126
126
|
end
|
127
127
|
puts " done"
|
128
128
|
end
|
data/lib/blocks/sleep.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
module Bake
|
2
|
+
module Blocks
|
3
|
+
|
4
|
+
class Sleep
|
5
|
+
|
6
|
+
def initialize(config)
|
7
|
+
@echo = (config.echo != "off")
|
8
|
+
@time = config.name.to_f
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
puts "Sleeping #{@time}s" if @echo
|
13
|
+
sleep @time
|
14
|
+
return true
|
15
|
+
end
|
16
|
+
|
17
|
+
def execute
|
18
|
+
return run()
|
19
|
+
end
|
20
|
+
|
21
|
+
def startupStep
|
22
|
+
return run()
|
23
|
+
end
|
24
|
+
|
25
|
+
def exitStep
|
26
|
+
return run()
|
27
|
+
end
|
28
|
+
|
29
|
+
def cleanStep
|
30
|
+
return run()
|
31
|
+
end
|
32
|
+
|
33
|
+
def clean
|
34
|
+
# nothing to do here
|
35
|
+
return true
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
data/lib/common/cleanup.rb
CHANGED
data/lib/common/crc32.rb
CHANGED
data/lib/common/ext/file.rb
CHANGED
data/lib/common/ext/stdout.rb
CHANGED
data/lib/common/ide_interface.rb
CHANGED
data/lib/common/version.rb
CHANGED
data/lib/multithread/job.rb
CHANGED
data/lib/tocxx.rb
CHANGED
@@ -1,38 +1,40 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
4
|
+
require_relative 'bake/model/metamodel_ext'
|
5
|
+
|
6
|
+
require_relative 'bake/util'
|
7
|
+
require_relative 'bake/cache'
|
8
|
+
require_relative 'bake/subst'
|
9
|
+
require_relative 'bake/mergeConfig'
|
10
|
+
|
11
|
+
require_relative 'common/exit_helper'
|
12
|
+
require_relative 'common/ide_interface'
|
13
|
+
require_relative 'common/ext/file'
|
14
|
+
require_relative 'bake/toolchain/provider'
|
15
|
+
require_relative 'common/ext/stdout'
|
16
|
+
require_relative 'common/utils'
|
17
|
+
require_relative 'bake/toolchain/colorizing_formatter'
|
18
|
+
require_relative 'bake/config/loader'
|
19
|
+
|
20
|
+
require_relative 'blocks/block'
|
21
|
+
require_relative 'blocks/commandLine'
|
22
|
+
require_relative 'blocks/sleep'
|
23
|
+
require_relative 'blocks/fileutil'
|
24
|
+
require_relative 'blocks/makefile'
|
25
|
+
require_relative 'blocks/compile'
|
26
|
+
require_relative 'blocks/convert'
|
27
|
+
require_relative 'blocks/library'
|
28
|
+
require_relative 'blocks/executable'
|
29
|
+
require_relative 'blocks/docu'
|
28
30
|
|
29
31
|
require 'set'
|
30
32
|
require 'socket'
|
31
33
|
|
32
|
-
|
33
|
-
|
34
|
+
require_relative 'blocks/showIncludes'
|
35
|
+
require_relative 'common/abortException'
|
34
36
|
|
35
|
-
|
37
|
+
require_relative 'adapt/config/loader'
|
36
38
|
require "thwait"
|
37
39
|
|
38
40
|
module Bake
|
@@ -94,7 +96,19 @@ module Bake
|
|
94
96
|
if Bake::Metamodel::Makefile === step
|
95
97
|
blockSteps << Blocks::Makefile.new(step, @referencedConfigs, block)
|
96
98
|
elsif Bake::Metamodel::CommandLine === step
|
97
|
-
blockSteps << Blocks::CommandLine.new(step
|
99
|
+
blockSteps << Blocks::CommandLine.new(step)
|
100
|
+
elsif Bake::Metamodel::Sleep === step
|
101
|
+
blockSteps << Blocks::Sleep.new(step)
|
102
|
+
elsif Bake::Metamodel::Move === step
|
103
|
+
blockSteps << Blocks::FileUtil.new(step, :move, block.projectDir)
|
104
|
+
elsif Bake::Metamodel::Copy === step
|
105
|
+
blockSteps << Blocks::FileUtil.new(step, :copy, block.projectDir)
|
106
|
+
elsif Bake::Metamodel::Remove === step
|
107
|
+
blockSteps << Blocks::FileUtil.new(step, :remove, block.projectDir)
|
108
|
+
elsif Bake::Metamodel::MakeDir === step
|
109
|
+
blockSteps << Blocks::FileUtil.new(step, :makedir, block.projectDir)
|
110
|
+
elsif Bake::Metamodel::Touch === step
|
111
|
+
blockSteps << Blocks::FileUtil.new(step, :touch, block.projectDir)
|
98
112
|
end
|
99
113
|
end if configSteps
|
100
114
|
end
|
@@ -422,111 +436,119 @@ module Bake
|
|
422
436
|
|
423
437
|
def doit()
|
424
438
|
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
taskType = "Building"
|
432
|
-
if Bake.options.conversion_info
|
433
|
-
taskType = "Showing conversion infos"
|
434
|
-
elsif Bake.options.docu
|
435
|
-
taskType = "Generating documentation"
|
436
|
-
elsif Bake.options.prepro
|
437
|
-
taskType = "Preprocessing"
|
438
|
-
elsif Bake.options.linkOnly
|
439
|
-
taskType = "Linking"
|
440
|
-
elsif Bake.options.rebuild
|
441
|
-
taskType = "Rebuilding"
|
442
|
-
elsif Bake.options.clean
|
443
|
-
taskType = "Cleaning"
|
439
|
+
stdoutSuppression = nil
|
440
|
+
orgStdout = nil
|
441
|
+
if Bake.options.show_includes || Bake.options.show_includes_and_defines
|
442
|
+
stdoutSuppression = StringIO.new
|
443
|
+
orgStdout = Thread.current[:stdout]
|
444
|
+
Thread.current[:stdout] = stdoutSuppression unless orgStdout
|
444
445
|
end
|
445
446
|
|
446
447
|
begin
|
447
448
|
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
449
|
+
taskType = "Building"
|
450
|
+
if Bake.options.conversion_info
|
451
|
+
taskType = "Showing conversion infos"
|
452
|
+
elsif Bake.options.docu
|
453
|
+
taskType = "Generating documentation"
|
454
|
+
elsif Bake.options.prepro
|
455
|
+
taskType = "Preprocessing"
|
456
|
+
elsif Bake.options.linkOnly
|
457
|
+
taskType = "Linking"
|
458
|
+
elsif Bake.options.rebuild
|
459
|
+
taskType = "Rebuilding"
|
460
|
+
elsif Bake.options.clean
|
461
|
+
taskType = "Cleaning"
|
462
|
+
end
|
463
|
+
|
464
|
+
begin
|
455
465
|
|
456
|
-
if
|
466
|
+
if Bake.options.showConfigs
|
457
467
|
al = AdaptConfig.new
|
458
468
|
adaptConfigs = al.load()
|
469
|
+
Config.new.printConfigs(adaptConfigs)
|
470
|
+
else
|
471
|
+
cache = CacheAccess.new()
|
472
|
+
@referencedConfigs = cache.load_cache unless Bake.options.nocache
|
473
|
+
|
474
|
+
if @referencedConfigs.nil?
|
475
|
+
al = AdaptConfig.new
|
476
|
+
adaptConfigs = al.load()
|
459
477
|
|
460
|
-
|
461
|
-
|
478
|
+
@loadedConfig = Config.new
|
479
|
+
@referencedConfigs = @loadedConfig.load(adaptConfigs)
|
462
480
|
|
463
|
-
|
481
|
+
cache.write_cache(@referencedConfigs, adaptConfigs)
|
482
|
+
end
|
464
483
|
end
|
465
|
-
end
|
466
484
|
|
467
|
-
|
485
|
+
taskType = "Analyzing" if Bake.options.analyze
|
468
486
|
|
469
|
-
|
487
|
+
@mainConfig = @referencedConfigs[Bake.options.main_project_name].select { |c| c.name == Bake.options.build_config }.first
|
470
488
|
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
489
|
+
basedOn = @mainConfig.defaultToolchain.basedOn
|
490
|
+
basedOnToolchain = Bake::Toolchain::Provider[basedOn]
|
491
|
+
if basedOnToolchain.nil?
|
492
|
+
Bake.formatter.printError("DefaultToolchain based on unknown compiler '#{basedOn}'", @mainConfig.defaultToolchain)
|
493
|
+
ExitHelper.exit(1)
|
494
|
+
end
|
477
495
|
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
496
|
+
# The flag "-FS" must only be set for VS2013 and above
|
497
|
+
ENV["MSVC_FORCE_SYNC_PDB_WRITES"] = ""
|
498
|
+
if basedOn == "MSVC"
|
499
|
+
begin
|
500
|
+
res = `cl.exe 2>&1`
|
501
|
+
raise Exception.new unless $?.success?
|
502
|
+
scan_res = res.scan(/ersion (\d+).(\d+).(\d+)/)
|
503
|
+
if scan_res.length > 0
|
504
|
+
ENV["MSVC_FORCE_SYNC_PDB_WRITES"] = "-FS" if scan_res[0][0].to_i >= 18 # 18 is the compiler major version in VS2013
|
505
|
+
else
|
506
|
+
Bake.formatter.printError("Could not read MSVC version")
|
507
|
+
ExitHelper.exit(1)
|
508
|
+
end
|
509
|
+
rescue SystemExit
|
510
|
+
raise
|
511
|
+
rescue Exception => e
|
512
|
+
Bake.formatter.printError("Could not detect MSVC compiler")
|
489
513
|
ExitHelper.exit(1)
|
490
514
|
end
|
491
|
-
rescue SystemExit
|
492
|
-
raise
|
493
|
-
rescue Exception => e
|
494
|
-
Bake.formatter.printError("Could not detect MSVC compiler")
|
495
|
-
ExitHelper.exit(1)
|
496
515
|
end
|
497
|
-
end
|
498
516
|
|
499
|
-
|
500
|
-
|
517
|
+
@defaultToolchain = Utils.deep_copy(basedOnToolchain)
|
518
|
+
Bake.options.envToolchain = true if (basedOn.include?"_ENV")
|
501
519
|
|
502
|
-
|
520
|
+
integrateToolchain(@defaultToolchain, @mainConfig.defaultToolchain)
|
503
521
|
|
504
|
-
|
505
|
-
|
506
|
-
|
522
|
+
# todo: cleanup this hack
|
523
|
+
Bake.options.analyze = @defaultToolchain[:COMPILER][:CPP][:COMPILE_FLAGS].include?"analyze"
|
524
|
+
Bake.options.eclipseOrder = @mainConfig.defaultToolchain.eclipseOrder
|
507
525
|
|
508
|
-
|
509
|
-
|
510
|
-
|
526
|
+
createBaseTcsForConfig
|
527
|
+
substVars
|
528
|
+
createTcsForConfig
|
511
529
|
|
512
|
-
|
530
|
+
@@linkBlock = 0
|
513
531
|
|
514
|
-
|
515
|
-
|
532
|
+
@prebuild = nil
|
533
|
+
calcPrebuildBlocks if Bake.options.prebuild
|
516
534
|
|
517
|
-
|
518
|
-
|
519
|
-
|
535
|
+
makeBlocks
|
536
|
+
makeGraph
|
537
|
+
makeDot if Bake.options.dot
|
520
538
|
|
521
|
-
|
539
|
+
convert2bb
|
540
|
+
ensure
|
541
|
+
if Bake.options.show_includes || Bake.options.show_includes_and_defines
|
542
|
+
Thread.current[:stdout] = orgStdout
|
543
|
+
puts stdoutSuppression.string # this ensures to print a error message is needed even in case of an exception
|
544
|
+
end
|
545
|
+
end
|
522
546
|
|
523
547
|
if Bake.options.show_includes
|
524
|
-
Thread.current[:stdout] = tmp
|
525
548
|
Blocks::Show.includes
|
526
549
|
end
|
527
550
|
|
528
551
|
if Bake.options.show_includes_and_defines
|
529
|
-
Thread.current[:stdout] = tmp
|
530
552
|
Blocks::Show.includesAndDefines(@mainConfig, @configTcMap[@mainConfig])
|
531
553
|
end
|
532
554
|
|