bake-toolkit 1.0.9 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/bake/cache.rb CHANGED
@@ -15,6 +15,7 @@ module Cxxproject
15
15
  attr_accessor :exclude_filter
16
16
  attr_accessor :defaultToolchain
17
17
  attr_accessor :defaultToolchainTime
18
+ attr_accessor :no_autodir
18
19
  end
19
20
 
20
21
  class CacheAccess
@@ -107,6 +108,13 @@ module Cxxproject
107
108
  end
108
109
  end
109
110
 
111
+ if cache != nil
112
+ if (not @options.no_autodir.eql?(cache.no_autodir))
113
+ cache = nil
114
+ Printer.printInfo "Info: no_autodir option differs in cache, reloading meta information"
115
+ end
116
+ end
117
+
110
118
  else
111
119
  Printer.printInfo("Info: cache not found, reloading meta information")
112
120
  end
@@ -133,6 +141,7 @@ module Cxxproject
133
141
  cache.cache_file = @cacheFilename
134
142
  cache.version = Version.bake
135
143
  cache.include_filter = @options.include_filter
144
+ cache.no_autodir = @options.no_autodir
136
145
  cache.exclude_filter = @options.exclude_filter
137
146
  cache.workspace_roots = @options.roots
138
147
  cache.defaultToolchain = defaultToolchain
@@ -121,7 +121,7 @@ module Cxxproject
121
121
  has_attr 'lib', String, :defaultValueLiteral => ""
122
122
  has_attr 'target', String, :defaultValueLiteral => ""
123
123
  has_attr 'pathTo', String, :defaultValueLiteral => ""
124
- has_attr 'flags', String, :defaultValueLiteral => ""
124
+ contains_many 'flags', Flags, 'parent'
125
125
  end
126
126
 
127
127
  class CommandLine < Step
data/lib/bake/options.rb CHANGED
@@ -8,7 +8,7 @@ module Cxxproject
8
8
  class Options < Parser
9
9
  attr_reader :build_config, :main_dir, :project, :filename, :eclipse_version, :alias_filename # String
10
10
  attr_reader :roots, :include_filter, :exclude_filter # String List
11
- attr_reader :clean, :rebuild, :single, :verbose, :nocache, :color, :show_includes, :linkOnly, :check_uninc, :printLess # Boolean
11
+ attr_reader :clean, :rebuild, :single, :verbose, :nocache, :color, :show_includes, :linkOnly, :check_uninc, :printLess, :no_autodir # Boolean
12
12
  attr_reader :threads, :socket # Fixnum
13
13
 
14
14
  def initialize(argv)
@@ -28,6 +28,7 @@ module Cxxproject
28
28
  @show_includes = false
29
29
  @linkOnly = false
30
30
  @printLess = false
31
+ @no_autodir = false
31
32
  @threads = 8
32
33
  @roots = []
33
34
  @socket = 0
@@ -37,6 +38,8 @@ module Cxxproject
37
38
  @eclipse_version = ""
38
39
  @alias_filename = ""
39
40
 
41
+ add_default(Proc.new{ |x| set_build_config_default(x) })
42
+
40
43
  add_option(Option.new("-m",true) { |x| set_main_dir(x) })
41
44
  add_option(Option.new("-b",true) { |x| set_build_config(x) })
42
45
  add_option(Option.new("-p",true) { |x| set_project(x); set_single })
@@ -48,6 +51,7 @@ module Cxxproject
48
51
  add_option(Option.new("--rebuild",false) { set_rebuild })
49
52
  add_option(Option.new("--prepro",false) { set_prepro })
50
53
  add_option(Option.new("--link_only",false) { set_linkOnly })
54
+ add_option(Option.new("--no_autodir",false) { set_no_autodir })
51
55
 
52
56
  add_option(Option.new("-v0",false) { set_v(0) })
53
57
  add_option(Option.new("-v1",false) { set_v(1) })
@@ -57,7 +61,7 @@ module Cxxproject
57
61
  add_option(Option.new("--threads",true) { |x| set_threads(x) })
58
62
  add_option(Option.new("--socket",true) { |x| set_socket(x) })
59
63
  add_option(Option.new("--toolchain_info",true) { |x| print_toolchain(x) })
60
- add_option(Option.new("--available_toolchain",false) { print_toolchains })
64
+ add_option(Option.new("--toolchain_names",false) { print_toolchains })
61
65
  add_option(Option.new("--include_filter",true) { |x| set_include_filter(x) })
62
66
  add_option(Option.new("--exclude_filter",true) { |x| set_exclude_filter(x) })
63
67
  add_option(Option.new("--show_abs_paths",false) { set_show_fullnames })
