bake-toolkit 2.27.0 → 2.28.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.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/bin/bakeqac +3 -3
  3. data/documentation/_build/html/_sources/changelog.txt +9 -1
  4. data/documentation/_build/html/_sources/concepts/prebuild.txt +1 -1
  5. data/documentation/_build/html/_sources/index.txt +1 -1
  6. data/documentation/_build/html/_sources/known_issues.txt +0 -2
  7. data/documentation/_build/html/_sources/tips_and_tricks/static_code_analysis.txt +122 -122
  8. data/documentation/_build/html/_sources/tips_and_tricks/tips_and_tricks.txt +0 -1
  9. data/documentation/_build/html/_static/syntax.html +18 -13
  10. data/documentation/_build/html/changelog.html +11 -1
  11. data/documentation/_build/html/concepts/build_hierarchy.html +1 -1
  12. data/documentation/_build/html/concepts/inject.html +1 -1
  13. data/documentation/_build/html/concepts/link_order.html +1 -1
  14. data/documentation/_build/html/concepts/prebuild.html +1 -1
  15. data/documentation/_build/html/concepts/the_main_project.html +1 -1
  16. data/documentation/_build/html/concepts/the_project_meta_file.html +1 -1
  17. data/documentation/_build/html/ide/eclipse/eclipse.html +1 -1
  18. data/documentation/_build/html/ide/eclipse/how_to_convert_existing_cdt_workspace.html +1 -1
  19. data/documentation/_build/html/ide/eclipse/how_to_create_a_new_project_in_eclipse.html +1 -1
  20. data/documentation/_build/html/ide/eclipse/how_to_create_a_workspace_in_eclipse.html +1 -1
  21. data/documentation/_build/html/ide/eclipse/how_to_debug_in_eclipse.html +1 -1
  22. data/documentation/_build/html/ide/eclipse/how_to_install_eclipse_plugin.html +1 -1
  23. data/documentation/_build/html/ide/eclipse/how_to_use_bake_in_eclipse.html +1 -1
  24. data/documentation/_build/html/ide/vs/how_to_create_vs_projects.html +1 -1
  25. data/documentation/_build/html/ide/vs/how_to_debug_in_vs.html +3 -3
  26. data/documentation/_build/html/ide/vs/how_to_used_bake_in_vs.html +1 -1
  27. data/documentation/_build/html/ide/vs/vs.html +1 -1
  28. data/documentation/_build/html/ide/vs/vs_install.html +1 -1
  29. data/documentation/_build/html/index.html +4 -5
  30. data/documentation/_build/html/install/install_bake.html +1 -1
  31. data/documentation/_build/html/internal.html +1 -1
  32. data/documentation/_build/html/known_issues.html +1 -3
  33. data/documentation/_build/html/license.html +1 -1
  34. data/documentation/_build/html/performance/performance.html +3 -3
  35. data/documentation/_build/html/quickstart/quickstart.html +1 -1
  36. data/documentation/_build/html/searchindex.js +1 -1
  37. data/documentation/_build/html/syntax/auto_adjustment.html +1 -1
  38. data/documentation/_build/html/syntax/derive_configs.html +1 -1
  39. data/documentation/_build/html/syntax/project_meta_syntax.html +18 -13
  40. data/documentation/_build/html/syntax/variable_substitutions.html +1 -1
  41. data/documentation/_build/html/tips_and_tricks/dot.html +4 -4
  42. data/documentation/_build/html/tips_and_tricks/how_to_use_bake_with_cygwin.html +4 -4
  43. data/documentation/_build/html/tips_and_tricks/static_code_analysis.html +284 -284
  44. data/documentation/_build/html/tips_and_tricks/the_bakery.html +6 -6
  45. data/documentation/_build/html/tips_and_tricks/the_clang.html +2 -2
  46. data/documentation/_build/html/tips_and_tricks/tips_and_tricks.html +0 -1
  47. data/documentation/_build/html/why_bake/why_bake.html +3 -3
  48. data/lib/bake/model/metamodel.rb +2 -6
  49. data/lib/bake/model/metamodel_ext.rb +9 -0
  50. data/lib/bake/options/options.rb +11 -38
  51. data/lib/bake/options/usage.rb +1 -10
  52. data/lib/bake/subst.rb +12 -3
  53. data/lib/bake/toolchain/provider.rb +1 -3
  54. data/lib/bake/util.rb +0 -7
  55. data/lib/blocks/block.rb +2 -0
  56. data/lib/blocks/blockBase.rb +2 -8
  57. data/lib/blocks/commandLine.rb +3 -3
  58. data/lib/blocks/compile.rb +0 -2
  59. data/lib/blocks/executable.rb +1 -3
  60. data/lib/blocks/fileList.rb +53 -0
  61. data/lib/blocks/has_execute_command.rb +2 -2
  62. data/lib/blocks/library.rb +0 -2
  63. data/lib/blocks/makefile.rb +4 -4
  64. data/lib/common/version.rb +1 -1
  65. data/lib/tocxx.rb +39 -37
  66. metadata +3 -6
  67. data/lib/bake/bundle.rb +0 -159
  68. data/lib/bake/toolchain/errorparser/lint_error_parser.rb +0 -34
  69. data/lib/bake/toolchain/lint.rb +0 -19
  70. data/lib/blocks/lint.rb +0 -56
