bake-toolkit 2.17.4 → 2.18.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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/_build/html/_sources/changelog.txt +14 -0
  3. data/documentation/_build/html/_sources/concepts/build_hierarchy.txt +1 -1
  4. data/documentation/_build/html/_sources/concepts/concepts.txt +1 -0
  5. data/documentation/_build/html/_sources/concepts/link_order.txt +91 -0
  6. data/documentation/_build/html/_sources/index.txt +1 -1
  7. data/documentation/_build/html/changelog.html +31 -3
  8. data/documentation/_build/html/commandline/commandline.html +3 -3
  9. data/documentation/_build/html/concepts/build_hierarchy.html +6 -6
  10. data/documentation/_build/html/concepts/concepts.html +8 -3
  11. data/documentation/_build/html/concepts/link_order.html +246 -0
  12. data/documentation/_build/html/concepts/the_main_project.html +3 -3
  13. data/documentation/_build/html/concepts/the_project_meta_file.html +3 -3
  14. data/documentation/_build/html/genindex.html +3 -3
  15. data/documentation/_build/html/ide/eclipse/eclipse.html +3 -3
  16. data/documentation/_build/html/ide/eclipse/how_to_convert_existing_cdt_workspace.html +3 -3
  17. data/documentation/_build/html/ide/eclipse/how_to_create_a_new_project_in_eclipse.html +3 -3
  18. data/documentation/_build/html/ide/eclipse/how_to_create_a_workspace_in_eclipse.html +3 -3
  19. data/documentation/_build/html/ide/eclipse/how_to_debug_in_eclipse.html +3 -3
  20. data/documentation/_build/html/ide/eclipse/how_to_install_eclipse_plugin.html +3 -3
  21. data/documentation/_build/html/ide/eclipse/how_to_use_bake_in_eclipse.html +3 -3
  22. data/documentation/_build/html/ide/ide_integrations.html +3 -3
  23. data/documentation/_build/html/ide/vs/how_to_create_vs_projects.html +3 -3
  24. data/documentation/_build/html/ide/vs/how_to_debug_in_vs.html +3 -3
  25. data/documentation/_build/html/ide/vs/how_to_used_bake_in_vs.html +3 -3
  26. data/documentation/_build/html/ide/vs/vs.html +3 -3
  27. data/documentation/_build/html/ide/vs/vs_install.html +3 -3
  28. data/documentation/_build/html/index.html +7 -6
  29. data/documentation/_build/html/install/install_bake.html +3 -3
  30. data/documentation/_build/html/internal.html +3 -3
  31. data/documentation/_build/html/known_issues.html +3 -3
  32. data/documentation/_build/html/license.html +3 -3
  33. data/documentation/_build/html/performance/performance.html +3 -3
  34. data/documentation/_build/html/quickstart/quickstart.html +3 -3
  35. data/documentation/_build/html/search.html +3 -3
  36. data/documentation/_build/html/searchindex.js +1 -1
  37. data/documentation/_build/html/syntax/adapt_configs.html +3 -3
  38. data/documentation/_build/html/syntax/derive_configs.html +3 -3
  39. data/documentation/_build/html/syntax/project_meta_syntax.html +3 -3
  40. data/documentation/_build/html/syntax/syntax.html +5 -5
  41. data/documentation/_build/html/syntax/variable_substitutions.html +3 -3
  42. data/documentation/_build/html/tips_and_tricks/bundle.html +3 -3
  43. data/documentation/_build/html/tips_and_tricks/how_to_use_bake_with_cygwin.html +3 -3
  44. data/documentation/_build/html/tips_and_tricks/static_code_analysis.html +3 -3
  45. data/documentation/_build/html/tips_and_tricks/the_bakery.html +3 -3
  46. data/documentation/_build/html/tips_and_tricks/the_clang.html +3 -3
  47. data/documentation/_build/html/tips_and_tricks/tips_and_tricks.html +3 -3
  48. data/documentation/_build/html/why_bake/why_bake.html +5 -5
  49. data/lib/bake/libElement.rb +77 -38
  50. data/lib/bake/mergeConfig.rb +31 -27
  51. data/lib/bake/options/options.rb +36 -33
  52. data/lib/bake/options/usage.rb +5 -3
  53. data/lib/common/version.rb +1 -1
  54. metadata +4 -2
