bake-toolkit 1.8.0.1 → 2.0.10

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.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/bin/bake +14 -53
  3. data/bin/bakery +50 -43
  4. data/bin/createVSProjects +3 -3
  5. data/doc/cmd/install.html +1 -5
  6. data/doc/cmd/usecmd.html +29 -5
  7. data/doc/dyk/lint.html +21 -4
  8. data/doc/dyk/tipps.html +0 -6
  9. data/doc/eclipse/import.html +3 -1
  10. data/doc/eclipse/import/Import.png +0 -0
  11. data/doc/eclipse/use.html +8 -5
  12. data/doc/further/change.html +134 -1
  13. data/doc/further/issues.html +1 -0
  14. data/doc/further/wish.html +24 -21
  15. data/doc/index.html +1 -1
  16. data/doc/syntax/subst.html +8 -1
  17. data/doc/syntax/syntax.html +42 -14
  18. data/lib/bake/cache.rb +51 -59
  19. data/lib/bake/config/loader.rb +289 -0
  20. data/lib/bake/libElement.rb +134 -0
  21. data/lib/bake/mergeConfig.rb +1 -1
  22. data/lib/bake/model/language.rb +1 -1
  23. data/lib/bake/model/loader.rb +88 -0
  24. data/lib/bake/model/metamodel.rb +24 -16
  25. data/lib/bake/model/metamodel_ext.rb +9 -4
  26. data/lib/bake/options/options.rb +222 -0
  27. data/lib/bake/options/showConfigNames.rb +44 -0
  28. data/lib/bake/options/showDoc.rb +19 -0
  29. data/lib/bake/options/showLicense.rb +9 -0
  30. data/lib/bake/options/showToolchains.rb +39 -0
  31. data/lib/bake/options/usage.rb +54 -0
  32. data/lib/bake/process_output.rb +10 -0
  33. data/lib/bake/subst.rb +105 -40
  34. data/lib/bake/toolchain/clang.rb +44 -0
  35. data/lib/bake/toolchain/colorizing_formatter.rb +125 -0
  36. data/lib/bake/toolchain/diab.rb +53 -0
  37. data/lib/bake/toolchain/errorparser/diab_compiler_error_parser.rb +40 -0
  38. data/lib/bake/toolchain/errorparser/diab_linker_error_parser.rb +41 -0
  39. data/lib/bake/toolchain/errorparser/error_parser.rb +71 -0
  40. data/lib/bake/toolchain/errorparser/gcc_compiler_error_parser.rb +35 -0
  41. data/lib/bake/toolchain/errorparser/gcc_linker_error_parser.rb +35 -0
  42. data/lib/bake/toolchain/errorparser/greenhills_compiler_error_parser.rb +32 -0
  43. data/lib/bake/toolchain/errorparser/greenhills_linker_error_parser.rb +44 -0
  44. data/lib/bake/toolchain/errorparser/keil_compiler_error_parser.rb +40 -0
  45. data/lib/bake/toolchain/errorparser/keil_linker_error_parser.rb +30 -0
  46. data/lib/bake/toolchain/errorparser/lint_error_parser.rb +34 -0
  47. data/lib/bake/toolchain/errorparser/process_output.rb +3 -0
  48. data/lib/bake/toolchain/errorparser/ti_compiler_error_parser.rb +30 -0
  49. data/lib/bake/toolchain/errorparser/ti_linker_error_parser.rb +30 -0
  50. data/lib/bake/toolchain/gcc.rb +49 -0
  51. data/lib/bake/toolchain/gcc_param.rb +7 -0
  52. data/lib/bake/toolchain/greenhills.rb +52 -0
  53. data/lib/bake/toolchain/keil.rb +55 -0
  54. data/lib/bake/toolchain/lint.rb +20 -0
  55. data/lib/bake/toolchain/provider.rb +136 -0
  56. data/lib/bake/toolchain/ti.rb +47 -0
  57. data/lib/bake/util.rb +27 -15
  58. data/lib/bakery/buildPattern.rb +1 -1
  59. data/lib/bakery/model/language.rb +1 -1
  60. data/lib/bakery/model/loader.rb +56 -0
  61. data/lib/bakery/model/metamodel.rb +1 -1
  62. data/lib/bakery/options/options.rb +87 -0
  63. data/lib/bakery/toBake.rb +10 -6
  64. data/lib/blocks/block.rb +225 -0
  65. data/lib/blocks/blockBase.rb +155 -0
  66. data/lib/blocks/commandLine.rb +25 -0
  67. data/lib/blocks/compile.rb +382 -0
  68. data/lib/blocks/docu.rb +28 -0
  69. data/lib/blocks/executable.rb +143 -0
  70. data/lib/blocks/has_execute_command.rb +31 -0
  71. data/lib/blocks/library.rb +78 -0
  72. data/lib/blocks/lint.rb +53 -0
  73. data/lib/blocks/makefile.rb +87 -0
  74. data/lib/blocks/showIncludes.rb +114 -0
  75. data/lib/common/abortException.rb +4 -0
  76. data/lib/common/cleanup.rb +9 -0
  77. data/lib/common/exit_helper.rb +28 -0
  78. data/lib/common/ext/file.rb +88 -0
  79. data/lib/common/ext/stdout.rb +45 -0
  80. data/lib/common/ide_interface.rb +194 -0
  81. data/lib/common/options/option.rb +13 -0
  82. data/lib/common/options/parser.rb +59 -0
  83. data/lib/common/process.rb +64 -0
  84. data/lib/common/utils.rb +52 -0
  85. data/lib/{bake → common}/version.rb +3 -10
  86. data/lib/multithread/job.rb +44 -0
  87. data/lib/tocxx.rb +201 -932
  88. data/lib/vs/options.rb +3 -2
  89. data/license.txt +47 -22
  90. metadata +90 -30
  91. data/bin/bake-doc +0 -12
  92. data/lib/alias/loader.rb +0 -56
  93. data/lib/alias/model/language.rb +0 -22
  94. data/lib/alias/model/metamodel.rb +0 -29
  95. data/lib/bake/loader.rb +0 -92
  96. data/lib/bake/options.rb +0 -421
  97. data/lib/bakery/loader.rb +0 -57
  98. data/lib/bakery/options.rb +0 -105
  99. data/lib/option/parser.rb +0 -73