@@ -196,8 +196,6 @@ module Bake
196
196
  check_config_file
197
197
  end
198
198
 
199
- Bake::Bundle.instance.addSource(source, @include_list, dep_filename_conv) if isMainProject?
200
-
201
199
  end
202
200
 
203
201
  def self.read_depfile(dep_filename, projDir, singleLine)
@@ -35,7 +35,7 @@ module Bake
35
35
 
36
36
  def calcMapFile
37
37
  @mapfile = nil
38
- if (not Bake.options.docu) and (not Bake.options.lint) and (not @config.mapFile.nil?)
38
+ if (not Bake.options.docu) and (not @config.mapFile.nil?)
39
39
  if @config.mapFile.name == ""
40
40
  @mapfile = @exe_name.chomp(File.extname(@exe_name)) + ".map"
41
41
  else
@@ -153,8 +153,6 @@ module Bake
153
153
  check_config_file()
154
154
  end
155
155
 
156
- Bake::Bundle.instance.addBinary(@exe_name, @linker_script, isMainProject? ? @config : nil)
157
-
158
156
  return success
159
157
  end
160
158
  end
@@ -0,0 +1,53 @@
1
+ require 'blocks/compile'
2
+
3
+ module Bake
4
+
5
+ module Blocks
6
+
7
+ class FileList < Compile
8
+
9
+ def initialize(block, config, referencedConfigs, tcs)
10
+ super(block, config, referencedConfigs, tcs)
11
+ end
12
+
13
+ def execute
14
+ Dir.chdir(@projectDir) do
15
+ calcSources
16
+ calcObjects
17
+
18
+ projDir = File.expand_path(@projectDir)
19
+ headers = Set.new
20
+ @source_files.sort.each do |s|
21
+ puts "FILE: " + projDir+"/"+s
22
+ type = get_source_type(s)
23
+ if type.nil?
24
+ Bake.formatter.printError("Error: could not get type of source file #{s}")
25
+ ExitHelper.exit(1)
26
+ end
27
+ object = @object_files[s]
28
+ dep_filename = calcDepFile(object, type)
29
+ if type != :ASM
30
+ dep_filename_conv = calcDepFileConv(dep_filename)
31
+ if not File.exist?(dep_filename_conv)
32
+ Bake.formatter.printError("Error: dependency file doesn't exist for #{s}")
33
+ ExitHelper.exit(1)
34
+ end
35
+ File.readlines(dep_filename_conv).map {|line| headers << line.strip}
36
+ end
37
+ end
38
+ headers.map do |h|
39
+ habs = File.is_absolute?(h) ? h : projDir+"/"+h
40
+ File.expand_path(h)
41
+ end.sort.each { |h| puts "HEADER: " + h }
42
+ end
43
+ return true
44
+ end
45
+
46
+ def clean
47
+ # nothing to do here
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+ end
@@ -4,8 +4,8 @@ module Bake
4
4
 
5
5
  module HasExecuteCommand
6
6
 