@@ -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.17.4 documentation</title>
8
+ <title>Tips and Tricks &mdash; bake 2.18.0 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.17.4',
18
+ VERSION: '2.18.0',
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.17.4 documentation" href="../index.html" />
32
+ <link rel="top" title="bake 2.18.0 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'>
@@ -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.17.4 documentation</title>
8
+ <title>Why you should use bake &mdash; bake 2.18.0 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.17.4',
18
+ VERSION: '2.18.0',
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.17.4 documentation" href="../index.html" />
32
+ <link rel="top" title="bake 2.18.0 documentation" href="../index.html" />
33
33
  <link rel="next" title="Install bake" href="../install/install_bake.html" />
34
- <link rel="prev" title="bake 2.17.4" href="../index.html" />
34
+ <link rel="prev" title="bake 2.18.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.17.4"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; bake 2.17.4</span>
111
+ <a href="../index.html" title="Previous Chapter: bake 2.18.0"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; bake 2.18.0</span>
112
112
  </a>
113
113
  </li>
114
114
  <li>
@@ -1,7 +1,7 @@
1
1
  module Bake
2
-
2
+
3
3
  class LibElement
4
-
4
+
5
5
  LIB = 1
6
6
  USERLIB = 2
7
7
  LIB_WITH_PATH = 3
@@ -9,15 +9,15 @@ module Bake
9
9
  DEPENDENCY = 5
10
10
 
11
11
  attr_reader :type, :value
12
-
12
+
13
13
  def initialize(type, value)
14
14
  @type = type
15
15
  @value = value
16
16
  end
17
17
  end
18
-
19
- class LibElements
20
-
18
+
19
+ class LibElements
20
+
21
21
  def self.calc_linker_lib_string(block, tcs)
22
22
  @@lib_path_set = []
23
23
  @@dep_set = Set.new
@@ -25,16 +25,25 @@ module Bake
25
25
  @@projectDir = block.projectDir
26
26
  @@source_libraries = []
27
27
  @@linker_libs_array = []
28
-
28
+
29
29
  collect_recursive(block)
30
-
31
- if @@linker[:LIST_MODE] and not @@lib_path_set.empty?
32
- @@linker_libs_array << (@@linker[:LIB_PATH_FLAG] + @@lib_path_set.join(","));
30
+
31
+ if Bake.options.oldLinkOrder
32
+ if @@linker[:LIST_MODE] and not @@lib_path_set.empty?
33
+ @@linker_libs_array << (@@linker[:LIB_PATH_FLAG] + @@lib_path_set.join(","));
34
+ end
35
+ else
36
+ @@source_libraries.reverse!
37
+ @@lib_path_set.reverse!
38
+ if @@linker[:LIST_MODE] and not @@lib_path_set.empty?
39
+ @@linker_libs_array.unshift (@@linker[:LIB_PATH_FLAG] + @@lib_path_set.join(","));
40
+ end
41
+ @@linker_libs_array.reverse!
33
42
  end
34
-
35
- return [@@source_libraries, @@linker_libs_array]
43
+
44
+ return [@@source_libraries, @@linker_libs_array]
36
45
  end
37
-
46
+
38
47
  def self.adaptPath(path, block, prefix)
39
48
  adaptedPath = path
40
49
  if not File.is_absolute?(path)
@@ -44,23 +53,31 @@ module Bake
44
53
  #adaptedPath = "\"" + adaptedPath + "\"" if adaptedPath.include?(" ")
45
54
  [adaptedPath, prefix]
46
55
  end
47
-
48
- def self.collect_recursive(block)
49
- return if @@dep_set.include?block
50
- @@dep_set << block
51
-
52
- prefix = nil
53
56
 
