bake-toolkit 2.19.2 → 2.20.1
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/documentation/_build/html/_images/dot.png +0 -0
- data/documentation/_build/html/_images/dotP.png +0 -0
- data/documentation/_build/html/_images/dotPC.png +0 -0
- data/documentation/_build/html/_sources/changelog.txt +12 -0
- data/documentation/_build/html/_sources/concepts/concepts.txt +2 -0
- data/documentation/_build/html/_sources/concepts/inject.txt +65 -0
- data/documentation/_build/html/_sources/concepts/prebuild.txt +56 -0
- data/documentation/_build/html/_sources/index.txt +1 -1
- data/documentation/_build/html/_sources/syntax/auto_adjustment.txt +43 -0
- data/documentation/_build/html/_sources/syntax/syntax.txt +1 -1
- data/documentation/_build/html/_sources/syntax/variable_substitutions.txt +41 -68
- data/documentation/_build/html/_sources/tips_and_tricks/dot.txt +34 -0
- data/documentation/_build/html/_sources/tips_and_tricks/tips_and_tricks.txt +1 -1
- data/documentation/_build/html/_static/dot.png +0 -0
- data/documentation/_build/html/_static/dotP.png +0 -0
- data/documentation/_build/html/_static/dotPC.png +0 -0
- data/documentation/_build/html/_static/syntax.html +20 -0
- data/documentation/_build/html/changelog.html +17 -3
- data/documentation/_build/html/commandline/commandline.html +3 -3
- data/documentation/_build/html/concepts/build_hierarchy.html +3 -3
- data/documentation/_build/html/concepts/concepts.html +13 -3
- data/documentation/_build/html/concepts/inject.html +217 -0
- data/documentation/_build/html/concepts/link_order.html +3 -3
- data/documentation/_build/html/concepts/prebuild.html +205 -0
- data/documentation/_build/html/concepts/the_main_project.html +3 -3
- data/documentation/_build/html/concepts/the_project_meta_file.html +3 -3
- data/documentation/_build/html/genindex.html +3 -3
- data/documentation/_build/html/ide/eclipse/eclipse.html +3 -3
- data/documentation/_build/html/ide/eclipse/how_to_convert_existing_cdt_workspace.html +3 -3
- data/documentation/_build/html/ide/eclipse/how_to_create_a_new_project_in_eclipse.html +3 -3
- data/documentation/_build/html/ide/eclipse/how_to_create_a_workspace_in_eclipse.html +3 -3
- data/documentation/_build/html/ide/eclipse/how_to_debug_in_eclipse.html +3 -3
- data/documentation/_build/html/ide/eclipse/how_to_install_eclipse_plugin.html +3 -3
- data/documentation/_build/html/ide/eclipse/how_to_use_bake_in_eclipse.html +3 -3
- data/documentation/_build/html/ide/ide_integrations.html +3 -3
- data/documentation/_build/html/ide/vs/how_to_create_vs_projects.html +3 -3
- data/documentation/_build/html/ide/vs/how_to_debug_in_vs.html +3 -3
- data/documentation/_build/html/ide/vs/how_to_used_bake_in_vs.html +3 -3
- data/documentation/_build/html/ide/vs/vs.html +3 -3
- data/documentation/_build/html/ide/vs/vs_install.html +3 -3
- data/documentation/_build/html/index.html +10 -7
- data/documentation/_build/html/install/install_bake.html +3 -3
- data/documentation/_build/html/internal.html +3 -3
- data/documentation/_build/html/known_issues.html +3 -3
- data/documentation/_build/html/license.html +3 -3
- data/documentation/_build/html/performance/performance.html +5 -5
- data/documentation/_build/html/quickstart/quickstart.html +3 -3
- data/documentation/_build/html/search.html +3 -3
- data/documentation/_build/html/searchindex.js +1 -1
- data/documentation/_build/html/syntax/adapt_configs.html +3 -3
- data/documentation/_build/html/syntax/auto_adjustment.html +190 -0
- data/documentation/_build/html/syntax/derive_configs.html +3 -3
- data/documentation/_build/html/syntax/project_meta_syntax.html +23 -3
- data/documentation/_build/html/syntax/syntax.html +11 -7
- data/documentation/_build/html/syntax/variable_substitutions.html +54 -67
- data/documentation/_build/html/tips_and_tricks/{bundle.html → dot.html} +25 -19
- data/documentation/_build/html/tips_and_tricks/how_to_use_bake_with_cygwin.html +3 -3
- data/documentation/_build/html/tips_and_tricks/static_code_analysis.html +3 -3
- data/documentation/_build/html/tips_and_tricks/the_bakery.html +3 -3
- data/documentation/_build/html/tips_and_tricks/the_clang.html +5 -5
- data/documentation/_build/html/tips_and_tricks/tips_and_tricks.html +4 -4
- data/documentation/_build/html/why_bake/why_bake.html +5 -5
- data/lib/adapt/config/loader.rb +37 -35
- data/lib/bake/config/checks.rb +19 -11
- data/lib/bake/config/loader.rb +67 -60
- data/lib/bake/model/metamodel.rb +56 -30
- data/lib/bake/options/options.rb +37 -3
- data/lib/bake/options/usage.rb +12 -3
- data/lib/bake/subst.rb +5 -2
- data/lib/blocks/block.rb +27 -6
- data/lib/blocks/blockBase.rb +2 -17
- data/lib/blocks/compile.rb +91 -91
- data/lib/blocks/executable.rb +41 -41
- data/lib/common/version.rb +1 -1
- data/lib/tocxx.rb +212 -55
- metadata +16 -4
- data/documentation/_build/html/_sources/tips_and_tricks/bundle.txt +0 -24
data/lib/blocks/blockBase.rb
CHANGED
|
@@ -100,9 +100,9 @@ module Bake
|
|
|
100
100
|
p = @block.convPath(@tcs[:OUTPUT_DIR])
|
|
101
101
|
@output_dir = p
|
|
102
102
|
elsif isMainProject?
|
|
103
|
-
@output_dir = "build
|
|
103
|
+
@output_dir = "build" + Bake.options.buildDirDelimiter + Bake.options.build_config
|
|
104
104
|
else
|
|
105
|
-
@output_dir = "build
|
|
105
|
+
@output_dir = "build" + Bake.options.buildDirDelimiter + @config.name + "_" + Bake.options.main_project_name + "_" + Bake.options.build_config
|
|
106
106
|
end
|
|
107
107
|
end
|
|
108
108
|
|
|
@@ -199,21 +199,6 @@ module Bake
|
|
|
199
199
|
incList
|
|
200
200
|
end
|
|
201
201
|
|
|
202
|
-
def getSubBlocks(b, method)
|
|
203
|
-
b.send(method).each do |child_b|
|
|
204
|
-
if not @otherBlocks.include?child_b
|
|
205
|
-
@otherBlocks << child_b
|
|
206
|
-
getSubBlocks(child_b, method)
|
|
207
|
-
end
|
|
208
|
-
end
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
def getBlocks(method)
|
|
212
|
-
@otherBlocks = []
|
|
213
|
-
getSubBlocks(@block, method)
|
|
214
|
-
return @otherBlocks
|
|
215
|
-
end
|
|
216
|
-
|
|
217
202
|
end
|
|
218
203
|
end
|
|
219
204
|
end
|
data/lib/blocks/compile.rb
CHANGED
|
@@ -6,24 +6,24 @@ require 'bake/toolchain/colorizing_formatter'
|
|
|
6
6
|
require 'bake/config/loader'
|
|
7
7
|
|
|
8
8
|
module Bake
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
module Blocks
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
class Compile < BlockBase
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
attr_reader :objects, :include_list
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
def initialize(block, config, referencedConfigs, tcs)
|
|
17
17
|
super(block, config, referencedConfigs, tcs)
|
|
18
18
|
@objects = []
|
|
19
19
|
@object_files = {}
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
calcFileTcs
|
|
22
22
|
calcIncludes
|
|
23
23
|
calcDefines # not for files with changed tcs
|
|
24
24
|
calcFlags # not for files with changed tcs
|
|
25
25
|
end
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
def get_object_file(source)
|
|
28
28
|
|
|
29
29
|
# until now all OBJECT_FILE_ENDING are equal in all three types
|
|
@@ -31,23 +31,23 @@ module Bake
|
|
|
31
31
|
return adaptedSource if File.is_absolute?source
|
|
32
32
|
File.join([@output_dir, adaptedSource])
|
|
33
33
|
end
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
def ignore?(type)
|
|
36
36
|
Bake.options.linkOnly or (Bake.options.prepro and type == ASM)
|
|
37
37
|
end
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
def needed?(source, object, type, dep_filename_conv)
|
|
40
40
|
return "because analyzer toolchain is configured" if Bake.options.analyze
|
|
41
|
-
return "because prepro was specified and source is no assembler file" if Bake.options.prepro
|
|
42
|
-
|
|
41
|
+
return "because prepro was specified and source is no assembler file" if Bake.options.prepro
|
|
42
|
+
|
|
43
43
|
return "because object does not exist" if not File.exist?(object)
|
|
44
44
|
oTime = File.mtime(object)
|
|
45
|
-
|
|
45
|
+
|
|
46
46
|
return "because source is newer than object" if oTime < File.mtime(source)
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
if type != :ASM
|
|
49
49
|
return "because dependency file does not exist" if not File.exist?(dep_filename_conv)
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
begin
|
|
52
52
|
File.readlines(dep_filename_conv).map{|line| line.strip}.each do |dep|
|
|
53
53
|
if not File.exist?(dep)
|
|
@@ -68,19 +68,19 @@ module Bake
|
|
|
68
68
|
if Bake.options.debug
|
|
69
69
|
puts "While reading #{dep_filename_conv}:"
|
|
70
70
|
puts ex.message
|
|
71
|
-
puts ex.backtrace
|
|
71
|
+
puts ex.backtrace
|
|
72
72
|
end
|
|
73
73
|
return "because dependency file could not be loaded"
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
|
-
|
|
76
|
+
|
|
77
77
|
false
|
|
78
78
|
end
|
|
79
|
-
|
|
79
|
+
|
|
80
80
|
def calcCmdlineFile(object)
|
|
81
81
|
object[0..-3] + ".cmdline"
|
|
82
82
|
end
|
|
83
|
-
|
|
83
|
+
|
|
84
84
|
def calcDepFile(object, type)
|
|
85
85
|
dep_filename = nil
|
|
86
86
|
if type != :ASM
|
|
@@ -88,7 +88,7 @@ module Bake
|
|
|
88
88
|
end
|
|
89
89
|
dep_filename
|
|
90
90
|
end
|
|
91
|
-
|
|
91
|
+
|
|
92
92
|
def calcDepFileConv(dep_filename)
|
|
93
93
|
dep_filename + ".bake"
|
|
94
94
|
end
|
|
@@ -100,16 +100,16 @@ module Bake
|
|
|
100
100
|
end
|
|
101
101
|
nil
|
|
102
102
|
end
|
|
103
|
-
|
|
103
|
+
|
|
104
104
|
def compileFile(source)
|
|
105
105
|
type = get_source_type(source)
|
|
106
106
|
return if type.nil?
|
|
107
|
-
|
|
107
|
+
|
|
108
108
|
object = @object_files[source]
|
|
109
|
-
|
|
109
|
+
|
|
110
110
|
dep_filename = calcDepFile(object, type)
|
|
111
111
|
dep_filename_conv = calcDepFileConv(dep_filename) if type != :ASM
|
|
112
|
-
|
|
112
|
+
|
|
113
113
|
cmdLineCheck = false
|
|
114
114
|
cmdLineFile = calcCmdlineFile(object)
|
|
115
115
|
|
|
@@ -131,14 +131,14 @@ module Bake
|
|
|
131
131
|
end
|
|
132
132
|
includes = @include_array[type]
|
|
133
133
|
|
|
134
|
-
if Bake.options.prepro and compiler[:PREPRO_FLAGS] == ""
|
|
134
|
+
if Bake.options.prepro and compiler[:PREPRO_FLAGS] == ""
|
|
135
135
|
Bake.formatter.printError("Error: No preprocessor option available for " + source)
|
|
136
|
-
raise SystemCommandFailed.new
|
|
136
|
+
raise SystemCommandFailed.new
|
|
137
137
|
end
|
|
138
|
-
|
|
138
|
+
|
|
139
139
|
cmd = Utils.flagSplit(compiler[:COMMAND], false)
|
|
140
140
|
cmd += compiler[:COMPILE_FLAGS].split(" ")
|
|
141
|
-
|
|
141
|
+
|
|
142
142
|
if dep_filename
|
|
143
143
|
cmd += @tcs[:COMPILER][type][:DEP_FLAGS].split(" ")
|
|
144
144
|
if @tcs[:COMPILER][type][:DEP_FLAGS_FILENAME]
|
|
@@ -150,17 +150,17 @@ module Bake
|
|
|
150
150
|
else
|
|
151
151
|
cmd[cmd.length-1] << dep_filename
|
|
152
152
|
end
|
|
153
|
-
|
|
153
|
+
|
|
154
154
|
end
|
|
155
155
|
end
|
|
156
156
|
end
|
|
157
|
-
|
|
157
|
+
|
|
158
158
|
cmd += compiler[:PREPRO_FLAGS].split(" ") if Bake.options.prepro
|
|
159
159
|
cmd += flags
|
|
160
160
|
cmd += includes
|
|
161
161
|
cmd += defines
|
|
162
|
-
|
|
163
|
-
offlag = compiler[:OBJECT_FILE_FLAG]
|
|
162
|
+
|
|
163
|
+
offlag = compiler[:OBJECT_FILE_FLAG]
|
|
164
164
|
offlag = compiler[:PREPRO_FILE_FLAG] if compiler[:PREPRO_FILE_FLAG] and Bake.options.prepro
|
|
165
165
|
|
|
166
166
|
if compiler[:OBJ_FLAG_SPACE]
|
|
@@ -168,7 +168,7 @@ module Bake
|
|
|
168
168
|
cmd << object
|
|
169
169
|
else
|
|
170
170
|
if object.include?" "
|
|
171
|
-
cmd << offlag + "\"" + object + "\""
|
|
171
|
+
cmd << offlag + "\"" + object + "\""
|
|
172
172
|
else
|
|
173
173
|
cmd << offlag + object
|
|
174
174
|
end
|
|
@@ -178,24 +178,24 @@ module Bake
|
|
|
178
178
|
if Bake.options.cc2j_filename
|
|
179
179
|
Blocks::CC2J << { :directory => @projectDir, :command => cmd, :file => source }
|
|
180
180
|
end
|
|
181
|
-
|
|
181
|
+
|
|
182
182
|
if not (cmdLineCheck and BlockBase.isCmdLineEqual?(cmd, cmdLineFile))
|
|
183
183
|
BlockBase.prepareOutput(object)
|
|
184
184
|
BlockBase.writeCmdLineFile(cmd, cmdLineFile)
|
|
185
185
|
success, consoleOutput = ProcessHelper.run(cmd, false, false)
|
|
186
|
-
|
|
186
|
+
|
|
187
187
|
outputType = Bake.options.analyze ? "Analyzing" : (Bake.options.prepro ? "Preprocessing" : "Compiling")
|
|
188
188
|
incList = process_result(cmd, consoleOutput, compiler[:ERROR_PARSER], "#{outputType} #{source}", reason, success)
|
|
189
|
-
|
|
189
|
+
|
|
190
190
|
if type != :ASM and not Bake.options.analyze and not Bake.options.prepro
|
|
191
191
|
incList = Compile.read_depfile(dep_filename, @projectDir, @tcs[:COMPILER][:DEP_FILE_SINGLE_LINE]) if incList.nil?
|
|
192
|
-
Compile.write_depfile(incList, dep_filename_conv)
|
|
192
|
+
Compile.write_depfile(incList, dep_filename_conv)
|
|
193
193
|
end
|
|
194
194
|
check_config_file
|
|
195
195
|
end
|
|
196
|
-
|
|
196
|
+
|
|
197
197
|
Bake::Bundle.instance.addSource(source, @include_list, dep_filename_conv) if isMainProject?
|
|
198
|
-
|
|
198
|
+
|
|
199
199
|
end
|
|
200
200
|
|
|
201
201
|
def self.read_depfile(dep_filename, projDir, singeLine)
|
|
@@ -206,7 +206,7 @@ module Bake
|
|
|
206
206
|
splitted = line.split(": ")
|
|
207
207
|
deps << splitted[1].gsub(/[\\]/,'/') if splitted.length > 1
|
|
208
208
|
end
|
|
209
|
-
else
|
|
209
|
+
else
|
|
210
210
|
deps_string = File.read(dep_filename)
|
|
211
211
|
deps_string = deps_string.gsub(/\\\n/,'')
|
|
212
212
|
dep_splitted = deps_string.split(/([^\\]) /).each_slice(2).map(&:join)[2..-1]
|
|
@@ -218,7 +218,7 @@ module Bake
|
|
|
218
218
|
end
|
|
219
219
|
deps
|
|
220
220
|
end
|
|
221
|
-
|
|
221
|
+
|
|
222
222
|
# todo: move to toolchain util file
|
|
223
223
|
def self.write_depfile(deps, dep_filename_conv)
|
|
224
224
|
if deps
|
|
@@ -238,30 +238,30 @@ module Bake
|
|
|
238
238
|
def mutex
|
|
239
239
|
@mutex ||= Mutex.new
|
|
240
240
|
end
|
|
241
|
-
|
|
241
|
+
|
|
242
242
|
def execute
|
|
243
243
|
Dir.chdir(@projectDir) do
|
|
244
|
-
|
|
244
|
+
|
|
245
245
|
calcSources
|
|
246
246
|
calcObjects
|
|
247
247
|
|
|
248
248
|
@incWarns.each do |x|
|
|
249
249
|
Bake.formatter.printInfo("IncludeDir '#{x[0].name}' will be converted to '#{x[1]}' although local path exists. If not intended, use './#{x[0].name}'.", x[0])
|
|
250
250
|
end if Bake.options.verbose >= 1
|
|
251
|
-
|
|
251
|
+
|
|
252
252
|
@error_strings = {}
|
|
253
|
-
|
|
253
|
+
|
|
254
254
|
compileJobs = Multithread::Jobs.new(@source_files) do |jobs|
|
|
255
255
|
while source = jobs.get_next_or_nil do
|
|
256
|
-
|
|
256
|
+
|
|
257
257
|
if (jobs.failed and Bake.options.stopOnFirstError) or Bake::IDEInterface.instance.get_abort
|
|
258
258
|
break
|
|
259
259
|
end
|
|
260
|
-
|
|
260
|
+
|
|
261
261
|
s = StringIO.new
|
|
262
262
|
tmp = Thread.current[:stdout]
|
|
263
263
|
Thread.current[:stdout] = s unless tmp
|
|
264
|
-
|
|
264
|
+
|
|
265
265
|
result = false
|
|
266
266
|
begin
|
|
267
267
|
compileFile(source)
|
|
@@ -273,22 +273,22 @@ module Bake
|
|
|
273
273
|
Bake.formatter.printError("Error: #{ex1.message}")
|
|
274
274
|
puts ex1.backtrace if Bake.options.debug
|
|
275
275
|
end
|
|
276
|
-
end
|
|
277
|
-
|
|
276
|
+
end
|
|
277
|
+
|
|
278
278
|
jobs.set_failed if not result
|
|
279
|
-
|
|
279
|
+
|
|
280
280
|
Thread.current[:stdout] = tmp
|
|
281
|
-
|
|
281
|
+
|
|
282
282
|
mutex.synchronize do
|
|
283
|
-
if s.string.length > 0
|
|
283
|
+
if s.string.length > 0
|
|
284
284
|
if Bake.options.stopOnFirstError and not result
|
|
285
285
|
@error_strings[source] = s.string
|
|
286
286
|
else
|
|
287
287
|
puts s.string
|
|
288
288
|
end
|
|
289
289
|
end
|
|
290
|
-
end
|
|
291
|
-
|
|
290
|
+
end
|
|
291
|
+
|
|
292
292
|
end
|
|
293
293
|
end
|
|
294
294
|
compileJobs.join
|
|
@@ -297,35 +297,35 @@ module Bake
|
|
|
297
297
|
# if not sorted, it may be confusing when builing more than once and the order of the error appearances changes from build to build
|
|
298
298
|
# (it is not deterministic which file compilation finishes first)
|
|
299
299
|
@error_strings.sort.each {|es| puts es[1]}
|
|
300
|
-
|
|
300
|
+
|
|
301
301
|
raise SystemCommandFailed.new if compileJobs.failed
|
|
302
|
-
|
|
303
|
-
|
|
302
|
+
|
|
303
|
+
|
|
304
304
|
end
|
|
305
305
|
return true
|
|
306
306
|
end
|
|
307
|
-
|
|
307
|
+
|
|
308
308
|
def clean
|
|
309
309
|
if Bake.options.filename or Bake.options.analyze
|
|
310
310
|
Dir.chdir(@projectDir) do
|
|
311
311
|
calcSources(true)
|
|
312
312
|
@source_files.each do |source|
|
|
313
|
-
|
|
313
|
+
|
|
314
314
|
type = get_source_type(source)
|
|
315
315
|
next if type.nil?
|
|
316
316
|
object = get_object_file(source)
|
|
317
|
-
if File.exist?object
|
|
317
|
+
if File.exist?object
|
|
318
318
|
puts "Deleting file #{object}" if Bake.options.verbose >= 2
|
|
319
319
|
FileUtils.rm_rf(object)
|
|
320
320
|
end
|
|
321
321
|
if not Bake.options.analyze
|
|
322
322
|
dep_filename = calcDepFile(object, type)
|
|
323
|
-
if dep_filename and File.exist?dep_filename
|
|
323
|
+
if dep_filename and File.exist?dep_filename
|
|
324
324
|
puts "Deleting file #{dep_filename}" if Bake.options.verbose >= 2
|
|
325
325
|
FileUtils.rm_rf(dep_filename)
|
|
326
326
|
end
|
|
327
327
|
cmdLineFile = calcCmdlineFile(object)
|
|
328
|
-
if File.exist?cmdLineFile
|
|
328
|
+
if File.exist?cmdLineFile
|
|
329
329
|
puts "Deleting file #{cmdLineFile}" if Bake.options.verbose >= 2
|
|
330
330
|
FileUtils.rm_rf(cmdLineFile)
|
|
331
331
|
end
|
|
@@ -335,7 +335,7 @@ module Bake
|
|
|
335
335
|
end
|
|
336
336
|
return true
|
|
337
337
|
end
|
|
338
|
-
|
|
338
|
+
|
|
339
339
|
def calcObjects
|
|
340
340
|
@source_files.each do |source|
|
|
341
341
|
type = get_source_type(source)
|
|
@@ -345,7 +345,7 @@ module Bake
|
|
|
345
345
|
@object_files.each do |k,v|
|
|
346
346
|
if (v == object) # will be found exactly once
|
|
347
347
|
Bake.formatter.printError("Source files '#{k}' and '#{source}' would result in the same object file", source)
|
|
348
|
-
raise SystemCommandFailed.new
|
|
348
|
+
raise SystemCommandFailed.new
|
|
349
349
|
end
|
|
350
350
|
end
|
|
351
351
|
end
|
|
@@ -354,17 +354,17 @@ module Bake
|
|
|
354
354
|
end
|
|
355
355
|
end
|
|
356
356
|
end
|
|
357
|
-
|
|
357
|
+
|
|
358
358
|
def calcSources(cleaning = false, keep = false)
|
|
359
359
|
return @source_files if @source_files and not @source_files.empty?
|
|
360
360
|
Dir.chdir(@projectDir) do
|
|
361
361
|
@source_files = []
|
|
362
|
-
|
|
362
|
+
|
|
363
363
|
exclude_files = Set.new
|
|
364
364
|
@config.excludeFiles.each do |p|
|
|
365
365
|
Dir.glob(p.name).each {|f| exclude_files << f}
|
|
366
366
|
end
|
|
367
|
-
|
|
367
|
+
|
|
368
368
|
source_files = Set.new
|
|
369
369
|
@config.files.each do |sources|
|
|
370
370
|
p = sources.name
|
|
@@ -372,7 +372,7 @@ module Bake
|
|
|
372
372
|
if res.length == 0 and cleaning == false
|
|
373
373
|
if not p.include?"*" and not p.include?"?"
|
|
374
374
|
Bake.formatter.printError("Source file '#{p}' not found", sources)
|
|
375
|
-
raise SystemCommandFailed.new
|
|
375
|
+
raise SystemCommandFailed.new
|
|
376
376
|
elsif Bake.options.verbose >= 1
|
|
377
377
|
Bake.formatter.printInfo("Source file pattern '#{p}' does not match to any file", sources)
|
|
378
378
|
end
|
|
@@ -384,7 +384,7 @@ module Bake
|
|
|
384
384
|
@source_files << f
|
|
385
385
|
end
|
|
386
386
|
end
|
|
387
|
-
|
|
387
|
+
|
|
388
388
|
if Bake.options.filename
|
|
389
389
|
@source_files.keep_if do |source|
|
|
390
390
|
source.include?Bake.options.filename
|
|
@@ -393,7 +393,7 @@ module Bake
|
|
|
393
393
|
Bake.formatter.printInfo("#{Bake.options.filename} does not match to any source", @config)
|
|
394
394
|
end
|
|
395
395
|
end
|
|
396
|
-
|
|
396
|
+
|
|
397
397
|
if Bake.options.eclipseOrder # directories reverse order, files in directories in alphabetical order
|
|
398
398
|
dirs = []
|
|
399
399
|
filemap = {}
|
|
@@ -416,20 +416,20 @@ module Bake
|
|
|
416
416
|
end
|
|
417
417
|
@source_files
|
|
418
418
|
end
|
|
419
|
-
|
|
419
|
+
|
|
420
420
|
def mapInclude(inc, orgBlock)
|
|
421
|
-
|
|
421
|
+
|
|
422
422
|
if inc.name == "___ROOTS___"
|
|
423
423
|
return Bake.options.roots.map { |r| File.rel_from_to_project(@projectDir,r,false) }
|
|
424
424
|
end
|
|
425
|
-
|
|
425
|
+
|
|
426
426
|
i = orgBlock.convPath(inc,nil,true)
|
|
427
427
|
if orgBlock != @block
|
|
428
428
|
if not File.is_absolute?(i)
|
|
429
429
|
i = File.rel_from_to_project(@projectDir,orgBlock.config.parent.get_project_dir) + i
|
|
430
430
|
end
|
|
431
431
|
end
|
|
432
|
-
|
|
432
|
+
|
|
433
433
|
x = Pathname.new(i).cleanpath
|
|
434
434
|
if orgBlock.warnConvValid
|
|
435
435
|
@incWarns << [inc, x]
|
|
@@ -439,20 +439,20 @@ module Bake
|
|
|
439
439
|
|
|
440
440
|
def calcIncludes
|
|
441
441
|
@incWarns = []
|
|
442
|
-
|
|
442
|
+
|
|
443
443
|
@include_list = @config.includeDir.uniq.map do |dir|
|
|
444
444
|
mapInclude(dir, @block)
|
|
445
445
|
end
|
|
446
|
-
|
|
447
|
-
getBlocks(:childs).each do |b|
|
|
446
|
+
|
|
447
|
+
@block.getBlocks(:childs).each do |b|
|
|
448
448
|
b.config.includeDir.each do |inc|
|
|
449
449
|
if inc.inherit == true
|
|
450
|
-
@include_list << mapInclude(inc, b)
|
|
450
|
+
@include_list << mapInclude(inc, b)
|
|
451
451
|
end
|
|
452
452
|
end if b.config.respond_to?("includeDir")
|
|
453
453
|
end
|
|
454
|
-
|
|
455
|
-
getBlocks(:parents).each do |b|
|
|
454
|
+
|
|
455
|
+
@block.getBlocks(:parents).each do |b|
|
|
456
456
|
if b.config.respond_to?("includeDir")
|
|
457
457
|
include_list_front = []
|
|
458
458
|
b.config.includeDir.each do |inc|
|
|
@@ -465,27 +465,27 @@ module Bake
|
|
|
465
465
|
elsif inc.infix == "back"
|
|
466
466
|
@include_list << mapInclude(inc, b)
|
|
467
467
|
end
|
|
468
|
-
end
|
|
468
|
+
end
|
|
469
469
|
@include_list = include_list_front + @include_list
|
|
470
470
|
end
|
|
471
471
|
end
|
|
472
472
|
|
|
473
473
|
@include_list = @include_list.flatten.uniq
|
|
474
|
-
|
|
474
|
+
|
|
475
475
|
@include_array = {}
|
|
476
476
|
[:CPP, :C, :ASM].each do |type|
|
|
477
477
|
@include_array[type] = @include_list.map {|k| "#{@tcs[:COMPILER][type][:INCLUDE_PATH_FLAG]}#{k}"}
|
|
478
478
|
end
|
|
479
479
|
end
|
|
480
|
-
|
|
480
|
+
|
|
481
481
|
def getDefines(compiler)
|
|
482
482
|
compiler[:DEFINES].map {|k| "#{compiler[:DEFINE_FLAG]}#{k}"}
|
|
483
483
|
end
|
|
484
|
-
|
|
484
|
+
|
|
485
485
|
def getFlags(compiler)
|
|
486
486
|
Bake::Utils::flagSplit(compiler[:FLAGS],true)
|
|
487
487
|
end
|
|
488
|
-
|
|
488
|
+
|
|
489
489
|
def calcDefines
|
|
490
490
|
@define_array = {}
|
|
491
491
|
[:CPP, :C, :ASM].each do |type|
|
|
@@ -498,7 +498,7 @@ module Bake
|
|
|
498
498
|
@flag_array[type] = getFlags(@tcs[:COMPILER][type])
|
|
499
499
|
end
|
|
500
500
|
end
|
|
501
|
-
|
|
501
|
+
|
|
502
502
|
def calcFileTcs
|
|
503
503
|
@fileTcs = {}
|
|
504
504
|
@config.files.each do |f|
|
|
@@ -510,20 +510,20 @@ module Bake
|
|
|
510
510
|
err_res.line_number = f.line_number
|
|
511
511
|
err_res.severity = ErrorParser::SEVERITY_WARNING
|
|
512
512
|
err_res.message = "Toolchain settings not allowed for file patterns"
|
|
513
|
-
Bake::IDEInterface.instance.set_errors([err_res])
|
|
513
|
+
Bake::IDEInterface.instance.set_errors([err_res])
|
|
514
514
|
else
|
|
515
515
|
@fileTcs[f.name] = integrateCompilerFile(Utils.deep_copy(@tcs),f)
|
|
516
516
|
end
|
|
517
517
|
end
|
|
518
518
|
end
|
|
519
519
|
end
|
|
520
|
-
|
|
520
|
+
|
|
521
521
|
def tcs4source(source)
|
|
522
522
|
@fileTcs[source] || @tcs
|
|
523
|
-
end
|
|
524
|
-
|
|
525
|
-
|
|
523
|
+
end
|
|
524
|
+
|
|
525
|
+
|
|
526
526
|
end
|
|
527
|
-
|
|
527
|
+
|
|
528
528
|
end
|
|
529
529
|
end
|