bake-toolkit 2.64.0 → 2.65.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 459f3b345548e018870f1c2a341e83fcdc538d980d87ef672bb1da409638f24f
4
- data.tar.gz: 7f9d86b3570dd9decaf74842d6c41fdd3eb4a7e8afd5d6de7b6212c46e63bff7
3
+ metadata.gz: 8fd56c91721f565baebab8ee13b453249a1673565cccd22ddde5787797035562
4
+ data.tar.gz: d6013cd8ad4eefe6f6979d2b3a905a30b1737b54398c7d317367bc9a36676e71
5
5
  SHA512:
6
- metadata.gz: 9fd1f9557d04c089a791cfb4eea47883a96ecede424ae428515db3d0153f93974dff1b7c52b7267942bef993c03ebf2df8e908c07b98463afd47e3d401710f3f
7
- data.tar.gz: 5170787b33c63a9e11aeb08d33d221f2c75f91febe2ea10248f78445eac18b5cc911780d46b6febe677e4c4d4493ace519cc48d8fd5bff73d29eb12efa038c50
6
+ metadata.gz: 4d360c2a3d60a572580ab81ab31575d330b69aa7001b09a3dd725e88e23c5bb3a7e34564d1933e8c68c680fea831eeec63c829f63e1cd5307079c319ef68ce09
7
+ data.tar.gz: 3190bf643083cd2378eec6b3a69077e17fe80c2f8f05080e80903306132c362c52dbea7ab834f5a8815eff1916b8b4689780ab863a9f93dbcce14f6dfd05b7da
@@ -0,0 +1,34 @@
1
+ require_relative'../../common/utils'
2
+ require_relative '../toolchain/provider'
3
+ require_relative '../toolchain/errorparser/error_parser'
4
+ require_relative '../toolchain/errorparser/gcc_compiler_error_parser'
5
+ require_relative '../toolchain/errorparser/gcc_linker_error_parser'
6
+
7
+ module Bake
8
+ module Toolchain
9
+ CLANG_BITCODE_CHAIN = Provider.add("CLANG_BITCODE")
10
+
11
+ CLANG_BITCODE_CHAIN[:COMPILER][:CPP].update({
12
+ :COMMAND => "clang++",
13
+ :DEFINE_FLAG => "-D",
14
+ :OBJECT_FILE_FLAG => "-o",
15
+ :OBJ_FLAG_SPACE => true,
16
+ :OBJECT_FILE_ENDING => ".bc",
17
+ :COMPILE_FLAGS => "-emit-llvm -c ",
18
+ :ERROR_PARSER => nil,
19
+ :DEP_FLAGS => "-MD -MF",
20
+ :DEP_FLAGS_SPACE => true,
21
+ })
22
+
23
+ CLANG_BITCODE_CHAIN[:COMPILER][:C] = Utils.deep_copy(CLANG_BITCODE_CHAIN[:COMPILER][:CPP])
24
+ CLANG_BITCODE_CHAIN[:COMPILER][:C][:SOURCE_FILE_ENDINGS] = Provider.default[:COMPILER][:C][:SOURCE_FILE_ENDINGS]
25
+ CLANG_BITCODE_CHAIN[:COMPILER][:C][:COMMAND] = "clang"
26
+
27
+ CLANG_BITCODE_CHAIN[:ARCHIVER][:COMMAND] = "llvm-link"
28
+ CLANG_BITCODE_CHAIN[:ARCHIVER][:ARCHIVE_FLAGS] = "-o"
29
+ CLANG_BITCODE_CHAIN[:ARCHIVER][:ARCHIVE_FILE_ENDING] = ".bc"
30
+
31
+ CLANG_BITCODE_CHAIN[:LINKER][:COMMAND] = "llvm-link"
32
+ CLANG_BITCODE_CHAIN[:LINKER][:EXE_FLAG] = "-o"
33
+ end
34
+ end
@@ -88,6 +88,7 @@ module Bake
88
88
  :PREFIX => "$(ArchiverPrefix)",
89
89
  :ARCHIVE_FLAGS => "",
90
90
  :ARCHIVE_FLAGS_SPACE => true,
91
+ :ARCHIVE_FILE_ENDING => ".a",
91
92
  :FLAGS => "",