54
- if block.library
57
+ def self.addOwnLib(block)
58
+ if block.library
55
59
  if (not block.library.compileBlock.objects.empty?) or not block.library.compileBlock.calcSources(true, true).empty?
56
60
  adaptedPath, prefix = adaptPath(block.library.archive_name, block, prefix)
57
61
  @@linker_libs_array << adaptedPath
58
62
  @@source_libraries << adaptedPath
59
63
  end
60
64
  end
61
-
62
- block.lib_elements.each do |elem|
63
-
65
+ end
66
+
67
+ def self.collect_recursive(block)
68
+ return if @@dep_set.include?block
69
+ @@dep_set << block
70
+
71
+ prefix = nil
72
+
73
+ if Bake.options.oldLinkOrder
74
+ addOwnLib(block)
75
+ elems = block.lib_elements
76
+ else
77
+ elems = block.lib_elements.reverse
78
+ end
79
+
80
+ elems.each do |elem|
64
81
  case elem.type
65
82
  when LibElement::LIB
66
83
  @@linker_libs_array << "#{@@linker[:LIB_FLAG]}#{elem.value}"
@@ -71,10 +88,29 @@ module Bake
71
88
  @@linker_libs_array << adaptedPath
72
89
  when LibElement::SEARCH_PATH
73
90
  adaptedPath, prefix = adaptPath(elem.value, block, prefix)
74
- if not @@lib_path_set.include?adaptedPath
91
+ lpf = "#{@@linker[:LIB_PATH_FLAG]}#{adaptedPath}"
92
+
93
+ if not Bake.options.oldLinkOrder
94
+ if not @@lib_path_set.include?adaptedPath
95
+ @@lib_path_set << adaptedPath
96
+ @@linker_libs_array << lpf if @@linker[:LIST_MODE] == false
97
+ end
98
+ end
99
+
100
+ if not Bake.options.oldLinkOrder
101
+ # must be moved to the end, so delete it...
102
+ ind1 = @@lib_path_set.index(adaptedPath)
103
+ ind2 = @@linker_libs_array.index(lpf)
104
+ @@lib_path_set.delete_at(ind1) if not ind1.nil?
105
+ @@linker_libs_array.delete_at(ind2) if not ind2.nil?
106
+ end
107
+
108
+ if (not Bake.options.oldLinkOrder) or (not @@lib_path_set.include?adaptedPath)
109
+ # end place it at the end again
75
110
  @@lib_path_set << adaptedPath
76
- @@linker_libs_array << "#{@@linker[:LIB_PATH_FLAG]}#{adaptedPath}" if @@linker[:LIST_MODE] == false
111
+ @@linker_libs_array << lpf if @@linker[:LIST_MODE] == false
77
112
  end
113
+
78
114
  when LibElement::DEPENDENCY
79
115
  if Blocks::ALL_BLOCKS.include?elem.value
80
116
  bb = Blocks::ALL_BLOCKS[elem.value]
@@ -84,16 +120,19 @@ module Bake
84
120
  end
85
121
  end
86
122
  end
87
- end
88
-
89
-
90
-
91
-
123
+
124
+ addOwnLib(block) if not Bake.options.oldLinkOrder
125
+
126
+ end
127
+
128
+
129
+
130
+
92
131
  def self.calcLibElements(block)
93
132
  lib_elements = [] # value = array pairs [type, name/path string]
94
-
133
+
95
134
  block.config.libStuff.each do |l|
96
-
135
+
97
136
  if (Metamodel::UserLibrary === l)
98
137
  ln = l.name
99
138
  ls = nil
@@ -120,16 +159,16 @@ module Bake
120
159
  else
121
160
  ln = ls + "/" + ln unless ls.nil?
122
161
  lib_elements << LibElement.new(LibElement::LIB_WITH_PATH, ln)
123
- end
162
+ end
124
163
  elsif (Metamodel::Dependency === l)
125
164
  lib_elements << LibElement.new(LibElement::DEPENDENCY, l.name+","+l.config)
126
165
  end
127
-
166
+
128
167
  end
129
-
168
+
130
169
  return lib_elements
