cxxproject 0.5.48 → 0.5.59

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. data/Rakefile.rb +116 -116
  2. data/bin/cxx +10 -10
  3. data/lib/cxxproject.rb +23 -23
  4. data/lib/cxxproject/buildingblocks/binary_library.rb +39 -39
  5. data/lib/cxxproject/buildingblocks/building_block.rb +251 -239
  6. data/lib/cxxproject/buildingblocks/command_line.rb +79 -79
  7. data/lib/cxxproject/buildingblocks/custom_building_block.rb +39 -41
  8. data/lib/cxxproject/buildingblocks/executable.rb +257 -249
  9. data/lib/cxxproject/buildingblocks/has_dependencies_mixin.rb +83 -83
  10. data/lib/cxxproject/buildingblocks/has_includes_mixin.rb +20 -20
  11. data/lib/cxxproject/buildingblocks/has_libraries_mixin.rb +34 -34
  12. data/lib/cxxproject/buildingblocks/has_sources_mixin.rb +371 -364
  13. data/lib/cxxproject/buildingblocks/makefile.rb +153 -153
  14. data/lib/cxxproject/buildingblocks/module.rb +35 -35
  15. data/lib/cxxproject/buildingblocks/single_source.rb +33 -33
  16. data/lib/cxxproject/buildingblocks/source_library.rb +124 -124
  17. data/lib/cxxproject/errorparser/diab_compiler_error_parser.rb +40 -40
  18. data/lib/cxxproject/errorparser/diab_linker_error_parser.rb +41 -33
  19. data/lib/cxxproject/errorparser/error_parser.rb +50 -50
  20. data/lib/cxxproject/errorparser/gcc_compiler_error_parser.rb +35 -30
  21. data/lib/cxxproject/errorparser/gcc_linker_error_parser.rb +35 -29
  22. data/lib/cxxproject/errorparser/ti_compiler_error_parser.rb +30 -30
  23. data/lib/cxxproject/errorparser/ti_linker_error_parser.rb +30 -29
  24. data/lib/cxxproject/eval_context.rb +144 -136
  25. data/lib/cxxproject/ext/file.rb +71 -71
  26. data/lib/cxxproject/ext/filelist.rb +6 -6
  27. data/lib/cxxproject/ext/progressbar.rb +20 -20
  28. data/lib/cxxproject/ext/rake.rb +419 -397
  29. data/lib/cxxproject/ext/rake_dirty.rb +30 -30
  30. data/lib/cxxproject/ext/rake_listener.rb +59 -59
  31. data/lib/cxxproject/ext/stdout.rb +44 -44
  32. data/lib/cxxproject/ext/string.rb +9 -9
  33. data/lib/cxxproject/ide_interface.rb +187 -181
  34. data/lib/cxxproject/toolchain/clang.rb +39 -39
  35. data/lib/cxxproject/toolchain/colorizing_formatter.rb +99 -99
  36. data/lib/cxxproject/toolchain/diab.rb +3 -1
  37. data/lib/cxxproject/toolchain/gcc.rb +2 -1
  38. data/lib/cxxproject/toolchain/provider.rb +131 -128
  39. data/lib/cxxproject/toolchain/toolchain.rb +38 -38
  40. data/lib/cxxproject/toolchain/toolchain_benchmark.rb +23 -23
  41. data/lib/cxxproject/torake.rb +218 -216
  42. data/lib/cxxproject/utils/cleanup.rb +20 -20
  43. data/lib/cxxproject/utils/console.rb +6 -6
  44. data/lib/cxxproject/utils/exit_helper.rb +40 -40
  45. data/lib/cxxproject/utils/graphstream.rb +154 -154
  46. data/lib/cxxproject/utils/optional.rb +16 -16
  47. data/lib/cxxproject/utils/printer.rb +50 -50
  48. data/lib/cxxproject/utils/process.rb +52 -52
  49. data/lib/cxxproject/utils/progress.rb +66 -66
  50. data/lib/cxxproject/utils/progress_helper.rb +77 -77
  51. data/lib/cxxproject/utils/rbcurse.rb +284 -284
  52. data/lib/cxxproject/utils/rbcurse_executable_ext.rb +14 -14
  53. data/lib/cxxproject/utils/rbcurse_progress.rb +71 -71
  54. data/lib/cxxproject/utils/rbcurse_tasktable.rb +51 -51
  55. data/lib/cxxproject/utils/stats.rb +60 -60
  56. data/lib/cxxproject/utils/ubigraph.rb +228 -228
  57. data/lib/cxxproject/utils/utils.rb +60 -37
  58. data/lib/cxxproject/utils/valgrind.rb +11 -11
  59. data/lib/cxxproject/version.rb +7 -7
  60. data/lib/tools/Rakefile.rb.template +10 -10
  61. data/lib/tools/project.rb.template +6 -6
  62. data/lib/tools/project_wizard.rb +66 -66
  63. data/spec/building_block_spec.rb +56 -56
  64. data/spec/cxxproject_2_rake_spec.rb +186 -186
  65. data/spec/file_ext_spec.rb +30 -30
  66. data/spec/ide_interface_spec.rb +41 -41
  67. data/spec/object_dependency_spec.rb +83 -83
  68. data/spec/project_path_spec.rb +71 -71
  69. data/spec/rake_listener_ext_spec.rb +58 -58
  70. data/spec/spec_helper.rb +18 -18
  71. data/spec/string_spec.rb +11 -11
  72. data/spec/testdata/basic/exe12/project.rb +5 -5
  73. data/spec/testdata/basic/lib1/project.rb +5 -5
  74. data/spec/testdata/basic/lib2/project.rb +8 -8
  75. data/spec/testdata/multiple_levels/libs/lib1/project.rb +5 -5
  76. data/spec/testdata/multiple_levels/libs/lib2/project.rb +19 -19
  77. data/spec/testdata/multiple_levels/mainproject/basic/project.rb +8 -8
  78. data/spec/testdata/onlyOneHeader/Rakefile.rb +4 -4
  79. data/spec/testdata/onlyOneHeader/project.rb +4 -4
  80. data/spec/toolchain_spec.rb +29 -29
  81. metadata +58 -58