@@ -74,8 +78,8 @@ module Cxxproject
74
78
 
75
79
  def usage
76
80
  puts "\nUsage: bake [options]"
81
+ puts " [-b] <name> Config name of main project"
77
82
  puts " -m <dir> Directory of main project (default is current directory)."
78
- puts " -b <name> Config name of main project"
79
83
  puts " -p <dir> Project to build/clean (default is main project)"
80
84
  puts " -f <name> Build/Clean this file only."
81
85
  puts " -c Clean the file/project."
@@ -99,6 +103,7 @@ module Cxxproject
99
103
  puts " --exclude_filter <name> Excludes steps with this filter name (can be used multiple times)."
100
104
  puts " 'PRE' or 'POST' excludes all PreSteps respectively PostSteps."
101
105
  puts " --show_abs_paths Compiler prints absolute filename paths instead of relative paths."
106
+ puts " --no_autodir Disable auto completion of paths like in IncludeDir"
102
107
  puts ""
103
108
  puts " -h, --help Print this help."
104
109
  puts " --show_license Print the license."
@@ -143,7 +148,18 @@ module Cxxproject
143
148
  @exclude_filter << x
144
149
  end
145
150
 
151
+ def set_build_config_default(config)
152
+ index = config.index('-')
153
+ return false if (index != nil and index == 0)
154
+ set_build_config(config)
155
+ return true
156
+ end
157
+
146
158
  def set_build_config(config)
159
+ if not @build_config.empty?
160
+ Printer.printError "Error: Cannot set build config '#{config}', because build config is already set to '#{@build_config}'"
161
+ ExitHelper.exit(1)
162
+ end
147
163
  @build_config = config
148
164
  end
149
165
 
@@ -184,6 +200,10 @@ module Cxxproject
184
200
  @linkOnly = true
185
201
  set_single()
186
202
  end
203
+
204
+ def set_no_autodir()
205
+ @no_autodir = true
206
+ end
187
207
 
188
208
  def set_v(num)
189
209
  if num == 0
@@ -198,14 +218,6 @@ module Cxxproject
198
218
  end
199
219
  end
200
220
 
201
- def set_printLess()
202
- @printLess = true
203
- end
204
- def set_verbose()
205
- @verbose = true
206
- end
207
-
208
-
209
221
  def set_color(x)
210
222
  if (x != "black" and x != "white")
211
223
  Printer.printError "Error: color scheme must be 'black' or 'white'"
data/lib/bake/version.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  module Cxxproject
2
2
  class Version
3
3
  def self.bake
4
- "1.0.9"
4
+ "1.0.10"
5
5
  end
6
6
  end
7
7
 
8
- expectedCxx = "0.5.61"
8
+ expectedCxx = "0.5.62"
9
9
  expectedRGen = "0.6.0"
10
10
  expectedRText = "0.2.0"
11
11
 
data/lib/option/parser.rb CHANGED
@@ -21,33 +21,41 @@ class Parser
21
21
  def initialize(argv)
22
22
  @options = {}
23
23
  @argv = argv
24
+ @default = nil
24
25
  end
25
26
 
26
27
  def add_option(opt)
27
28
  @options[opt.param] = opt
28
29
  end
29
30
 
31
+ def add_default(opt)
32
+ @default = opt
33
+ end
34
+
30
35
  def parse_internal(ignoreInvalid = true)
31
36
  pos = 0
32
37
  begin
33
38
  while pos < @argv.length do
34
39
  if not @options.include?@argv[pos]
35
- if ignoreInvalid
36
- pos = pos + 1
37
- next
40
+ if @default
41
+ if not @default.call(@argv[pos])
42
+ raise "Option #{@argv[pos]} unknown"
43
+ end
44
+ elsif not ignoreInvalid
45
+ raise "Option #{@argv[pos]} unknown"
38
46
  end
39
- raise "Option #{@argv[pos]} unknown"
40
- end
41
- option = @options[@argv[pos]]
42
- if option.arg
43
- if pos+1 < @argv.length and @argv[pos+1][0] != "-"
44
- option.block.call(@argv[pos+1])
45
- pos = pos + 1
47
+ else
48
+ option = @options[@argv[pos]]
49
+ if option.arg
50
+ if pos+1 < @argv.length and @argv[pos+1][0] != "-"
51
+ option.block.call(@argv[pos+1])
52
+ pos = pos + 1
53
+ else
54
+ raise "Argument for option #{@argv[pos]} missing"
55
+ end
46
56
  else
47
- raise "Argument for option #{@argv[pos]} missing"
57
+ option.block.call()
48
58
  end