7
- def executeCommand(commandLine, ignoreStr=nil, exitCodeArray = [0])
8
- puts commandLine if Bake.options.verbose >= 1
7
+ def executeCommand(commandLine, ignoreStr=nil, exitCodeArray = [0], echo = "on")
8
+ puts commandLine if (Bake.options.verbose >= 1 && echo != "off") || Bake.options.verbose >= 3
9
9
  puts "(executed in '#{@projectDir}')" if Bake.options.verbose >= 3
10
10
  cmd_result = false
11
11
  output = ""
@@ -104,8 +104,6 @@ module Bake
104
104
  check_config_file()
105
105
  end
106
106
 
107
- Bake::Bundle.instance.addLib(@archive_name, isMainProject? ? @config : nil)
108
-
109
107
  return success
110
108
  end
111
109
  end
@@ -76,22 +76,22 @@ module Bake
76
76
 
77
77
  def execute
78
78
  return true if Bake.options.linkOnly
79
- return executeCommand(@commandLine, nil, @config.validExitCodes)
79
+ return executeCommand(@commandLine, nil, @config.validExitCodes, @config.echo)
80
80
  end
81
81
 
82
82
  def startupStep
83
83
  return true if Bake.options.linkOnly
84
- return executeCommand(@commandLine, nil, @config.validExitCodes)
84
+ return executeCommand(@commandLine, nil, @config.validExitCodes, @config.echo)
85
85
  end
86
86
 
87
87
  def exitStep
88
88
  return true if Bake.options.linkOnly
89
- return executeCommand(@commandLine, nil, @config.validExitCodes)
89
+ return executeCommand(@commandLine, nil, @config.validExitCodes, @config.echo)
90
90
  end
91
91
 
92
92
  def clean
93
93
  return true if Bake.options.linkOnly
94
- return executeCommand(@cleanLine, "No rule to make target 'clean'.", @config.validExitCodes) unless Bake.options.filename
94
+ return executeCommand(@cleanLine, "No rule to make target 'clean'.", @config.validExitCodes, @config.echo) unless Bake.options.filename
95
95
  end
96
96
 
97
97
  end
@@ -1,7 +1,7 @@
1
1
  module Bake
2
2
  class Version
3
3
  def self.number
4
- "2.27.0"
4
+ "2.28.0"
5
5
  end
6
6
 
7
7
  def self.printBakeVersion(ry = "")
@@ -22,10 +22,9 @@ require 'blocks/commandLine'
22
22
  require 'blocks/makefile'
23
23
  require 'blocks/compile'
24
24
  require 'blocks/convert'
25
+ require 'blocks/fileList'
25
26
  require 'blocks/library'
26
27
  require 'blocks/executable'
27
- require 'blocks/lint'
28
- require 'blocks/convert'
29
28
  require 'blocks/docu'
30
29
 
31
30
  require 'set'
@@ -97,6 +96,12 @@ module Bake
97
96
  config.dependency.each do |dep|
98
97
  @referencedConfigs[dep.name].each do |configRef|
99
98
  if configRef.name == dep.config
99
+
100
+ if configRef.private && configRef.parent.name != config.parent.name
101
+ Bake.formatter.printError("#{config.parent.name} (#{config.name}) depends on #{configRef.parent.name} (#{configRef.name}) which is private.", configRef)
102
+ ExitHelper.exit(1)
103
+ end
104
+
100
105
  block.dependencies << configRef.qname if not Bake.options.project# and not Bake.options.filename
101
106
  blockRef = Blocks::ALL_BLOCKS[configRef.qname]
102
107
  block.childs << blockRef
@@ -294,7 +299,7 @@ module Bake
294
299
  addSteps(block, block.startupSteps, config.startupSteps)
295
300
  addSteps(block, block.exitSteps, config.exitSteps)
296
301
 
297
- if not Bake.options.prepro and not Bake.options.lint and not Bake.options.conversion_info and not Bake.options.docu and not Bake.options.filename and not Bake.options.analyze
302
+ if not Bake.options.prepro and not Bake.options.conversion_info and not Bake.options.file_list and not Bake.options.docu and not Bake.options.filename and not Bake.options.analyze
298
303
  addSteps(block, block.preSteps, config.preSteps)
299
304
  addSteps(block, block.postSteps, config.postSteps)