@@ -1,38 +1,38 @@
1
- require 'yaml'
2
-
3
- class Hash
4
- def method_missing(m, *args, &block)
5
- if m.to_s =~ /(.*)=$/ # was assignment
6
- self[$1] = args[0]
7
- else
8
- fetch(m.to_s, nil)
9
- end
10
- end
11
- def recursive_merge(h)
12
- self.merge!(h) {|key, _old, _new| if _old.class == Hash then _old.recursive_merge(_new) else _new end }
13
- end
14
-
15
- end
16
-
17
- class Toolchain
18
- attr_reader :toolchain
19
- def initialize(toolchain_file)
20
- @toolchain = YAML::load(File.open(toolchain_file))
21
- if @toolchain.base
22
- @based_on = @toolchain.base
23
- else
24
- @based_on = "base"
25
- end
26
- basechain = YAML::load(File.open(File.join(File.dirname(__FILE__),"#{@based_on}.json")))
27
- @toolchain = basechain.recursive_merge(@toolchain)
28
- end
29
- def method_missing(m, *args, &block)
30
- if @toolchain[m.to_s]
31
- self.class.send(:define_method, m) { @toolchain[m.to_s] }
32
- @toolchain[m.to_s]
33
- else
34
- return super
35
- end
36
- end
37
-
38
- end
1
+ require 'yaml'
2
+
3
+ class Hash
4
+ def method_missing(m, *args, &block)
5
+ if m.to_s =~ /(.*)=$/ # was assignment
6
+ self[$1] = args[0]
7
+ else
8
+ fetch(m.to_s, nil)
9
+ end
10
+ end
11
+ def recursive_merge(h)
12
+ self.merge!(h) {|key, _old, _new| if _old.class == Hash then _old.recursive_merge(_new) else _new end }
13
+ end
14
+
15
+ end
16
+
17
+ class Toolchain
18
+ attr_reader :toolchain
19
+ def initialize(toolchain_file)
20
+ @toolchain = YAML::load(File.open(toolchain_file))
21
+ if @toolchain.base
22
+ @based_on = @toolchain.base
23
+ else
24
+ @based_on = "base"
25
+ end
26
+ basechain = YAML::load(File.open(File.join(File.dirname(__FILE__),"#{@based_on}.json")))
27
+ @toolchain = basechain.recursive_merge(@toolchain)
28
+ end
29
+ def method_missing(m, *args, &block)
30
+ if @toolchain[m.to_s]
31
+ self.class.send(:define_method, m) { @toolchain[m.to_s] }
32
+ @toolchain[m.to_s]
33
+ else
34
+ return super
35
+ end
36
+ end
37
+
38
+ end
@@ -1,23 +1,23 @@
1
- $:.unshift File.dirname(__FILE__)
2
- require 'toolchain'
3
- require 'benchmark'
4
-
5
- Benchmark.bm do |x|
6
-
7
- n = 1000
8
- x.report("load Toolchain #{n}-times") do
9
- n.times do
10
- tc = Toolchain.new('gcc.json')
11
- end
12
- end
13
-
14
- tc = Toolchain.new('gcc.json')
15
- n = 1000000
16
- x.report("access fields as methods #{n}-times") do
17
- n.times do
18
- x = tc.compiler.c.source_file_endings
19
- end
20
- end
21
-
22
- end
23
-
1
+ $:.unshift File.dirname(__FILE__)
2
+ require 'toolchain'
3
+ require 'benchmark'
4
+
5
+ Benchmark.bm do |x|
6
+
7
+ n = 1000
8
+ x.report("load Toolchain #{n}-times") do
9
+ n.times do
10
+ tc = Toolchain.new('gcc.json')
11
+ end
12
+ end
13
+
14
+ tc = Toolchain.new('gcc.json')
15
+ n = 1000000
16
+ x.report("access fields as methods #{n}-times") do
17
+ n.times do
18
+ x = tc.compiler.c.source_file_endings
19
+ end
20
+ end
21
+
22
+ end
23
+
@@ -1,216 +1,218 @@
1
- require 'logger'
2
- require 'pp'
3
- require 'pathname'
4
- require 'cxxproject/ext/rake'
5
- require 'cxxproject/buildingblocks/module'
6
- require 'cxxproject/buildingblocks/makefile'
7
- require 'cxxproject/buildingblocks/executable'
8
- require 'cxxproject/buildingblocks/source_library'
9
- require 'cxxproject/buildingblocks/single_source'
10
- require 'cxxproject/buildingblocks/binary_library'
11
- require 'cxxproject/buildingblocks/custom_building_block'
12
- require 'cxxproject/buildingblocks/command_line'
13
- require 'cxxproject/toolchain/colorizing_formatter'
14
- require 'cxxproject/eval_context'
15
- require 'cxxproject/utils/valgrind'
16
-
17
- module Cxxproject
18
- class CxxProject2Rake
19
-
20
- attr_accessor :base, :all_tasks
21
-
22
- def initialize(projects, build_dir, toolchain, base='.')
23
- @projects = projects
24
- @base = base
25
- @build_dir = build_dir
26
- @toolchain = toolchain
27
- @rel_projects = @projects.map { |p| File.join(@base, p) }
28
-
29
- # TODO: this should be cleaned up somehow...
30
- if Utils::OS.linux?
31
- toolchain[:LINKER][:LIB_PREFIX_FLAGS] = "-Wl,--whole-archive"
32
- toolchain[:LINKER][:LIB_POSTFIX_FLAGS] = "-Wl,--no-whole-archive"
33
- end
34
-
35
- Rake::application.deriveIncludes = true
36
-
37
- initialize_logging
38
- @all_tasks = instantiate_tasks
39
-
40
- create_generic_tasks
41
- create_console_colorization
42
- create_multitask
43
- create_bail_on_first_task
44
- describe_clean_task
45
- create_console_task
46
- end
47
-
48
- def create_console_task
49
- require 'cxxproject/utils/console'
50
- end
51
-
52
- def initialize_logging
53
- @log = Logger.new(STDOUT)
54
- @log.formatter = proc { |severity, datetime, progname, msg|
55
- "#{severity}: #{msg}\n"
56
- }
57
- # Logger loglevels: fatal, error, warn, info, debug
58
- # Rake --verbose -> info
59
- # Rake --trace -> debug
60
- @log.level = Logger::ERROR
61
- @log.level = Logger::INFO if RakeFileUtils.verbose == true
62
- @log.level = Logger::DEBUG if Rake::application.options.trace
63
- @log.debug "initializing for build_dir: \"#{@build_dir}\", base: \"#{@base}\""
64
- end
65
- def describe_clean_task
66
- Rake::Task[:clean].add_description('clean')
67
- end
68
- def create_bail_on_first_task
69
- desc 'set bail on first error'
70
- task :bail_on_first_error do
71
- Rake::Task.bail_on_first_error = true
72
- end
73
- end
74
-
75
- def create_multitask
76
- desc 'set parallelization of multitask'
77
- task :multitask, :threads do |t, args|
78
- arg = args.threads
79
- if arg
80
- Rake::application.max_parallel_tasks = arg.to_i
81
- end
82
- end
83
- end
84
-
85
- def create_console_colorization
86
- # default is on
87
- Cxxproject::ColorizingFormatter.enabled = true
88
- desc 'Toggle colorization of console output (use true|t|yes|y|1|on for true ... everything else is false)'
89
- task :toggle_colorize, :on_off do |t, args|
90
- arg = args[:on_off] || 'false'
91
- on_off = arg.match(/(true|t|yes|y|1|on)$/) != nil
92
- Cxxproject::ColorizingFormatter.enabled = on_off
93
- end
94
- end
95
-
96
- def create_generic_tasks
97
- tasks = [:lib, :exe, :run]
98
- if Cxxproject::Valgrind::available?
99
- tasks << :valgrind
100
- end
101
- tasks << nil
102
- tasks.each { |i| create_filter_task_with_namespace(i) }
103
- end
104
-
105
- def create_filter_task_with_namespace(basename)
106
- if basename
107
- desc "invoke #{basename} with filter"
108
- namespace basename do
109
- create_filter_task("#{basename}:")
110
- end
111
- else
112
- desc 'invoke with filter'
113
- create_filter_task('')
114
- end
115
- end
116
-
117
- def create_filter_task(basename)
118
- task :filter, :filter do |t, args|
119
- filter = ".*"
120
- if args[:filter]
121
- filter = "#{args[:filter]}"
122
- end
123
- filter = Regexp.new("#{basename}#{filter}")
124
- Rake::Task.tasks.each do |to_check|
125
- name = to_check.name
126
- if ("#{basename}:filter" != name)
127
- match = filter.match(name)
128
- if match
129
- to_check.invoke
130
- end
131
- end
132
- end
133
- end
134
- end
135
-
136
- def instantiate_tasks
137
- check_for_project_configs
138
-
139
- if @log.debug?
140
- @log.debug "project_configs:"
141
- @projects.each { |c| @log.debug " * #{c}" }
142
- end
143
- register_projects()
144
- ALL_BUILDING_BLOCKS.values.each do |block|
145
- prepare_block(block)
146
- end
147
- ALL_BUILDING_BLOCKS.values.inject([]) do |memo,block|
148
- @log.debug "creating tasks for block: #{block.name}/taskname: #{block.get_task_name} (#{block})"
149
- memo << block.convert_to_rake()
150
- end
151
- end
152
-
153
- def check_for_project_configs
154
- cd(@base, :verbose => false) do
155
- @projects.each do |p|
156
- abort "project config #{p} cannot be found!" unless File.exists?(p)
157
- end
158
- end
159
- end
160
-
161
- def prepare_block(block)
162
- block.set_tcs(@toolchain) unless block.has_tcs?
163
- block.set_output_dir(Dir.pwd + "/" + @build_dir)
164
- block.complete_init()
165
- end
166
-
167
- def register_projects()
168
- cd(@base,:verbose => false) do |b|
169
- @projects.each_with_index do |project_file, i|
170
- @log.debug "register project #{project_file}"
171
- dirname = File.dirname(project_file)
172
- @log.debug "dirname for project was: #{dirname}"
173
- cd(dirname,:verbose => false) do | base_dir |
174
- @log.debug "register project #{project_file} from within directory: #{Dir.pwd}"
175
- eval_file(b, File.basename(project_file))
176
- end
177
- end
178
- end
179
- end
180
- def eval_file(b, project_file)
181
- loadContext = EvalContext.new
182
- begin
183
- loadContext.eval_project(File.read(File.basename(project_file)), project_file, Dir.pwd)
184
- rescue Exception => e
185
- puts "problems with #{File.join(b, project_file)} in dir: #{Dir.pwd}"
186
- raise e
187
- end
188
- begin
189
- loadContext.myblock.call()
190
- rescue Exception => e
191
- error_string = "error while evaluating \"#{Dir.pwd}/#{project_file}\""
192
- puts error_string
193
- raise e
194
- end
195
-
196
- loadContext.all_blocks.each do |block|
197
- block.
198
- set_project_dir(Dir.pwd).
199
- set_config_files([Dir.pwd + "/" + project_file])
200
- if block.respond_to?(:sources) && block.sources.instance_of?(Rake::FileList)
201
- block.set_sources(block.sources.to_a)
202
- end
203
- end
204
- end
205
- def define_project_info_task
206
- desc "shows your defined projects"
207
- task :project_info do
208
- p "ProjectBase: #{@base}"
209
- ALL_BUILDING_BLOCKS.each_value do |bb|
210
- pp bb
211
- end
212
- end
213
- end
214
-
215
- end
216
- end
1
+ require 'logger'
2
+ require 'pp'
3
+ require 'pathname'
4
+ require 'cxxproject/ext/rake'
5
+ require 'cxxproject/buildingblocks/module'
6
+ require 'cxxproject/buildingblocks/makefile'
7
+ require 'cxxproject/buildingblocks/executable'
8
+ require 'cxxproject/buildingblocks/source_library'
9
+ require 'cxxproject/buildingblocks/single_source'
10
+ require 'cxxproject/buildingblocks/binary_library'
11
+ require 'cxxproject/buildingblocks/custom_building_block'
12
+ require 'cxxproject/buildingblocks/command_line'
13
+ require 'cxxproject/toolchain/colorizing_formatter'
14
+ require 'cxxproject/eval_context'
15
+ require 'cxxproject/utils/valgrind'
16
+
17
+ module Cxxproject
18
+ class CxxProject2Rake
19
+
20
+ attr_accessor :base, :all_tasks
21
+
22
+ def initialize(projects, build_dir, toolchain, base='.')
23
+ @base = base
24
+ cd(@base, :verbose => false) do
25
+ @projects = projects.to_a
26
+ end
27
+ @build_dir = build_dir
28
+ @toolchain = toolchain
29
+ @rel_projects = @projects#.map { |p| File.join(@base, p) }
30
+
31
+ # TODO: this should be cleaned up somehow...
32
+ if Utils::OS.linux?
33
+ toolchain[:LINKER][:LIB_PREFIX_FLAGS] = "-Wl,--whole-archive"
34
+ toolchain[:LINKER][:LIB_POSTFIX_FLAGS] = "-Wl,--no-whole-archive"
35
+ end
36
+
37
+ Rake::application.deriveIncludes = true
38
+
39
+ initialize_logging
40
+ @all_tasks = instantiate_tasks
41
+
42
+ create_generic_tasks
43
+ create_console_colorization
44
+ create_multitask
45
+ create_bail_on_first_task
46
+ describe_clean_task
47
+ create_console_task
48
+ end
49
+
50
+ def create_console_task
51
+ require 'cxxproject/utils/console'
52
+ end
53
+
54
+ def initialize_logging
55
+ @log = Logger.new(STDOUT)
56
+ @log.formatter = proc { |severity, datetime, progname, msg|
57
+ "#{severity}: #{msg}\n"
58
+ }
59
+ # Logger loglevels: fatal, error, warn, info, debug
60
+ # Rake --verbose -> info
61
+ # Rake --trace -> debug
62
+ @log.level = Logger::ERROR
63
+ @log.level = Logger::INFO if RakeFileUtils.verbose == true
64
+ @log.level = Logger::DEBUG if Rake::application.options.trace
65
+ @log.debug "initializing for build_dir: \"#{@build_dir}\", base: \"#{@base}\""
66
+ end
67
+ def describe_clean_task
68
+ Rake::Task[:clean].add_description('clean')
69
+ end
70
+ def create_bail_on_first_task
71
+ desc 'set bail on first error'
72
+ task :bail_on_first_error do
73
+ Rake::Task.bail_on_first_error = true
74
+ end
75
+ end
76
+
77
+ def create_multitask
78
+ desc 'set parallelization of multitask'
79
+ task :multitask, :threads do |t, args|
80
+ arg = args.threads
81
+ if arg
82
+ Rake::application.max_parallel_tasks = arg.to_i
83
+ end
84
+ end
85
+ end
86
+
87
+ def create_console_colorization
88
+ # default is on
89
+ Cxxproject::ColorizingFormatter.enabled = true
90
+ desc 'Toggle colorization of console output (use true|t|yes|y|1|on for true ... everything else is false)'
91
+ task :toggle_colorize, :on_off do |t, args|
92
+ arg = args[:on_off] || 'false'
93
+ on_off = arg.match(/(true|t|yes|y|1|on)$/) != nil
94
+ Cxxproject::ColorizingFormatter.enabled = on_off
95
+ end
96
+ end
97
+
98
+ def create_generic_tasks
99
+ tasks = [:lib, :exe, :run]
100
+ if Cxxproject::Valgrind::available?
101
+ tasks << :valgrind
102
+ end
103
+ tasks << nil
104
+ tasks.each { |i| create_filter_task_with_namespace(i) }
105
+ end
106
+
107
+ def create_filter_task_with_namespace(basename)
108
+ if basename
109
+ desc "invoke #{basename} with filter"
110
+ namespace basename do
111
+ create_filter_task("#{basename}:")
112
+ end
113
+ else
114
+ desc 'invoke with filter'
115
+ create_filter_task('')
116
+ end
117
+ end
118
+
119
+ def create_filter_task(basename)
120
+ task :filter, :filter do |t, args|
121
+ filter = ".*"
122
+ if args[:filter]
123
+ filter = "#{args[:filter]}"
124
+ end
125
+ filter = Regexp.new("#{basename}#{filter}")
126
+ Rake::Task.tasks.each do |to_check|
127
+ name = to_check.name
128
+ if ("#{basename}:filter" != name)
129
+ match = filter.match(name)
130
+ if match
131
+ to_check.invoke
132
+ end
133
+ end
134
+ end
135
+ end
136
+ end
137
+
138
+ def instantiate_tasks
139
+ check_for_project_configs
140
+
141
+ if @log.debug?
142
+ @log.debug "project_configs:"
143
+ @projects.each { |c| @log.debug " * #{c}" }
144
+ end
145
+ register_projects()
146
+ ALL_BUILDING_BLOCKS.values.each do |block|
147
+ prepare_block(block)
148
+ end
149
+ ALL_BUILDING_BLOCKS.values.inject([]) do |memo,block|
150
+ @log.debug "creating tasks for block: #{block.name}/taskname: #{block.get_task_name} (#{block})"
151
+ memo << block.convert_to_rake()
152
+ end
153
+ end
154
+
155
+ def check_for_project_configs
156
+ cd(@base, :verbose => false) do
157
+ @projects.each do |p|
158
+ abort "project config #{p} cannot be found!" unless File.exists?(p)
159
+ end
160
+ end
161
+ end
162
+
163
+ def prepare_block(block)
164
+ block.set_tcs(@toolchain) unless block.has_tcs?
165
+ block.set_output_dir(Dir.pwd + "/" + @build_dir)
166
+ block.complete_init()
167
+ end
168
+
169
+ def register_projects()
170
+ cd(@base,:verbose => false) do |b|
171
+ @projects.each_with_index do |project_file, i|
172
+ @log.debug "register project #{project_file}"
173
+ dirname = File.dirname(project_file)
174
+ @log.debug "dirname for project was: #{dirname}"
175
+ cd(dirname,:verbose => false) do | base_dir |
176
+ @log.debug "register project #{project_file} from within directory: #{Dir.pwd}"
177
+ eval_file(b, File.basename(project_file))
178
+ end
179
+ end
180
+ end
181
+ end
182
+ def eval_file(b, project_file)
183
+ loadContext = EvalContext.new
184
+ begin
185
+ loadContext.eval_project(File.read(File.basename(project_file)), project_file, Dir.pwd)
186
+ rescue Exception => e
187
+ puts "problems with #{File.join(b, project_file)} in dir: #{Dir.pwd}"
188
+ raise e
189
+ end
190
+ begin
191
+ loadContext.myblock.call()
192
+ rescue Exception => e
193
+ error_string = "error while evaluating \"#{Dir.pwd}/#{project_file}\""
194
+ puts error_string
195
+ raise e
196
+ end
197
+
198
+ loadContext.all_blocks.each do |block|
199
+ block.
200
+ set_project_dir(Dir.pwd).
201
+ set_config_files([Dir.pwd + "/" + project_file])
202
+ if block.respond_to?(:sources) && block.sources.instance_of?(Rake::FileList)
203
+ block.set_sources(block.sources.to_a)
204
+ end
205
+ end
206
+ end
207
+ def define_project_info_task
208
+ desc "shows your defined projects"
209
+ task :project_info do
210
+ p "ProjectBase: #{@base}"
211
+ ALL_BUILDING_BLOCKS.each_value do |bb|
212
+ pp bb
213
+ end
214
+ end
215
+ end
216
+
217
+ end
218
+ end