131
- end
132
-
170
+ end
171
+
133
172
  end
134
-
173
+
135
174
  end
@@ -3,12 +3,12 @@ require 'common/ext/rtext'
3
3
  module Bake
4
4
 
5
5
  class MergeConfig
6
-
6
+
7
7
  def initialize(child, parent)
8
8
  @child = child
9
9
  @parent = parent
10
10
  end
11
-
11
+
12
12
  def self.clone(obj)
13
13
  if obj.is_a?(Metamodel::ModelElement)
14
14
  cloneModelElement(obj)
@@ -18,7 +18,7 @@ module Bake
18
18
  obj # no clone, should not happen
19
19
  end
20
20
  end
21
-
21
+
22
22
  def self.cloneModelElement(obj)
23
23
  cpy = obj.class.new
24
24
  cpy.file_name = obj.file_name
@@ -36,14 +36,14 @@ module Bake
36
36
  end
37
37
  cpy
38
38
  end
39
-
40
-
39
+
40
+
41
41
  def replace()
42
42
  @child.class.ecore.eAllReferences.each do |f|
43
43
  next unless @parent.class.ecore.eAllReferences.include?f
44
44
  next unless f.containment
45
45
  childData = @child.getGeneric(f.name)
46
- if Metamodel::ModelElement === childData
46
+ if Metamodel::ModelElement === childData
47
47
  @parent.setGeneric(f.name,childData) if !childData.nil?
48
48
  elsif Array === childData
49
49
  if !childData.empty?
@@ -56,7 +56,7 @@ module Bake
56
56
  end
57
57
  end
58
58
  end
59
-
59
+
60
60
  def hasSubNodes(elem)
61
61
  elem.class.ecore.eAllReferences.each do |f|
62
62
  next unless f.containment
@@ -68,31 +68,35 @@ module Bake
68
68
  end
69
69
 
70
70
  def sameAttr(childData, parentData)
