cxxproject 0.5.48 → 0.5.59

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 (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