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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/_build/html/_images/dot.png +0 -0
  3. data/documentation/_build/html/_images/dotP.png +0 -0
  4. data/documentation/_build/html/_images/dotPC.png +0 -0
  5. data/documentation/_build/html/_sources/changelog.txt +12 -0
  6. data/documentation/_build/html/_sources/concepts/concepts.txt +2 -0
  7. data/documentation/_build/html/_sources/concepts/inject.txt +65 -0
  8. data/documentation/_build/html/_sources/concepts/prebuild.txt +56 -0
  9. data/documentation/_build/html/_sources/index.txt +1 -1
  10. data/documentation/_build/html/_sources/syntax/auto_adjustment.txt +43 -0
  11. data/documentation/_build/html/_sources/syntax/syntax.txt +1 -1
  12. data/documentation/_build/html/_sources/syntax/variable_substitutions.txt +41 -68
  13. data/documentation/_build/html/_sources/tips_and_tricks/dot.txt +34 -0
  14. data/documentation/_build/html/_sources/tips_and_tricks/tips_and_tricks.txt +1 -1
  15. data/documentation/_build/html/_static/dot.png +0 -0
  16. data/documentation/_build/html/_static/dotP.png +0 -0
  17. data/documentation/_build/html/_static/dotPC.png +0 -0
  18. data/documentation/_build/html/_static/syntax.html +20 -0
  19. data/documentation/_build/html/changelog.html +17 -3
  20. data/documentation/_build/html/commandline/commandline.html +3 -3
  21. data/documentation/_build/html/concepts/build_hierarchy.html +3 -3
  22. data/documentation/_build/html/concepts/concepts.html +13 -3
  23. data/documentation/_build/html/concepts/inject.html +217 -0
  24. data/documentation/_build/html/concepts/link_order.html +3 -3
  25. data/documentation/_build/html/concepts/prebuild.html +205 -0
  26. data/documentation/_build/html/concepts/the_main_project.html +3 -3
  27. data/documentation/_build/html/concepts/the_project_meta_file.html +3 -3
  28. data/documentation/_build/html/genindex.html +3 -3
  29. data/documentation/_build/html/ide/eclipse/eclipse.html +3 -3
  30. data/documentation/_build/html/ide/eclipse/how_to_convert_existing_cdt_workspace.html +3 -3
  31. data/documentation/_build/html/ide/eclipse/how_to_create_a_new_project_in_eclipse.html +3 -3
  32. data/documentation/_build/html/ide/eclipse/how_to_create_a_workspace_in_eclipse.html +3 -3
  33. data/documentation/_build/html/ide/eclipse/how_to_debug_in_eclipse.html +3 -3
  34. data/documentation/_build/html/ide/eclipse/how_to_install_eclipse_plugin.html +3 -3
  35. data/documentation/_build/html/ide/eclipse/how_to_use_bake_in_eclipse.html +3 -3
  36. data/documentation/_build/html/ide/ide_integrations.html +3 -3
  37. data/documentation/_build/html/ide/vs/how_to_create_vs_projects.html +3 -3
  38. data/documentation/_build/html/ide/vs/how_to_debug_in_vs.html +3 -3
  39. data/documentation/_build/html/ide/vs/how_to_used_bake_in_vs.html +3 -3
  40. data/documentation/_build/html/ide/vs/vs.html +3 -3
  41. data/documentation/_build/html/ide/vs/vs_install.html +3 -3
  42. data/documentation/_build/html/index.html +10 -7
  43. data/documentation/_build/html/install/install_bake.html +3 -3
  44. data/documentation/_build/html/internal.html +3 -3
  45. data/documentation/_build/html/known_issues.html +3 -3
  46. data/documentation/_build/html/license.html +3 -3
  47. data/documentation/_build/html/performance/performance.html +5 -5
  48. data/documentation/_build/html/quickstart/quickstart.html +3 -3
  49. data/documentation/_build/html/search.html +3 -3
  50. data/documentation/_build/html/searchindex.js +1 -1
  51. data/documentation/_build/html/syntax/adapt_configs.html +3 -3
  52. data/documentation/_build/html/syntax/auto_adjustment.html +190 -0
  53. data/documentation/_build/html/syntax/derive_configs.html +3 -3
  54. data/documentation/_build/html/syntax/project_meta_syntax.html +23 -3
  55. data/documentation/_build/html/syntax/syntax.html +11 -7
  56. data/documentation/_build/html/syntax/variable_substitutions.html +54 -67
  57. data/documentation/_build/html/tips_and_tricks/{bundle.html → dot.html} +25 -19
  58. data/documentation/_build/html/tips_and_tricks/how_to_use_bake_with_cygwin.html +3 -3
  59. data/documentation/_build/html/tips_and_tricks/static_code_analysis.html +3 -3
  60. data/documentation/_build/html/tips_and_tricks/the_bakery.html +3 -3
  61. data/documentation/_build/html/tips_and_tricks/the_clang.html +5 -5
  62. data/documentation/_build/html/tips_and_tricks/tips_and_tricks.html +4 -4
  63. data/documentation/_build/html/why_bake/why_bake.html +5 -5
  64. data/lib/adapt/config/loader.rb +37 -35
  65. data/lib/bake/config/checks.rb +19 -11
  66. data/lib/bake/config/loader.rb +67 -60
  67. data/lib/bake/model/metamodel.rb +56 -30
  68. data/lib/bake/options/options.rb +37 -3
  69. data/lib/bake/options/usage.rb +12 -3
  70. data/lib/bake/subst.rb +5 -2
  71. data/lib/blocks/block.rb +27 -6
  72. data/lib/blocks/blockBase.rb +2 -17
  73. data/lib/blocks/compile.rb +91 -91
  74. data/lib/blocks/executable.rb +41 -41
  75. data/lib/common/version.rb +1 -1
  76. data/lib/tocxx.rb +212 -55
  77. metadata +16 -4
  78. data/documentation/_build/html/_sources/tips_and_tricks/bundle.txt +0 -24