300
305
  end
@@ -302,13 +307,13 @@ module Bake
302
307
  if Bake.options.docu
303
308
  block.mainSteps << Blocks::Docu.new(config, @configTcMap[config])
304
309
  elsif Metamodel::CustomConfig === config
305
- if not Bake.options.prepro and not Bake.options.lint and not Bake.options.conversion_info and not Bake.options.docu and not Bake.options.filename and not Bake.options.analyze
310
+ if not Bake.options.prepro and not Bake.options.conversion_info and not Bake.options.file_list and not Bake.options.docu and not Bake.options.filename and not Bake.options.analyze
306
311
  addSteps(block, block.mainSteps, config) if config.step
307
312
  end
313
+ elsif Bake.options.file_list
314
+ block.mainSteps << Blocks::FileList.new(block, config, @referencedConfigs, @configTcMap[config])
308
315
  elsif Bake.options.conversion_info
309
316
  block.mainSteps << Blocks::Convert.new(block, config, @referencedConfigs, @configTcMap[config])
310
- elsif Bake.options.lint
311
- block.mainSteps << Blocks::Lint.new(block, config, @referencedConfigs, @configTcMap[config])
312
317
  else
313
318
  compile = Blocks::Compile.new(block, config, @referencedConfigs, @configTcMap[config])
314
319
  (Blocks::ALL_COMPILE_BLOCKS[projName] ||= []) << compile
@@ -401,8 +406,8 @@ module Bake
401
406
  end
402
407
 
403
408
  taskType = "Building"
404
- if Bake.options.lint
405
- taskType = "Linting"
409
+ if Bake.options.file_list
410
+ taskType = "Showing file list"
406
411
  elsif Bake.options.conversion_info
407
412
  taskType = "Showing conversion infos"
408
413
  elsif Bake.options.docu
@@ -442,40 +447,37 @@ module Bake
442
447
 
443
448
  @mainConfig = @referencedConfigs[Bake.options.main_project_name].select { |c| c.name == Bake.options.build_config }.first
444
449
 
445
- if Bake.options.lint
446
- @defaultToolchain = Utils.deep_copy(Bake::Toolchain::Provider["Lint"])
447
- else
448
- basedOn = @mainConfig.defaultToolchain.basedOn
449
- basedOnToolchain = Bake::Toolchain::Provider[basedOn]
450
- if basedOnToolchain.nil?
451
- Bake.formatter.printError("DefaultToolchain based on unknown compiler '#{basedOn}'", @mainConfig.defaultToolchain)
452
- ExitHelper.exit(1)
453
- end
450
+ basedOn = @mainConfig.defaultToolchain.basedOn
451
+ basedOnToolchain = Bake::Toolchain::Provider[basedOn]
452
+ if basedOnToolchain.nil?
453
+ Bake.formatter.printError("DefaultToolchain based on unknown compiler '#{basedOn}'", @mainConfig.defaultToolchain)
454
+ ExitHelper.exit(1)
455
+ end
454
456
 
455
- # The flag "-FS" must only be set for VS2013 and above
456
- ENV["MSVC_FORCE_SYNC_PDB_WRITES"] = ""
457
- if basedOn == "MSVC"
458
- begin
459
- res = `cl.exe 2>&1`
460
- raise Exception.new unless $?.success?
461
- scan_res = res.scan(/ersion (\d+).(\d+).(\d+)/)
462
- if scan_res.length > 0
463
- ENV["MSVC_FORCE_SYNC_PDB_WRITES"] = "-FS" if scan_res[0][0].to_i >= 18 # 18 is the compiler major version in VS2013
464
- else
465
- Bake.formatter.printError("Could not read MSVC version")
466
- ExitHelper.exit(1)
467
- end
468
- rescue SystemExit
469
- raise
470
- rescue Exception => e
471
- Bake.formatter.printError("Could not detect MSVC compiler")
457
+ # The flag "-FS" must only be set for VS2013 and above
458
+ ENV["MSVC_FORCE_SYNC_PDB_WRITES"] = ""
459
+ if basedOn == "MSVC"
460
+ begin
461
+ res = `cl.exe 2>&1`
462
+ raise Exception.new unless $?.success?
463
+ scan_res = res.scan(/ersion (\d+).(\d+).(\d+)/)
464
+ if scan_res.length > 0
465
+ ENV["MSVC_FORCE_SYNC_PDB_WRITES"] = "-FS" if scan_res[0][0].to_i >= 18 # 18 is the compiler major version in VS2013
466
+ else
467
+ Bake.formatter.printError("Could not read MSVC version")
472
468
  ExitHelper.exit(1)
