bake-toolkit 2.17.4 → 2.18.0

Sign up to get free protection for your applications and to get access to all the features.
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