92
93
  :ERROR_PARSER => nil,
93
94
  :FILE_COMMAND => ""
@@ -163,6 +164,7 @@ require_relative '../toolchain/diab'
163
164
  require_relative '../toolchain/gcc'
164
165
  require_relative '../toolchain/clang'
165
166
  require_relative '../toolchain/clang_analyze'
167
+ require_relative '../toolchain/clang_bitcode'
166
168
  require_relative '../toolchain/ti'
167
169
  require_relative '../toolchain/greenhills'
168
170
  require_relative '../toolchain/keil'
@@ -2,6 +2,7 @@ require_relative '../bake/libElement'
2
2
  require_relative '../bake/model/metamodel'
3
3
  require_relative '../common/abortException'
4
4
  require_relative "../multithread/job"
5
+ gem "thwait", "0.1.0"
5
6
  require "thwait"
6
7
 
7
8
  module Bake
@@ -52,7 +52,7 @@ module Bake
52
52
 
53
53
  class Compile < BlockBase
54
54
 
55
- attr_reader :objects, :source_files, :include_list, :source_files_ignored_in_lib, :object_files_ignored_in_lib
55
+ attr_reader :objects, :source_files, :source_files_compiled, :include_list, :source_files_ignored_in_lib, :object_files_ignored_in_lib, :object_files
56
56
 
57
57
  def mutex
58
58
  @mutex ||= Mutex.new
@@ -133,14 +133,18 @@ module Bake
133
133
  return false
134
134
  end
135
135
 
136
+ def calcObjectBasename(object)
137
+ object.chomp(File.extname(object))
138
+ end
139
+
136
140
  def calcCmdlineFile(object)
137
- File.expand_path(object[0..-3] + ".cmdline", @projectDir)
141
+ File.expand_path(calcObjectBasename(object) + ".cmdline", @projectDir)
138
142
  end
139
143
 
140
144
  def calcDepFile(object, type)
141
145
  dep_filename = nil
142
146
  if type != :ASM
143
- dep_filename = object[0..-3] + ".d"
147
+ dep_filename = calcObjectBasename(object) + ".d"
144
148
  end
145
149
  dep_filename
146
150
  end
@@ -426,6 +430,7 @@ module Bake
426
430
  Utils.gitIgnore(odir) if !Bake.options.dry
427
431
 
428
432
  fileListBlock = Set.new if Bake.options.filelist
433
+ @source_files_compiled = @source_files.dup
429
434
  compileJobs = Multithread::Jobs.new(@source_files) do |jobs|
430
435
  while source = jobs.get_next_or_nil do
431
436
 
@@ -544,7 +549,7 @@ module Bake
544
549
  end
545
550
 
546
551
  def calcSources(cleaning = false, keep = false)
547
- return @source_files if @source_files and not @source_files.empty?
552
+ return @source_files if @source_files && !@source_files.empty?
548
553
  @source_files = []
549
554
  @source_files_ignored_in_lib = []
550
555
  @source_files_link_directly = []
@@ -560,7 +565,7 @@ module Bake
560
565
  pr = sources.name
561
566
  pr = pr[2..-1] if pr.start_with?"./"
562
567
 
563
- res = Dir.glob_dir(pr, @projectDir).sort
568
+ res = Dir.glob_dir(pr, @projectDir).select {|f| !get_source_type(f).nil?}.sort
564
569
  if res.length == 0 and cleaning == false
565
570
  if not pr.include?"*" and not pr.include?"?"
566
571
  Bake.formatter.printError("Source file '#{pr}' not found", sources)
@@ -190,9 +190,15 @@ module Bake
190
190
  BlockBase.writeCmdLineFile(cmd, cmdLineFile)
191
191
  success = true
192
192
  consoleOutput = ""
193
- success, consoleOutput = ProcessHelper.run(realCmd, false, false, outPipe) if !Bake.options.dry
194
- process_result(cmdLinePrint, consoleOutput, linker[:ERROR_PARSER], nil, reason, success)
195
-
193
+ retry_linking = Bake.options.dev_features.include?("retry-linking") ? 5 : 1
194
+ begin
195
+ success, consoleOutput = ProcessHelper.run(realCmd, false, false, outPipe) if !Bake.options.dry
196
+ process_result(cmdLinePrint, consoleOutput, linker[:ERROR_PARSER], nil, reason, success)
197
+ rescue Exception
198
+ retry_linking -= 1
199
+ retry if !success && retry_linking > 0
200
+ raise
201
+ end
196
202
  check_config_file()