473
469
  end
470
+ rescue SystemExit
471
+ raise
472
+ rescue Exception => e
473
+ Bake.formatter.printError("Could not detect MSVC compiler")
474
+ ExitHelper.exit(1)
474
475
  end
475
-
476
- @defaultToolchain = Utils.deep_copy(basedOnToolchain)
477
- Bake.options.envToolchain = true if (basedOn.include?"_ENV")
478
476
  end
477
+
478
+ @defaultToolchain = Utils.deep_copy(basedOnToolchain)
479
+ Bake.options.envToolchain = true if (basedOn.include?"_ENV")
480
+
479
481
  integrateToolchain(@defaultToolchain, @mainConfig.defaultToolchain)
480
482
 
481
483
  # todo: cleanup this hack
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.27.0
4
+ version: 2.28.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: 2017-01-02 00:00:00.000000000 Z
11
+ date: 2017-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rtext
@@ -419,7 +419,6 @@ files:
419
419
  - documentation/_build/html/tips_and_tricks/tips_and_tricks.html
420
420
  - documentation/_build/html/why_bake/why_bake.html
421
421
  - lib/adapt/config/loader.rb
422
- - lib/bake/bundle.rb
423
422
  - lib/bake/cache.rb
424
423
  - lib/bake/config/checks.rb
425
424
  - lib/bake/config/loader.rb
@@ -449,7 +448,6 @@ files:
449
448
  - lib/bake/toolchain/errorparser/greenhills_linker_error_parser.rb
450
449
  - lib/bake/toolchain/errorparser/keil_compiler_error_parser.rb
451
450
  - lib/bake/toolchain/errorparser/keil_linker_error_parser.rb
452
- - lib/bake/toolchain/errorparser/lint_error_parser.rb
453
451
  - lib/bake/toolchain/errorparser/msvc_compiler_error_parser.rb
454
452
  - lib/bake/toolchain/errorparser/msvc_linker_error_parser.rb
455
453
  - lib/bake/toolchain/errorparser/process_output.rb
@@ -459,7 +457,6 @@ files:
459
457
  - lib/bake/toolchain/gcc_env.rb
460
458
  - lib/bake/toolchain/greenhills.rb
461
459
  - lib/bake/toolchain/keil.rb
462
- - lib/bake/toolchain/lint.rb
463
460
  - lib/bake/toolchain/msvc.rb
464
461
  - lib/bake/toolchain/provider.rb
465
462
  - lib/bake/toolchain/ti.rb
@@ -479,9 +476,9 @@ files:
479
476
  - lib/blocks/convert.rb
480
477
  - lib/blocks/docu.rb
481
478
  - lib/blocks/executable.rb
479
+ - lib/blocks/fileList.rb
482
480
  - lib/blocks/has_execute_command.rb
483
481
  - lib/blocks/library.rb
484
- - lib/blocks/lint.rb
485
482
  - lib/blocks/makefile.rb
486
483
  - lib/blocks/showIncludes.rb
487
484
  - lib/common/abortException.rb