@@ -5,7 +5,7 @@
5
5
  <head>
6
6
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
7
 
8
- <title>Tips and Tricks &mdash; bake 2.19.2 documentation</title>
8
+ <title>Tips and Tricks &mdash; bake documentation</title>
9
9
 
10
10
  <link rel="stylesheet" href="../_static/basic.css" type="text/css" />
11
11
  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
15
15
  <script type="text/javascript">
16
16
  var DOCUMENTATION_OPTIONS = {
17
17
  URL_ROOT: '../',
18
- VERSION: '2.19.2',
18
+ VERSION: '',
19
19
  COLLAPSE_INDEX: false,
20
20
  FILE_SUFFIX: '.html',
21
21
  HAS_SOURCE: true
@@ -29,7 +29,7 @@
29
29
  <script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
30
30
  <script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script>
31
31
  <link rel="shortcut icon" href="../_static/logo_tiny_32.ico"/>
32
- <link rel="top" title="bake 2.19.2 documentation" href="../index.html" />
32
+ <link rel="top" title="bake documentation" href="../index.html" />
33
33
  <link rel="next" title="The Bakery" href="the_bakery.html" />
34
34
  <link rel="prev" title="How to Debug in Visual Studio" href="../ide/vs/how_to_debug_in_vs.html" />
35
35
  <meta charset='utf-8'>
@@ -149,7 +149,7 @@
149
149
  <li class="toctree-l1"><a class="reference internal" href="static_code_analysis.html">Static Code Analysis</a></li>
150
150
  <li class="toctree-l1"><a class="reference internal" href="how_to_use_bake_with_cygwin.html">How to use bake with cygwin</a></li>
151
151
  <li class="toctree-l1"><a class="reference internal" href="the_clang.html">Clang Analyze</a></li>
152
- <li class="toctree-l1"><a class="reference internal" href="bundle.html">Bundle projects</a></li>
152
+ <li class="toctree-l1"><a class="reference internal" href="dot.html">Generating dot graphs</a></li>
153
153
  </ul>
154
154
  </div>
155
155
  <div class="section" id="unnecessary-includes">
@@ -5,7 +5,7 @@
5
5
  <head>
6
6
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
7
 
8
- <title>Why you should use bake &mdash; bake 2.19.2 documentation</title>
8
+ <title>Why you should use bake &mdash; bake documentation</title>
9
9
 
10
10
  <link rel="stylesheet" href="../_static/basic.css" type="text/css" />
11
11
  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
15
15
  <script type="text/javascript">
16
16
  var DOCUMENTATION_OPTIONS = {
17
17
  URL_ROOT: '../',
18
- VERSION: '2.19.2',
18
+ VERSION: '',
19
19
  COLLAPSE_INDEX: false,
20
20
  FILE_SUFFIX: '.html',
21
21
  HAS_SOURCE: true
@@ -29,9 +29,9 @@
29
29
  <script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
30
30
  <script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script>
31
31
  <link rel="shortcut icon" href="../_static/logo_tiny_32.ico"/>
32
- <link rel="top" title="bake 2.19.2 documentation" href="../index.html" />
32
+ <link rel="top" title="bake documentation" href="../index.html" />
33
33
  <link rel="next" title="Install bake" href="../install/install_bake.html" />
34
- <link rel="prev" title="bake 2.19.2" href="../index.html" />
34
+ <link rel="prev" title="bake 2.20.0" href="../index.html" />
35
35
  <meta charset='utf-8'>
36
36
  <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
37
37
  <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
@@ -108,7 +108,7 @@
108
108
 
109
109
 
110
110
  <li>
111
- <a href="../index.html" title="Previous Chapter: bake 2.19.2"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; bake 2.19.2</span>
111
+ <a href="../index.html" title="Previous Chapter: bake 2.20.0"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; bake 2.20.0</span>
112
112
  </a>
113
113
  </li>
114
114
  <li>
@@ -5,71 +5,73 @@ module Bake
5
5
 
6
6
  class AdaptConfig
7
7
  attr_reader :referencedConfigs
8
-
8
+
9
9
  @@filenames = []
10
-
10
+
11
11
  def self.filenames
12
12
  @@filenames
13
- end
14
-
13
+ end
14
+
15
15
  def loadProjMeta(filename, filenum)
16
-
16
+
17
17
  Bake::Configs::Checks.symlinkCheck(filename)
18
-
18
+
19
19
  f = @loader.load(filename)
20
-
20
+
21
21
  if f.root_elements.length != 1 or not Metamodel::Adapt === f.root_elements[0]
22
22
  Bake.formatter.printError("Config file must have exactly one 'Adapt' element as root element", filename)
23
23
  ExitHelper.exit(1)
24
24
  end
25
-
25
+
26
26
  adapt = f.root_elements[0]
27
27
  configs = adapt.getConfig
28
-
28
+
29
29
  Bake::Configs::Checks::commonMetamodelCheck(configs, filename)
30
-
30
+
31
31
  configs.each do |c|
32
32
  if not c.extends.empty?
33
- Bake.formatter.printError("Attribute 'extends' must not be used in adapt config.",c)
33
+ Bake.formatter.printError("Attribute 'extends' must not be used in adapt config.",c)
34
34
  ExitHelper.exit(1)
35
35
  end
36
36
  if c.name.empty?
37
- Bake.formatter.printError("Configs must be named.",c)
37
+ Bake.formatter.printError("Configs must be named.",c)
38
38
  ExitHelper.exit(1)
39
39
  end
40
40
  if c.project.empty?
41
- Bake.formatter.printError("The corresponding project must be specified.",c)
41
+ Bake.formatter.printError("The corresponding project must be specified.",c)
42
42
  ExitHelper.exit(1)
43
43
  end
44
44
  if not ["replace", "remove", "extend"].include?c.type
45
- Bake.formatter.printError("Allowed types are 'replace', 'remove' and 'extend'.",c)
45
+ Bake.formatter.printError("Allowed types are 'replace', 'remove' and 'extend'.",c)
46
46
  ExitHelper.exit(1)
47
47
  end
48
48
  end
49
-
49
+
50
50
  configs
51
- end
52
-
51
+ end
52
+
53
53
  def getPotentialAdaptionProjects()
54
54
  potentialAdapts = []
55
55
  Bake.options.roots.each do |r|
56
56
  if (r.length == 3 && r.include?(":/"))
57
57
  r = r + Bake.options.main_project_name # glob would not work otherwise on windows (ruby bug?)
58
- end
58
+ end
59
59
  Bake.options.adapt.each do |a|
60
- fn = r+"/**{,/*/**}/#{a}/Adapt.meta"
60
+ adaptBaseName = a + "/Adapt.meta"
61
+ potentialAdapts << adaptBaseName if File.exists?adaptBaseName
62
+ fn = r+"/**{,/*/**}/#{adaptBaseName}"
61
63
  potentialAdapts.concat(Dir.glob(fn).sort)
62
64
  end
63
65
  end
64
-
66
+
65
67
  potentialAdapts.uniq
66
- end
67
-
68
- def chooseProjectFilenames(potentialAdapts)
68
+ end
69
+
70
+ def chooseProjectFilenames(potentialAdapts)
69
71
  @@filenames = []
70
-
71
- Bake.options.adapt.each do |a|
72
- adapts = potentialAdapts.find_all { |p| p.include?(a+"/Adapt.meta") }
72
+ p potentialAdapts
73
+ Bake.options.adapt.each do |a|
74
+ adapts = potentialAdapts.find_all { |p| p.include?(a+"/Adapt.meta") }
73
75
  if adapts.empty?
74
76
  Bake.formatter.printError("Adaption project #{a} not found")
75
77
  ExitHelper.exit(1)
@@ -85,27 +87,27 @@ module Bake
85
87
  end
86
88
  end
87
89
  end
88
-
90
+
89
91
  end
90
-
92
+
91
93
  def load()
92
94
  @@filenames = []
93
95
  return [] if Bake.options.adapt.empty?
94
-
96
+
95
97
  @loader = Loader.new
96
-
98
+
97
99
  potentialProjects = getPotentialAdaptionProjects()
98
100
  chooseProjectFilenames(potentialProjects)
99
-
101
+
100
102
  configs = []
101
103
  @@filenames.each_with_index do |f,i|
102
104
  configs.concat(loadProjMeta(f, i+1))
103
105
  end
104
-
105
- return configs
106
+
107
+ return configs
106
108
  end
107
-
108
-
109
+
110
+
109
111
  end
110
112
 
111
113
  end
@@ -2,7 +2,7 @@ module Bake
2
2
  module Configs
3
3
 
4
4
  class Checks
5
-
5
+
6
6
  def self.symlinkCheck(filename)
7
7
  dirOfProjMeta = File.dirname(filename)
8
8
  Dir.chdir(dirOfProjMeta) do
@@ -19,14 +19,14 @@ module Bake
19
19
  end
20
20
  end
21
21
  end
22
-
22
+
23
23
  def self.commonMetamodelCheck(configs, filename)
24
-
24
+
25
25
  if configs.length == 0
26
26
  Bake.formatter.printError("No config found", filename)
27
27
  ExitHelper.exit(1)
28
28
  end
29
-
29
+
30
30
  configs.each do |config|
31
31
  if config.respond_to?("toolchain") and config.toolchain
32
32
  config.toolchain.compiler.each do |c|
@@ -36,26 +36,34 @@ module Bake
36
36
  end
37
37
  end
38
38
  end
39
-
39
+
40
40
  config.includeDir.each do |inc|
41
41
  if not ["front", "back", ""].include?inc.inject
42
- Bake.formatter.printError("inject of IncludeDir must be 'front' or 'back'", inc)
42
+ Bake.formatter.printError("inject of IncludeDir must be 'front' or 'back'", inc)
43
43
  ExitHelper.exit(1)
44
44
  end
45
45
  if not ["front", "back", ""].include?inc.infix
46
- Bake.formatter.printError("infix of IncludeDir must be 'front' or 'back'", inc)
46
+ Bake.formatter.printError("infix of IncludeDir must be 'front' or 'back'", inc)
47
47
  ExitHelper.exit(1)
48
48
  end
49
49
  if (inc.infix != "" and inc.inject != "")
50
- Bake.formatter.printError("IncludeDir must have inject OR infix (deprecated)", inc)
50
+ Bake.formatter.printError("IncludeDir must have inject OR infix (deprecated)", inc)
51
51
  ExitHelper.exit(1)
52
52
  end
53
53
  end if config.respond_to?("includeDir")
54
+
55
+ config.dependency.each do |d|
56
+ if not ["front", "back", ""].include?d.inject
57
+ Bake.formatter.printError("inject of Dependency must be 'front' or 'back'", d)
58
+ ExitHelper.exit(1)
59
+ end
60
+ end
61
+
54
62
  end
55
-
63
+
56
64
  end
57
-
65
+
58
66
  end
59
-
67
+
60
68
  end
61
69
  end
@@ -5,18 +5,18 @@ module Bake
5
5
 
6
6
  class Config
7
7
  attr_reader :referencedConfigs
8
-
8
+
9
9
  def getFullProjectInternal(configs, configname, isMain) # note: configs is never empty
10
-
10
+
11
11
  if (configname == "")
12
12
  if configs[0].parent.default != ""
13
13
  configname = configs[0].parent.default
14
14
  else
15
- Bake.formatter.printError("No default config specified", configs[0].file_name)
15
+ Bake.formatter.printError("No default config specified", configs[0].file_name)
16
16
  ExitHelper.exit(1)
17
17
  end
18
18
  end
19
-
19
+
20
20
  config = nil
21
21
  configs.each do |c|
22
22
  if c.name == configname
@@ -26,13 +26,13 @@ module Bake
26
26
  end
27
27
  config = c
28
28
  end
29
- end
30
-
29
+ end
30
+
31
31
  if not config
32
32
  Bake.formatter.printError("Config '#{configname}' not found", configs[0].file_name)
33
33
  ExitHelper.exit(1)
34
34
  end
35
-
35
+
36
36
  if config.extends != ""
37
37
  config.extends.split(",").map {|ex| ex.strip}.reverse.each do |ex|
38
38
  if (ex != "")
@@ -41,10 +41,10 @@ module Bake
41
41
  end
42
42
  end
43
43
  end
44
-
44
+
45
45
  [config, configname]
46
46
  end
47
-
47
+
48
48
  def getFullProject(configs, configname, isMain)
49
49
  config, configname = getFullProjectInternal(configs, configname, isMain)
50
50
 
@@ -57,7 +57,7 @@ module Bake
57
57
  end
58
58
  end
59
59
  end
60
-
60
+
61
61
  [config, configname]
62
62
  end
63
63
 
@@ -77,7 +77,7 @@ module Bake
77
77
  end
78
78
  end
79
79
  end
80
-
80
+
81
81
  def checkVerFormat(ver)
82
82
  return true if ver.empty?
83
83
  return false if ver.length > 3
@@ -94,18 +94,18 @@ module Bake
94
94
  Bake.formatter.printError("Not compatible with installed bake version: #{text1 + text2 + text3}", reqVersion)
95
95
  ExitHelper.exit(1)
96
96
  end
97
-
97
+
98
98
  def checkVer(reqVersion)
99
99
  return if reqVersion.nil?
100
100
  min = reqVersion.minimum.split(".")
101
101
  max = reqVersion.maximum.split(".")
102
102
  cur = Bake::Version.number.split(".")
103
-
103
+
104
104
  if !checkVerFormat(min) or !checkVerFormat(max)
105
105
  Bake.formatter.printError("Version must be <major>.<minor>.<patch> whereas minor and patch are optional and all numbers >= 0.", reqVersion)
106
106
  ExitHelper.exit(1)
107
107
  end
108
-
108
+
109
109
  [min,max,cur].each { |arr| arr.map! {|x| x.to_i} }
110
110
  min.each_with_index do |v,i|
111
111
  break if v < cur[i]
@@ -116,16 +116,16 @@ module Bake
116
116
  bailOutVer(reqVersion) if v < cur[i]
117
117
  end
118
118
  end
119
-
119
+
120
120
  def loadProjMeta(filename)
121
-
121
+
122
122
  Bake::Configs::Checks.symlinkCheck(filename)
123
-
123
+
124
124
  @project_files << filename
125
125
  f = @loader.load(filename)
126
126
 
127
127
  config = nil
128
-
128
+
129
129
  if f.root_elements.length != 1 or not Metamodel::Project === f.root_elements[0]
130
130
  Bake.formatter.printError("Config file must have exactly one 'Project' element as root element", filename)
131
131
  ExitHelper.exit(1)
@@ -134,25 +134,25 @@ module Bake
134
134
 
135
135
  reqVersion = proj.getRequiredBakeVersion
136
136
  checkVer(reqVersion)
137
-
137
+
138
138
  configs = proj.getConfig
139
139
  Bake::Configs::Checks::commonMetamodelCheck(configs, filename)
140
-
140
+
141
141
  configs.each do |c|
142
142
  if not c.project.empty?
143
- Bake.formatter.printError("Attribute 'project' must only be used in adapt config.",c)
143
+ Bake.formatter.printError("Attribute 'project' must only be used in adapt config.",c)
144
144
  ExitHelper.exit(1)
145
145
  end
146
146
  if not c.type.empty?
147
- Bake.formatter.printError("Attribute 'type' must only be used in adapt config.",c)
147
+ Bake.formatter.printError("Attribute 'type' must only be used in adapt config.",c)
148
148
  ExitHelper.exit(1)
149
149
  end
150
150
  end
151
-
151
+
152
152
  configs
153
153
  end
154
-
155
-
154
+
155
+
156
156
  def validateDependencies(config)
157
157
  config.dependency.each do |dep|
158
158
  if dep.name.include?"$" or dep.config.include?"$"
@@ -170,23 +170,27 @@ module Bake
170
170
  ExitHelper.exit(1)
171
171
  end
172
172
  dep_path, dismiss, dep_name = dep_subbed.rpartition("/")
173
-
173
+
174
174
  # file not loaded yet
175
175
  if not @loadedConfigs.include?dep_name
176
-
176
+
177
+ if Bake.options.verbose >= 3
178
+ puts "First referenced by #{dep.parent.parent.name} (#{dep.parent.name}):"
179
+ end
180
+
177
181
  pmeta_filenames = []
178
-
182
+
179
183
  @potentialProjs.each do |pp|
180
- if pp.include?("/" + dep_subbed + "/Project.meta") or pp == (dep_subbed + "/Project.meta")
184
+ if pp.include?("/" + dep_subbed + "/Project.meta") or pp == (dep_subbed + "/Project.meta")
181
185
  pmeta_filenames << pp
182
186
  end
183
187
  end
184
-
188
+
185
189
  if pmeta_filenames.empty?
186
190
  Bake.formatter.printError("#{dep.name}/Project.meta not found", dep)
187
191
  ExitHelper.exit(1)
188
192
  end
189
-
193
+
190
194
  if pmeta_filenames.length > 1
191
195
  Bake.formatter.printWarning("Project #{dep.name} exists more than once", dep)
192
196
  chosen = " (chosen)"
@@ -195,7 +199,7 @@ module Bake
195
199
  chosen = ""
196
200
  end
197
201
  end
198
-
202
+
199
203
  @loadedConfigs[dep_name] = loadProjMeta(pmeta_filenames[0])
200
204
  else
201
205
  folder = @loadedConfigs[dep_name][0].get_project_dir
@@ -203,54 +207,57 @@ module Bake
203
207
  Bake.formatter.printError("Cannot load #{dep.name}, because #{folder} already loaded", dep)
204
208
  ExitHelper.exit(1)
205
209
  end
206
-
210
+
207
211
  end
208
-
212
+
209
213
  # get config
214
+ if Bake.options.verbose >= 3
215
+ puts " #{dep_name} #{dep.config.empty? ? "<default>" : "("+dep.config+")"} referenced by #{dep.parent.parent.name} (#{dep.parent.name})"
216
+ end
210
217
  config, dep.config = getFullProject(@loadedConfigs[dep_name], dep.config, false)
211
218
  dep.name = dep_name
212
-
219
+
213
220
  # config not referenced yet
214
221
  if not @referencedConfigs.include?dep_name
215
- @referencedConfigs[dep_name] = [config]
222
+ @referencedConfigs[dep_name] = [config]
216
223
  elsif @referencedConfigs[dep_name].index { |c| c.name == dep.config } == nil
217
224
  @referencedConfigs[dep_name] << config
218
225
  else
219
226
  return
220
227
  end
221
-
228
+
222
229
  validateDependencies(config)
223
230
  @depsPending += config.dependency
224
231
  end
225
-
232
+
226
233
  def loadMainMeta()
227
234
  mainMeta = Bake.options.main_dir+"/Project.meta"
228
235
  if not File.exist?(mainMeta)
229
236
  Bake.formatter.printError("Error: #{mainMeta} not found")
230
237
  ExitHelper.exit(1)
231
238
  end
232
-
239
+
233
240
  @project_files = []
234
241
  configs = loadProjMeta(mainMeta)
235
242
  @loadedConfigs = {}
236
243
  @loadedConfigs[Bake.options.main_project_name] = configs
237
244
 
238
- if not showConfigNames?
245
+ if not showConfigNames?
239
246
  config, Bake.options.build_config = getFullProject(configs,Bake.options.build_config, true)
240
247
  @referencedConfigs = {}
241
248
  @referencedConfigs[Bake.options.main_project_name] = [config]
242
-
249
+
243
250
  validateDependencies(config)
244
251
  @depsPending = config.dependency
245
-
252
+
246
253
  if Bake.options.build_config != "" and config.defaultToolchain == nil
247
254
  Bake.formatter.printError("Main project configuration must contain DefaultToolchain", config)
248
255
  ExitHelper.exit(1)
249
- end
256
+ end
250
257
  end
251
-
258
+
252
259
  end
253
-
260
+
254
261
  def checkRoots()
255
262
  @potentialProjs = []
256
263
  Bake.options.roots.each do |r|
@@ -260,30 +267,30 @@ module Bake
260
267
  r = r+"/**{,/*/**}/Project.meta"
261
268
  @potentialProjs.concat(Dir.glob(r).sort)
262
269
  end
263
-
270
+
264
271
  @potentialProjs = @potentialProjs.uniq
265
272
  end
266
-
267
-
273
+
274
+
268
275
  def filterStep(step, globalFilterStr)
269
-
276
+
270
277
  # 1st prio: explicit single filter
271
- if step.filter != ""
278
+ if step.filter != ""
272
279
  return true if Bake.options.exclude_filter.include?step.filter
273
280
  return false if Bake.options.include_filter.include?step.filter
274
- end
281
+ end
275
282
 
276
283
  # 2nd prio: explicit global filter
277
284
  if globalFilterStr != nil
278
285
  return true if Bake.options.exclude_filter.include?globalFilterStr
279
286
  return false if Bake.options.include_filter.include?globalFilterStr
280
- end
287
+ end
281
288
 
282
289
  # 3nd prio: default
283
290
  return true if step.default == "off"
284
- false
291
+ false
285
292
  end
286
-
293
+
287
294
  def filterSteps
288
295
  @referencedConfigs.each do |projName, configs|
289
296
  configs.each do |config|
@@ -301,13 +308,13 @@ module Bake
301
308
  def defaultConfigName
302
309
  @loadedConfigs[Bake.options.main_project_name].first.parent.default
303
310
  end
304
-
311
+
305
312
  def showConfigNames?
306
313
  Bake.options.showConfigs or (Bake.options.build_config == "" and defaultConfigName == "")
307
314
  end
308
315
 
309
316
  def printConfigNames
310
- mainConfigName = Bake.options.build_config != "" ? Bake.options.build_config : defaultConfigName
317
+ mainConfigName = Bake.options.build_config != "" ? Bake.options.build_config : defaultConfigName
311
318
  configs = @loadedConfigs[Bake.options.main_project_name]
312
319
  foundValidConfig = false
313
320
  configs.each do |c|
@@ -319,11 +326,11 @@ module Bake
319
326
  Kernel.print "\n"
320
327
  foundValidConfig = true
321
328
  end
322
-
329
+
323
330
  Bake.formatter.printWarning("No configuration with a DefaultToolchain found", Bake.options.main_dir+"/Project.meta") unless foundValidConfig
324
331
  ExitHelper.exit(0)
325
332
  end
326
-
333
+
327
334
  def load(adaptConfigs)
328
335
  @adaptConfigs = adaptConfigs
329
336
  @loader = Loader.new
@@ -349,8 +356,8 @@ module Bake
349
356
  else
350
357
  loadMainMeta # "--list" specified
351
358
  printConfigNames
352
- end
359
+ end
353
360
  end
354
-
361
+
355
362
  end
356
363
  end