49
- else
50
- option.block.call()
51
59
  end
52
60
  pos = pos + 1
53
61
  end
data/lib/tocxx.rb CHANGED
@@ -81,7 +81,7 @@ module Cxxproject
81
81
  end
82
82
 
83
83
  # PRE and POST CONDITIONS
84
- def addSteps(steps, bbModule, projDir, globalFilterStr = nil)
84
+ def addSteps(steps, bbModule, projDir, globalFilterStr, tcs)
85
85
  if steps
86
86
  array = (Metamodel::Step === steps ? [steps] : steps.step)
87
87
  array.reverse.each do |m|
@@ -131,7 +131,8 @@ module Cxxproject
131
131
  bb.set_path_to(pathHash)
132
132
  bb.pre_step = true if globalFilterStr
133
133
  end
134
- bb.set_flags(m.flags)
134
+ bb.set_flags(adjustFlags(tcs[:MAKE][:FLAGS],m.flags)) if m.flags
135
+
135
136
  @lib_elements[m.line_number] = [HasLibraries::LIB_WITH_PATH, m.lib] if m.lib != ""
136
137
  elsif Cxxproject::Metamodel::CommandLine === m
137
138
  nameOfBB = m.name
@@ -154,6 +155,8 @@ module Cxxproject
154
155
  projDir = config.parent.get_project_dir
155
156
 
156
157
  d = dir.respond_to?("name") ? dir.name : dir
158
+ return d if @options.no_autodir
159
+
157
160
  inc = d.split("/")
158
161
  if (inc[0] == projName)
159
162
  res = inc[1..-1].join("/") # within self
@@ -178,7 +181,7 @@ module Cxxproject
178
181
  end
179
182
  end
180
183
  else
181
- Printer.printInfo "Info: #{projName} uses \"..\" in path name #{d}"
184
+ Printer.printInfo "Info: #{projName} uses \"..\" in path name #{d}" if @options.verbose
182
185
  end
183
186
 
184
187
  res = d # relative from self as last resort
@@ -358,7 +361,15 @@ module Cxxproject
358
361
  bbModule = ModuleBuildingBlock.new("Project "+projName)
359
362
  bbModule.contents = []
360
363
 
361
- addSteps(config.postSteps, bbModule, projDir, "POST") if not @options.linkOnly
364
+ tcs = nil
365
+ if not Metamodel::CustomConfig === config
366
+ tcs = Utils.deep_copy(@defaultToolchain)
367
+ integrateToolchain(tcs, config.toolchain)
368
+ else
369
+ tcs = Utils.deep_copy(Cxxproject::Toolchain::Provider.default)
370
+ end
371
+
372
+ addSteps(config.postSteps, bbModule, projDir, "POST", tcs) if not @options.linkOnly
362
373
 
363
374
  # LIB, EXE
364
375
  if Metamodel::LibraryConfig === config
@@ -380,7 +391,7 @@ module Cxxproject
380
391
  Printer.printError "Error: #{config.file_name}(#{config.step.line_number}): attribute default not allowed here"
381
392
  ExitHelper.exit(1)
382
393
  end
383
- addSteps(config.step, bbModule, projDir)
394
+ addSteps(config.step, bbModule, projDir, nil, tcs)
384
395
  end
385
396
  bbModule.main_content = BinaryLibrary.new(projName, false)
386
397
  end
@@ -389,17 +400,7 @@ module Cxxproject
389
400
  bbModule.contents << bbModule.main_content
390
401
 
391
402
  # PRE CONDITIONS
392
- addSteps(config.preSteps, bbModule, projDir, "PRE") if not @options.linkOnly
393
-
394
-
395
- tcs = nil
396
- if not Metamodel::CustomConfig === config
397
- tcs = Utils.deep_copy(@defaultToolchain)
398
- integrateToolchain(tcs, config.toolchain)
399
- else
400
- tcs = Utils.deep_copy(Cxxproject::Toolchain::Provider.default)
401
- end
402
-
403
+ addSteps(config.preSteps, bbModule, projDir, "PRE", tcs) if not @options.linkOnly
403
404
 
404
405
  ([bbModule] + bbModule.contents).each do |c|
405
406
  c.set_tcs(tcs)
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: bake-toolkit
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.9
5
+ version: 1.0.10
6
6
  platform: ruby
7
7
  authors:
8
8
  - Alexander Schaal
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2013-03-22 00:00:00 Z
13
+ date: 2013-04-02 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: cxxproject
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - "="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.5.61
23
+ version: 0.5.62
24
24
  type: :runtime
25
25
  version_requirements: *id001
26
26
  - !ruby/object:Gem::Dependency