197
203
  end
198
204
 
@@ -18,10 +18,13 @@ module Bake
18
18
  end
19
19
 
20
20
  def calcArtifactName
21
+ archiver = @block.tcs[:ARCHIVER]
22
+ fileEnding = archiver[:ARCHIVE_FILE_ENDING]
23
+
21
24
  if not @config.artifactName.nil? and @config.artifactName.name != ""
22
25
  baseFilename = @config.artifactName.name
23
26
  else
24
- baseFilename = "lib#{@projectName}.a"
27
+ baseFilename = "lib#{@projectName}#{fileEnding}"
25
28
  end
26
29
  if !@config.artifactExtension.nil? && @config.artifactExtension.name != "default"
27
30
  extension = ".#{@config.artifactExtension.name}"
@@ -1,7 +1,7 @@
1
1
  module Bake
2
2
  class Version
3
3
  def self.number
4
- "2.64.0"
4
+ "2.65.0"
5
5
  end
6
6
 
7
7
  def self.printBakeVersion(ry = "")
@@ -859,6 +859,7 @@ module Bake
859
859
  !Bake.options.linkOnly &&
860
860
  !Bake.options.prepro &&
861
861
  !Bake.options.compileOnly &&
862
+ !Bake.options.dry &&
862
863
  !Bake.options.clean
863
864
 
864
865
  ccChecks = []
@@ -885,19 +886,18 @@ module Bake
885
886
  inCompilation = Set.new
886
887
  Blocks::ALL_BLOCKS.each do |name,block|
887
888
  block.mainSteps.each do |b|
888
- if Blocks::Compile === b
889
- b.source_files.each do |s|
889
+ if Blocks::Compile === b && !b.source_files_compiled.nil?
890
+ b.source_files_compiled.each do |s|
890
891
  inCompilation << File.expand_path(s, b.projectDir)
891
892
  type = b.get_source_type(s)
892
- if type != :ASM
893
- b.objects.each do |o|
894
- dep_filename = b.calcDepFile(o, type)
895
- dep_filename_conv = b.calcDepFileConv(dep_filename)
896
- File.readlines(File.expand_path(dep_filename_conv, b.projectDir)).map{|line| line.strip}.each do |dep|
897
- header = File.expand_path(dep, b.projectDir)
898
- if File.exist?(header)
899
- inCompilation << header
900
- end
893
+ if type != :ASM && b.object_files && b.object_files.has_key?(s)
894
+ o = b.object_files[s]
895
+ dep_filename = b.calcDepFile(o, type)
896
+ dep_filename_conv = b.calcDepFileConv(dep_filename)
897
+ File.readlines(File.expand_path(dep_filename_conv, b.projectDir)).map{|line| line.strip}.each do |dep|
898
+ header = File.expand_path(dep, b.projectDir)
899
+ if File.exist?(header)
900
+ inCompilation << header
901
901
  end
902
902
  end
903
903
  end
@@ -905,6 +905,7 @@ module Bake
905
905
  end
906
906
  end
907
907
  end
908
+
908
909
  pnPwd = Pathname.new(Dir.pwd)
909
910
  ccNotIncluded = (ccIncludes - inCompilation).to_a
910
911
  ccNotExcluded = inCompilation.select {|i| ccExcludes.include?(i) }
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.64.0
4
+ version: 2.65.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: 2020-07-22 00:00:00.000000000 Z
11
+ date: 2020-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rtext
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: thwait
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 0.1.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 0.1.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: e2mmap
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -204,6 +204,7 @@ files:
204
204
  - lib/bake/subst.rb
205
205
  - lib/bake/toolchain/clang.rb
206
206
  - lib/bake/toolchain/clang_analyze.rb
207
+ - lib/bake/toolchain/clang_bitcode.rb
207
208
  - lib/bake/toolchain/colorizing_formatter.rb
208
209
  - lib/bake/toolchain/diab.rb
209
210
  - lib/bake/toolchain/errorparser/diab_compiler_error_parser.rb