@@ -1,159 +0,0 @@
1
- require 'fileutils'
2
- require 'common/ext/rtext'
3
-
4
-
5
- module Bake
6
-
7
- class Bundle
8
-
9
- def initialize()
10
- cleanup()
11
- end
12
-
13
- def cleanup
14
- @outputDir = nil
15
- @result = true
16
- @sources = []
17
- @libs = []
18
- @ls = nil
19
- end
20
-
21
- def self.instance
22
- @@bundle ||= Bundle.new
23
- end
24
-
25
- def setOutputDir(dir)
26
- @outputDir = dir
27
- FileUtils.mkdir_p(@outputDir)
28
- end
29
-
30
- def addLib(lib, mainConfig)
31
- return unless @outputDir
32
- dir = @outputDir+"/lib"
33
- FileUtils.mkdir_p(dir)
34
- FileUtils.cp(lib, dir)
35
- @libs << "lib/" + File.basename(lib) unless mainConfig
36
- createProjectMeta(mainConfig)
37
- end
38
-
39
- def addBinary(exe, ls, mainConfig)
40
- return unless @outputDir
41
-
42
- dir = @outputDir+"/bin"
43
- FileUtils.mkdir_p(dir)
44
- FileUtils.cp(exe, dir)
45
-
46
- if (ls and mainConfig)
47
- lsDir = @outputDir+"/ls"
48
- FileUtils.mkdir_p(lsDir)
49
- FileUtils.cp(ls, lsDir)
50
- @ls = "ls/" + File.basename(ls)
51
- end
52
-
53
- createProjectMeta(mainConfig)
54
- end
55
-
56
- def addSource(source, includeList, depFilename)
57
- return unless @outputDir
58
- if File.is_absolute?(source)
59
- Bake.formatter.printWarning("Warning: '#{source}' is an absolute filename, this is not supported by bundle feature. File will be ignored.")
60
- return
61
- end
62
- sdir = File.dirname(source)
63
- dir = @outputDir
64
- dir = dir + "/" + sdir unless sdir.empty?
65
- FileUtils.mkdir_p(dir)
66
- FileUtils.cp(source, dir)
67
- @sources << source
68
-
69
- addHeaders(makeAbsolute(includeList), parseDepFile(depFilename))
70
- end
71
-
72
- def addHeaders(absIncs, deps)
73
- deps.each do |d|
74
- absIncs.each do |a|
75
- if d.start_with?a
76
- filename = d[a.length+1..-1]
77
- hdir = File.dirname(filename)
78
- dir = @outputDir + "/inc"
79
- dir = dir + "/" + hdir unless hdir.empty?
80
- FileUtils.mkdir_p(dir)
81
- FileUtils.cp(d, dir)
82
- next
83
- end
84
- end
85
- end
86
- end
87
-
88
- def makeAbsolute(includeList)
89
- includeList.map { |x| File.expand_path(x) }
90
- end
91
-
92
- def parseDepFile(depFilename)
93
- res = []
94
- begin
95
- File.readlines(depFilename).map{|line| line.strip}.each do |dep|
96
- if File.exist?(dep)
97
- res << File.expand_path(dep)
98
- end
99
- end
100
- rescue Exception => ex
101
- end
102
- res
103
- end
104
-
105
- def createProjectMeta(mainConfig)
106
- return unless mainConfig
107
-
108
- project = Bake::Metamodel::Project.new
109
- project.setDefault("bundle")
110
- project.file_name = ""
111
-
112
- config = mainConfig.class.new
113
- config.setName("bundle")
114
-
115
- project.setConfig([config])
116
-
117
- sourceElements = @sources.map do |s|
118
- source = Bake::Metamodel::Files.new
119
- source.setName(s)
120
- source
121
- end
122
- config.setFiles(sourceElements)
123
-
124
- idir = Bake::Metamodel::IncludeDir.new
125
- idir.setName("inc")
126
- config.setIncludeDir([idir])
127
-
128
- exLibs = @libs.map do |s|
129
- lib = Bake::Metamodel::ExternalLibrary.new
130
- lib.setName(s)
131
- lib.setSearch(false)
132
- lib
133
- end
134
- config.setLibStuff(exLibs)
135
-
136
- if (mainConfig.toolchain)
137
- config.setToolchain(Bake::MergeConfig.clone(mainConfig.toolchain))
138
- end
139
-
140
- if (mainConfig.defaultToolchain)
141
- config.setDefaultToolchain(Bake::MergeConfig.clone(mainConfig.defaultToolchain))
142
- end
143
-
144
- if (@ls)
145
- ls = Bake::Metamodel::LinkerScript.new
146
- ls.setName(@ls)
147
- config.setLinkerScript(ls)
148
- end
149
-
150
- s = StringIO.new
151
- ser = RText::Serializer.new(Language)
152
- ser.serialize(project, s)
153
- File.write(@outputDir + "/Project.meta", s.string)
154
-
155
- end
156
-
157
- end
158
-
159
- end