data/lib/bake/options.rb DELETED
@@ -1,421 +0,0 @@
1
- require 'cxxproject/ext/rake'
2
- require 'cxxproject/utils/printer'
3
- require "cxxproject/toolchain/colorizing_formatter"
4
- require "option/parser"
5
-
6
- module Cxxproject
7
-
8
- class Options < Parser
9
- attr_reader :build_config, :main_dir, :project, :filename, :eclipse_version, :alias_filename # String
10
- attr_reader :roots, :include_filter, :exclude_filter # String List
11
- attr_reader :clean, :rebuild, :single, :verbose, :nocache, :color, :show_includes, :show_includes_and_defines, :linkOnly, :check_uninc, :printLess, :no_autodir, :clobber, :lint, :debug, :cmake # Boolean
12
- attr_reader :threads, :socket, :lint_min, :lint_max # Fixnum
13
- attr_reader :vars # map
14
-
15
- def initialize(argv)
16
- super(argv)
17
-
18
- @vars = {}
19
- @build_config = ""
20
- @main_dir = nil
21
- @project = nil
22
- @filename = nil
23
- @single = false
24
- @clean = false
25
- @clobber = false
26
- @lint = false
27
- @debug = false
28
- @rebuild = false
29
- @verbose = false
30
- @nocache = false
31
- @check_uninc = false
32
- @color = false
33
- @show_includes = false
34
- @show_includes_and_defines = false
35
- @linkOnly = false
36
- @printLess = false
37
- @no_autodir = false
38
- @cmake = false
39
- @threads = 8
40
- @lint_min = -1
41
- @lint_max = -1
42
- @roots = []
43
- @socket = 0
44
- @include_filter = []
45
- @exclude_filter = []
46
- @def_roots = []
47
- @eclipse_version = ""
48
- @alias_filename = ""
49
-
50
- add_default(Proc.new{ |x| set_build_config_default(x) })
51
-
52
- add_option(Option.new("-m",true) { |x| set_main_dir(x) })
53
- add_option(Option.new("-b",true) { |x| set_build_config(x) })
54
- add_option(Option.new("-p",true) { |x| set_project(x); set_single })
55
- add_option(Option.new("-f",true) { |x| set_filename(x) })
56
- add_option(Option.new("-c",false) { set_clean })
57
- add_option(Option.new("-a",true) { |x| set_color(x) })
58
- add_option(Option.new("-w",true) { |x| set_root(x) })
59
- add_option(Option.new("-r",false) { set_error })
60
- add_option(Option.new("--depfileInfo",false) { set_depfileInfo })
61
- add_option(Option.new("--rebuild",false) { set_rebuild })
62
- add_option(Option.new("--prepro",false) { set_prepro })
63
- add_option(Option.new("--link_only",false) { set_linkOnly })
64
- add_option(Option.new("--no_autodir",false) { set_no_autodir })
65
- add_option(Option.new("--lint",false) { set_lint })
66
- add_option(Option.new("--lint_min",true) { |x| set_lint_min(x) })
67
- add_option(Option.new("--lint_max",true) { |x| set_lint_max(x) })
68
-
69
- add_option(Option.new("-v0",false) { set_v(0) })
70
- add_option(Option.new("-v1",false) { set_v(1) })
71
- add_option(Option.new("-v2",false) { set_v(2) })
72
-
73
- add_option(Option.new("--debug",false) { set_debug })
74
- add_option(Option.new("--set",true) { |x| set_set(x) })
75
-
76
- add_option(Option.new("--clobber",false) { set_clobber })
77
- add_option(Option.new("--ignore_cache",false) { set_nocache })
78
- add_option(Option.new("--threads",true) { |x| set_threads(x) })
79
- add_option(Option.new("--socket",true) { |x| set_socket(x) })
80
- add_option(Option.new("--toolchain_info",true) { |x| print_toolchain(x) })
81
- add_option(Option.new("--toolchain_names",false) { print_toolchains })
82
- add_option(Option.new("--include_filter",true) { |x| set_include_filter(x) })
83
- add_option(Option.new("--exclude_filter",true) { |x| set_exclude_filter(x) })
84
- add_option(Option.new("--show_abs_paths",false) { set_show_fullnames })
85
- add_option(Option.new("--visualStudio",false) { set_visualStudio })
86
- add_option(Option.new("-h",false) { usage; ExitHelper.exit(0) })
87
- add_option(Option.new("--help",false) { usage; ExitHelper.exit(0) })
88
- add_option(Option.new("--show_include_paths",false) { set_show_inc })
89
- add_option(Option.new("--show_incs_and_defs",false) { set_show_inc_def })
90
- add_option(Option.new("--eclipse_version",true) { |x| set_eclipse_version(x) })
91
- add_option(Option.new("--show_license",false) { show_license })
92
- add_option(Option.new("--version",false) { ExitHelper.exit(0) })
93
- add_option(Option.new("--check_uninc",false) { set_check_uninc })
94
- add_option(Option.new("--cmake",false) { set_cmake })
95
- add_option(Option.new("--alias",true) { |x| set_alias_filename(x) })
96
-
97
- end
98
-
99
- def usage
100
- puts "\nUsage: bake [options]"
101
- puts " [-b] <name> Config name of main project"
102
- puts " -m <dir> Directory of main project (default is current directory)."
103
- puts " -p <dir> Project to build/clean (default is main project)"
104
- puts " -f <name> Build/Clean this file only."
105
- puts " -c Clean the file/project."
106
- puts " -a <scheme> Use ansi color sequences (console must support it). Possible values are 'white' and 'black'."
107
- puts " -v<level> Verbose level from 0 to 2, whereas -v0 is less, -v1 is normal (default) and -v2 is more verbose."
108
- puts " -r Stop on first error."
109
- puts " -w <root> Add a workspace root (can be used multiple times)."
110
- puts " If no root is specified, the parent directory of the main project is added automatically."
111
- puts " --rebuild Clean before build."
112
- puts " --clobber Clean the file/project (same as option -c) AND the bake cache files."
113
- puts " --prepro Stop after preprocessor."
114
- puts " --link_only Only link executable - doesn't update objects and archives or start PreSteps and PostSteps."
115
- puts " --lint Performs Lint checks instead of compiling sources. Works currently only with"
116
- puts " GCC toolchain in project and file scope."
117
- puts " --lint_min <num> If number of files in a project is too large for lint to handle, it is possible"
118
- puts " to specify only a part of the file list to lint (default -1)."
119
- puts " --lint_max <num> See above (default -1)."
120
- puts " --ignore_cache Rereads the original meta files - usefull if workspace structure has been changed."
121
- puts " --check_uninc Checks for unnecessary includes (only done for successful project builds)."
122
- puts " --threads <num> Set NUMBER of parallel compiled files (default is 8)."
123
- puts " --socket <num> Set SOCKET for sending errors, receiving commands, etc. - used by e.g. Eclipse."
124
- puts " --toolchain_info <name> Prints default values of a toolchain."
125
- puts " --toolchain_names Prints available toolchains."
126
- puts " --include_filter <name> Includes steps with this filter name (can be used multiple times)."
127
- puts " 'PRE' or 'POST' includes all PreSteps respectively PostSteps."
128
- puts " --exclude_filter <name> Excludes steps with this filter name (can be used multiple times)."
129
- puts " 'PRE' or 'POST' excludes all PreSteps respectively PostSteps."
130
- puts " --show_abs_paths Compiler prints absolute filename paths instead of relative paths."
131
- puts " --no_autodir Disable auto completion of paths like in IncludeDir"
132
- puts " --set <key>=<value> Sets a variable. Overwrites variables defined in Project.metas (can be used multiple times)."
133
- puts ""
134
- puts " --version Print version."
135
- puts " -h, --help Print this help."
136
- puts " --show_license Print the license."
137
- puts ""
138
- puts " --cmake Temporary switch for BSW."
139
-
140
- end
141
-
142
- def parse_options()
143
- parse_internal(false)
144
- set_main_dir(Dir.pwd) if @main_dir.nil?
145
- set_project(File.basename(@main_dir)) if @project.nil?
146
- @roots = @def_roots if @roots.length == 0
147
- Rake::application.max_parallel_tasks = @threads
148
- Rake::application.debug = @debug
149
- Rake::application.lint = @lint
150
-
151
- if @linkOnly
152
- if @rebuild
153
- Printer.printError "Error: --link_only and --rebuild not allowed at the same time"
154
- ExitHelper.exit(1)
155
- end
156
- if @clean
157
- Printer.printError "Error: --link_only and -c not allowed at the same time"
158
- ExitHelper.exit(1)
159
- end
160
- end
161
-
162
- if @lint and not @single
163
- Printer.printError "Error: --lint must be used together with -p and optional with -f"
164
- ExitHelper.exit(1)
165
- end
166
-
167
- if @lint and @clean
168
- Printer.printError "Error: --lint and -c not allowed (yet)"
169
- ExitHelper.exit(1)
170
- end
171
-
172
- if @lint_max >= 0 and @lint_min >= 0 and @lint_max < @lint_min
173
- Printer.printError "Error: lint_max must be greater than lint_min"
174
- ExitHelper.exit(1)
175
- end
176
-
177
- end
178
-
179
- def check_valid_dir(dir)
180
- if not File.exists?(dir)
181
- Printer.printError "Error: Directory #{dir} does not exist"
182
- ExitHelper.exit(1)
183
- end
184
- if not File.directory?(dir)
185
- Printer.printError "Error: #{dir} is not a directory"
186
- ExitHelper.exit(1)
187
- end
188
- end
189
-
190
- def set_include_filter(x)
191
- @include_filter << x
192
- end
193
-
194
- def set_exclude_filter(x)
195
- @exclude_filter << x
196
- end
197
-
198
- def set_build_config_default(config)
199
- index = config.index('-')
200
- return false if (index != nil and index == 0)
201
- set_build_config(config)
202
- return true
203
- end
204
-
205
- def set_build_config(config)
206
- if not @build_config.empty?
207
- Printer.printError "Error: Cannot set build config '#{config}', because build config is already set to '#{@build_config}'"
208
- ExitHelper.exit(1)
209
- end
210
- @build_config = config
211
- end
212
-
213
- def set_main_dir(dir)
214
- check_valid_dir(dir)
215
- @main_dir = File.expand_path(dir.gsub(/[\\]/,'/'))
216
- @def_roots = calc_def_roots(@main_dir)
217
- end
218
-
219
- def set_project(name)
220
- @project = name
221
- end
222
-
223
- def set_filename(filename)
224
- @filename = filename.gsub(/[\\]/,'/')
225
- end
226
-
227
- def set_single()
228
- @single = true
229
- end
230
- def set_clean()
231
- @clean = true
232
- end
233
- def set_clobber()
234
- @clobber = true
235
- set_clean
236
- end
237
- def set_rebuild()
238
- @clean = true
239
- @rebuild = true
240
- end
241
- def set_nocache()
242
- @nocache = true
243
- end
244
- def set_check_uninc()
245
- @check_uninc = true
246
- end
247
- def set_cmake()
248
- @cmake = true
249
- end
250
- def set_prepro()
251
- Rake::application.preproFlags = true
252
- end
253
- def set_linkOnly()
254
- @linkOnly = true
255
- set_single()
256
- end
257
-
258
- def set_no_autodir()
259
- @no_autodir = true
260
- end
261
-
262
- def set_lint()
263
- @lint = true
264
- end
265
-
266
- def set_debug()
267
- @debug = true
268
- end
269
-
270
- def set_v(num)
271
- if num == 0
272
- @printLess = true
273
- @verbose = false
274
- Rake::application.options.silent = true
275
- elsif num == 1
276
- Rake::application.options.silent = false
277
- @printLess = false
278
- @verbose = false
279
- elsif num == 2
280
- Rake::application.options.silent = false
281
- @printLess = false
282
- @verbose = true
283
- end
284
- end
285
-
286
- def set_color(x)
287
- if (x != "black" and x != "white" and x != "none")
288
- Printer.printError "Error: color scheme must be 'black' or 'white'"
289
- ExitHelper.exit(1)
290
- end
291
- begin
292
- if (x == "none")
293
- @color = false
294
- ColorizingFormatter.enabled = false
295
- else
296
- ColorizingFormatter::setColorScheme(x.to_sym)
297
- @color = true
298
- ColorizingFormatter.enabled = true
299
- end
300
- rescue Exception => e
301
- Printer.printError "Error: colored gem not installed (#{e.message})"
302
- puts e.backtrace if @verbose
303
- ExitHelper.exit(1)
304
- end
305
- end
306
-
307
- def set_error()
308
- Rake::Task.bail_on_first_error = true
309
- end
310
-
311
- def set_depfileInfo()
312
- Cxxproject::HasSources.print_additional_depfile_info = true
313
- end
314
-
315
- def set_show_inc
316
- @show_includes = true
317
- end
318
-
319
- def set_show_inc_def
320
- @show_includes_and_defines = true
321
- end
322
-
323
- def set_show_fullnames
324
- Rake::application.consoleOutput_fullnames = true
325
- end
326
-
327
- def set_visualStudio
328
- Rake::application.consoleOutput_visualStudio = true
329
- end
330
-
331
- def set_root(dir)
332
- check_valid_dir(dir)
333
- r = File.expand_path(dir.gsub(/[\\]/,'/'))
334
- @roots << r if not @roots.include?r
335
- end
336
-
337
- def set_threads(num)
338
- @threads = String === num ? num.to_i : num
339
- if @threads <= 0
340
- Printer.printError "Error: number of threads must be > 0"
341
- ExitHelper.exit(1)
342
- end
343
- end
344
-
345
- def set_socket(num)
346
- @socket = String === num ? num.to_i : num
347
- end
348
-
349
- def set_set(str)
350
- ar = str.split("=")
351
- if not str.include?"=" or ar[0].length == 0
352
- Printer.printError "Error: --set must be followed by key=value"
353
- ExitHelper.exit(1)
354
- end
355
- @vars[ar[0]] = ar[1..-1].join("=")
356
- end
357
-
358
- def set_lint_min(num)
359
- @lint_min = String === num ? num.to_i : num
360
- end
361
-
362
- def set_lint_max(num)
363
- @lint_max = String === num ? num.to_i : num
364
- end
365
-
366
- def printHash(x, level)
367
- x.each do |k,v|
368
- if Hash === v
369
- if level > 0
370
- level.times {print " "}
371
- else
372
- print "\n"
373
- end
374
- puts k
375
- printHash(v,level+1)
376
- elsif Array === v or String === v
377
- level.times {print " "}
378
- puts "#{k} = #{v}"
379
- end
380
- end
381
- end
382
-
383
- def print_toolchain(x)
384
- tcs = Cxxproject::Toolchain::Provider[x]
385
- if tcs.nil?
386
- puts "Toolchain not available"
387
- else
388
- printHash(tcs, 0)
389
- end
390
- ExitHelper.exit(0)
391
- end
392
-
393
- def print_toolchains()
394
- puts "Available toolchains:"
395
- Cxxproject::Toolchain::Provider.list.keys.each { |c| puts "* #{c}" }
396
- ExitHelper.exit(0)
397
- end
398
-
399
- def show_license()
400
- licenseFile = File.join(File.dirname(File.dirname(File.dirname(__FILE__))), "license.txt")
401
- file = File.new(licenseFile, "r")
402
- while (line = file.gets)
403
- puts "#{line}"
404
- end
405
- file.close
406
- ExitHelper.exit(0)
407
- end
408
-
409
- def set_eclipse_version(x)
410
- @eclipse_version = x
411
- end
412
-
413
- def set_alias_filename(x)
414
- @alias_filename = x
415
- end
416
-
417
- end
418
-
419
- end
420
-
421
-
data/lib/bakery/loader.rb DELETED
@@ -1,57 +0,0 @@
1
- require 'bakery/model/metamodel'
2
- require 'bakery/model/language'
3
- require 'bake/version'
4
-
5
- require 'rgen/environment'
6
- require 'rgen/fragment/fragmented_model'
7
-
8
- require 'rtext/default_loader'
9
-
10
- require 'cxxproject/utils/exit_helper'
11
- require 'cxxproject/utils/printer'
12
-
13
- module Cxxproject
14
-
15
- class BakeryLoader
16
-
17
- attr_reader :model
18
-
19
- def initialize(options)
20
- @env = RGen::Environment.new
21
- @options = options
22
- @model = RGen::Fragment::FragmentedModel.new(:env => @env)
23
- end
24
-
25
- def load(filename)
26
-
27
- sumErrors = 0
28
-
29
- if not File.exists?filename
30
- Printer.printError "Error: #{filename} does not exist"
31
- ExitHelper.exit(1)
32
- end
33
-
34
- loader = RText::DefaultLoader.new(
35
- Cxxproject::BakeryLanguage,
36
- @model,
37
- :file_provider => proc { [filename] },
38
- :cache => @DumpFileCache)
39
- loader.load()
40
-
41
- f = @model.fragments[0]
42
-
43
- f.data[:problems].each do |p|
44
- Printer.printError "Error: "+p.file+"("+p.line.to_s+"): "+p.message
45
- end
46
-
47
- if f.data[:problems].length > 0
48
- ExitHelper.exit(1)
49
- end
50
-
51
- return @env
52
-
53
- end
54
-
55
-
56
- end
57
- end