71
- childData.class.ecore.eAllAttributes.all? { |a|
71
+ childData.class.ecore.eAllAttributes.all? { |a|
72
72
  a.eAnnotations.each do |x| x.details.each do |y|
73
73
  return true if (y.key == :internal and y.value == true)
74
74
  end; end
75
75
  a.name == "line_number" || (not childData.eIsSet(a.name)) || (childData.getGeneric(a.name) == parentData.getGeneric(a.name))
76
76
  }
77
77
  end
78
-
78
+
79
79
  def removeChilds(childElem, parentElem)
80
80
  return if childElem.nil? or parentElem.nil?
81
-
81
+
82
82
  childElem.class.ecore.eAllReferences.each do |f|
83
83
  next unless f.containment
84
- childData = childElem.getGeneric(f.name)
85
- parentData = parentElem.getGeneric(f.name)
84
+ begin
85
+ childData = childElem.getGeneric(f.name)
86
+ parentData = parentElem.getGeneric(f.name)
87
+ rescue Exception => ex
88
+ next # how to check fast if f.name is valid?
89
+ end
86
90
  next if childData.nil? or parentData.nil?
87
91
  if (Array === childData)
88
92
  if !parentData.empty? && !childData.empty?
89
93
  childData.each do |c|
90
- cN = hasSubNodes(c)
94
+ cN = hasSubNodes(c)
91
95
  toRemove = []
92
96
  parentData.each do |p|
93
97
  next if p.class != c.class
94
98
  if (not cN)
95
- if sameAttr(c, p)
99
+ if sameAttr(c, p)
96
100
  toRemove << p
97
101
  end
98
102
  else
@@ -116,24 +120,24 @@ module Bake
116
120
  end
117
121
  end
118
122
  end
119
-
123
+
120
124
  def extendAttributes(childData, parentData)
121
- parentData.class.ecore.eAllAttributes.each do |a|
125
+ parentData.class.ecore.eAllAttributes.each do |a|
122
126
  childData.setGeneric(a.name, parentData.getGeneric(a.name)) if !childData.eIsSet(a.name) && parentData.eIsSet(a.name)
123
127
  end
124
128
  end
125
-
129
+
126
130
  def extend(child, parent)
127
131
  (parent.class.ecore.eAllReferences & child.class.ecore.eAllReferences).each do |f|
128
132
  next unless f.containment
129
133
  parentData = parent.getGeneric(f.name)
130
134
  next if parentData.nil? or (Array === parentData && parentData.empty?)
131
135
  childData = child.getGeneric(f.name)
132
-
136
+
133
137
  if Array === parentData
134
138
  if f.name == "compiler"
135
139
  extendedParentData = []
136
- parentData.each do |p|
140
+ parentData.each do |p|
137
141
  c = childData.find { |c| p.ctype == c.ctype }
138
142
  if c
139
143
  extendAttributes(c, p)
@@ -144,7 +148,7 @@ module Bake
144
148
  end
145
149
  end
146
150
  restOfChildData = childData.find_all { |c| parentData.find {|p| p.ctype != c.ctype } }
147
- child.setGeneric(f.name, extendedParentData + restOfChildData)
151
+ child.setGeneric(f.name, extendedParentData + restOfChildData)
148
152
  else
149
153
  child.setGeneric(f.name, parentData + childData)
150
154
  end
@@ -157,17 +161,17 @@ module Bake
157
161
  end
158
162
  end
159
163
  end
160
- end
161
-
164
+ end
165
+
162
166
  def copyChildToParent(c, p)
163
167
  (p.class.ecore.eAllReferences & c.class.ecore.eAllReferences).each do |f|
164
168
  next unless f.containment
165
169
  childData = c.getGeneric(f.name)
166
170
  next if childData.nil? || (Array === childData && childData.empty?)
167
171
  p.setGeneric(f.name, childData)
168
- end
172
+ end
169
173
  end
170
-
174
+
171
175
  def merge(type)
172
176
  s = StringIO.new
173
177
  ser = RText::Serializer.new(Language)
@@ -178,7 +182,7 @@ module Bake
178
182
  s.puts "\n>>>> parent <<<<"
179
183
  ser.serialize(@parent, s)
180
184
  end
181
-
185
+
182
186
  if (type == :remove)
183
187
  removeChilds(@child, @parent)
184
188
  elsif (type == :replace)
@@ -197,9 +201,9 @@ module Bake
197
201
  puts "#{s.string}"
198
202
  end
199
203
 
200
-
204
+
201
205
  end
202
-
206
+
203
207
  end
204
208
 
205
209
  end
@@ -15,35 +15,36 @@ module Bake
15
15
  def self.options=(options)
16
16
  @@options = options
17
17
  end
18
-
18
+
19
19
  class Options < Parser
20
20
  attr_accessor :build_config, :nocache, :analyze, :eclipseOrder, :envToolchain, :showConfigs
21
21
  attr_reader :main_dir, :project, :filename, :main_project_name, :cc2j_filename, :bundleDir # String
22
22
  attr_reader :roots, :include_filter, :exclude_filter, :adapt # String List
23
- attr_reader :conversion_info, :stopOnFirstError, :clean, :rebuild, :show_includes, :show_includes_and_defines, :linkOnly, :no_autodir, :clobber, :lint, :docu, :debug, :prepro # Boolean
23
+ attr_reader :conversion_info, :stopOnFirstError, :clean, :rebuild, :show_includes, :show_includes_and_defines, :linkOnly, :no_autodir, :clobber, :lint, :docu, :debug, :prepro, :oldLinkOrder # Boolean
24
24
  attr_reader :threads, :socket, :lint_min, :lint_max # Fixnum
25
25
  attr_reader :vars # map
26
26
  attr_reader :verbose
27
27
  attr_reader :consoleOutput_fullnames, :consoleOutput_visualStudio
28
-
28
+
29
29
 
30
30
  def initialize(argv)
31
31
  super(argv)
32
32
 
33
+ @oldLinkOrder = false
33
34
  @conversion_info = false
34
35
  @envToolchain = false
35
36
  @analyze = false
36
37
  @eclipseOrder = false
37
38
  @showConfigs = false
38
39
  @consoleOutput_fullnames = false
39
- @consoleOutput_visualStudio = false
40
+ @consoleOutput_visualStudio = false
40
41
  @prepro = false
41
42
  @stopOnFirstError = false
42
43
  @verbose = 1
43
44
  @vars = {}
44
45
  @build_config = ""
45
46
  @main_dir = nil
46
- @project = nil
47
+ @project = nil
47
48
  @filename = nil
48
49
  @cc2j_filename = nil
49
50
  @clean = false
@@ -68,7 +69,7 @@ module Bake
68
69
  @main_project_name = ""
69
70
  @adapt = []
70
71
  @bundleDir = nil
71
-
72
+
72
73
  add_option(["-b", "" ], lambda { |x| set_build_config(x) })
73
74
  add_option(["-m" ], lambda { |x| set_main_dir(x) })
74
75
  add_option(["-p" ], lambda { |x| @project = x })
@@ -84,22 +85,22 @@ module Bake
84
85
  add_option(["--lint" ], lambda { @lint = true })
85
86
  add_option(["--lint-min", "--lint_min" ], lambda { |x| @lint_min = String === x ? x.to_i : x })
86
87
  add_option(["--lint-max", "--lint_max" ], lambda { |x| @lint_max = String === x ? x.to_i : x })
87
-
88
- add_option(["--create" ], lambda { |x| Bake::Create.proj(x) })
89
- add_option(["--conversion-info", "--conversion_info" ], lambda { @conversion_info = true })
90
-
88
+
89
+ add_option(["--create" ], lambda { |x| Bake::Create.proj(x) })
90
+ add_option(["--conversion-info", "--conversion_info" ], lambda { @conversion_info = true })
91
+
91
92
  add_option(["--generate-doc", "--docu" ], lambda { @docu = true })
92
-
93
- add_option(["--adapt" ], lambda { |x| set_adapt(x) })
94
-
93
+
94
+ add_option(["--adapt" ], lambda { |x| set_adapt(x) })
95
+
95
96
  add_option(["-v0" ], lambda { @verbose = 0 })
96
97
  add_option(["-v1" ], lambda { @verbose = 1 })
97
98
  add_option(["-v2" ], lambda { @verbose = 2 })
98
99
  add_option(["-v3" ], lambda { @verbose = 3 })
99
-
100
+
100
101
  add_option(["--debug" ], lambda { @debug = true })
101
102
  add_option(["--set" ], lambda { |x| set_set(x) })
102
-
103
+
103
104
  add_option(["--clobber" ], lambda { @clobber = true; @clean = true })
104
105
  add_option(["--ignore-cache", "--ignore_cache" ], lambda { @nocache = true })
105
106
  add_option(["-j", "--threads" ], lambda { |x| set_threads(x) })
@@ -110,7 +111,7 @@ module Bake
110
111
  add_option(["--omit", "--exclude_filter" ], lambda { |x| @exclude_filter << x })
111
112
  add_option(["--abs-paths", "--show_abs_paths" ], lambda { @consoleOutput_fullnames = true })
112
113
  add_option(["--bundle" ], lambda { |x| set_bundle_dir(x) })
113
-
114
+
114
115
  add_option(["-h", "--help" ], lambda { Bake::Usage.show })
115
116
 
116
117
  add_option(["--incs-and-defs", "--show_incs_and_defs" ], lambda { @show_includes_and_defines = true })
@@ -120,10 +121,12 @@ module Bake
120
121
  add_option(["--version" ], lambda { ExitHelper.exit(0) })
121
122
  add_option(["--list", "--show_configs" ], lambda { @showConfigs = true })
122
123
  add_option(["--writeCC2J" ], lambda { |x| @cc2j_filename = x.gsub(/[\\]/,'/') })
124
+ add_option(["--link-2-17", "--link_2_17" ], lambda { @oldLinkOrder = true })
125
+
123
126
 
124
127
  # hidden
125
128
  add_option(["--visualStudio" ], lambda { @consoleOutput_visualStudio = true })
126
-
129
+
127
130
  # deprecated and not replaced by new command
128
131
  add_option(["--show_include_paths" ], lambda { @show_includes = true })
129
132
 
@@ -136,19 +139,19 @@ module Bake
136
139
  @roots = @def_roots if @roots.length == 0
137
140
  @roots.uniq!
138
141
  @adapt.uniq!
139
-
142
+
140
143
  if @project
141
144
  if @project.split(',').length > 2
142
145
  Bake.formatter.printError("Error: only one comma allowed for -p")
143
146
  ExitHelper.exit(1)
144
147
  end
145
148
  end
146
-
149
+
147
150
  if @conversion_info
148
151
  if @rebuild
149
152
  Bake.formatter.printError("Error: --conversion-info and --rebuild not allowed at the same time")
150
153
  ExitHelper.exit(1)
151
- end
154
+ end
152
155
  if @clean
153
156
  Bake.formatter.printError("Error: --conversion-info and -c not allowed at the same time")
154
157
  ExitHelper.exit(1)
@@ -174,7 +177,7 @@ module Bake
174
177
  ExitHelper.exit(1)
175
178
  end
176
179
  end
177
-
180
+
178
181
  if @linkOnly
179
182
  if @rebuild
180
183
  Bake.formatter.printError("Error: --link-only and --rebuild not allowed at the same time")
@@ -200,13 +203,13 @@ module Bake
200
203
  ExitHelper.exit(1)
201
204
  end
202
205
  end
203
-
206
+
204
207
  if @lint and @docu
205
208
  Bake.formatter.printError("Error: --lint and --docu not allowed at the same time")
206
209
  ExitHelper.exit(1)
207
210
  end
208
211
  end
209
-
212
+
210
213
  def check_valid_dir(dir)
211
214
  if not File.exists?(dir)
212
215
  Bake.formatter.printError("Error: Directory #{dir} does not exist")
@@ -215,8 +218,8 @@ module Bake
215
218
  if not File.directory?(dir)
216
219
  Bake.formatter.printError("Error: #{dir} is not a directory")
217
220
  ExitHelper.exit(1)
218
- end
219
- end
221
+ end
222
+ end
220
223
 
221
224
  def set_build_config(config)
222
225
  if not @build_config.empty?
@@ -225,30 +228,30 @@ module Bake
225
228
  end
226
229
  @build_config = config
227
230
  end
228
-
231
+
229
232
  def set_main_dir(dir)
230
233
  check_valid_dir(dir)
231
234
  @main_dir = File.expand_path(dir.gsub(/[\\]/,'/'))
232
235
  @main_project_name = File::basename(@main_dir)
233
236
  @def_roots = calc_def_roots(@main_dir)
234
237
  end
235
-
238
+
236
239
  def set_bundle_dir(dir)
237
240
  d = File.expand_path(dir.gsub(/[\\]/,'/'))
238
241
  Bake::Bundle.instance.setOutputDir(d)
239
242
  end
240
-
241
-
243
+
244
+
242
245
  def set_root(dir)
243
246
  check_valid_dir(dir)
244
247
  r = File.expand_path(dir.gsub(/[\\]/,'/'))
245
248
  @roots << r if not @roots.include?r
246
249
  end
247
-
250
+
248
251
  def set_adapt(name)
249
252
  @adapt << name if not @adapt.include?name
250
253
  end
251
-
254
+
252
255
  def set_threads(num)
253
256
  @threads = String === num ? num.to_i : num
254
257
  if @threads <= 0
@@ -256,7 +259,7 @@ module Bake
256
259
  ExitHelper.exit(1)
257
260
  end
258
261
  end
259
-
262
+
260
263
  def set_set(str)
261
264
  ar = str.split("=")
262
265
  if not str.include?"=" or ar[0].length == 0
@@ -265,7 +268,7 @@ module Bake
265
268
  end
266
269
  @vars[ar[0]] = ar[1..-1].join("=")
267
270
  end
268
-
271
+
269
272
  end
270
273
 
271
274
  end