cxxproject 0.5.76 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/Rakefile.rb +116 -116
  2. data/bin/cxx +10 -10
  3. data/lib/cxxproject/buildingblocks/binary_library.rb +39 -39
  4. data/lib/cxxproject/buildingblocks/building_block.rb +251 -234
  5. data/lib/cxxproject/buildingblocks/command_line.rb +79 -86
  6. data/lib/cxxproject/buildingblocks/custom_building_block.rb +39 -39
  7. data/lib/cxxproject/buildingblocks/executable.rb +246 -258
  8. data/lib/cxxproject/buildingblocks/has_dependencies_mixin.rb +83 -83
  9. data/lib/cxxproject/buildingblocks/has_includes_mixin.rb +20 -20
  10. data/lib/cxxproject/buildingblocks/has_libraries_mixin.rb +34 -34
  11. data/lib/cxxproject/buildingblocks/has_sources_mixin.rb +371 -379
  12. data/lib/cxxproject/buildingblocks/makefile.rb +153 -153
  13. data/lib/cxxproject/buildingblocks/module.rb +35 -35
  14. data/lib/cxxproject/buildingblocks/single_source.rb +33 -33
  15. data/lib/cxxproject/buildingblocks/source_library.rb +124 -111
  16. data/lib/cxxproject/errorparser/diab_compiler_error_parser.rb +40 -40
  17. data/lib/cxxproject/errorparser/diab_linker_error_parser.rb +41 -41
  18. data/lib/cxxproject/errorparser/error_parser.rb +50 -71
  19. data/lib/cxxproject/errorparser/gcc_compiler_error_parser.rb +35 -35
  20. data/lib/cxxproject/errorparser/gcc_linker_error_parser.rb +35 -35
  21. data/lib/cxxproject/errorparser/ti_compiler_error_parser.rb +30 -30
  22. data/lib/cxxproject/errorparser/ti_linker_error_parser.rb +30 -30
  23. data/lib/cxxproject/eval_context.rb +144 -144
  24. data/lib/cxxproject/ext/file.rb +71 -81
  25. data/lib/cxxproject/ext/filelist.rb +6 -6
  26. data/lib/cxxproject/ext/progressbar.rb +20 -0
  27. data/lib/cxxproject/ext/rake.rb +419 -434
  28. data/lib/cxxproject/ext/rake_dirty.rb +30 -30
  29. data/lib/cxxproject/ext/rake_listener.rb +59 -59
  30. data/lib/cxxproject/ext/stdout.rb +44 -44
  31. data/lib/cxxproject/ext/string.rb +9 -9
  32. data/lib/cxxproject/ide_interface.rb +187 -189
  33. data/lib/cxxproject/toolchain/clang.rb +39 -43
  34. data/lib/cxxproject/toolchain/colorizing_formatter.rb +99 -99
  35. data/lib/cxxproject/toolchain/diab.rb +1 -1
  36. data/lib/cxxproject/toolchain/gcc.rb +1 -1
  37. data/lib/cxxproject/toolchain/provider.rb +131 -143
  38. data/lib/cxxproject/toolchain/toolchain.rb +38 -38
  39. data/lib/cxxproject/toolchain/toolchain_benchmark.rb +23 -23
  40. data/lib/cxxproject/torake.rb +259 -218
  41. data/lib/cxxproject/utils/cleanup.rb +20 -24
  42. data/lib/cxxproject/utils/console.rb +6 -6
  43. data/lib/cxxproject/utils/exit_helper.rb +40 -40
  44. data/lib/cxxproject/utils/graphstream.rb +154 -154
  45. data/lib/cxxproject/utils/optional.rb +16 -16
  46. data/lib/cxxproject/utils/printer.rb +50 -50
  47. data/lib/cxxproject/utils/process.rb +52 -58
  48. data/lib/cxxproject/utils/progress.rb +66 -0
  49. data/lib/cxxproject/utils/progress_helper.rb +77 -0
  50. data/lib/cxxproject/utils/rbcurse.rb +284 -0
  51. data/lib/cxxproject/utils/rbcurse_executable_ext.rb +14 -0
  52. data/lib/cxxproject/utils/rbcurse_progress.rb +71 -0
  53. data/lib/cxxproject/utils/rbcurse_tasktable.rb +51 -0
  54. data/lib/cxxproject/utils/stats.rb +60 -60
  55. data/lib/cxxproject/utils/ubigraph.rb +228 -228
  56. data/lib/cxxproject/utils/utils.rb +37 -69
  57. data/lib/cxxproject/version.rb +7 -7
  58. data/lib/cxxproject.rb +23 -19
  59. data/lib/tools/Rakefile.rb.template +10 -10
  60. data/lib/tools/project.rb.template +6 -6
  61. data/lib/tools/project_wizard.rb +66 -66
  62. data/spec/building_block_spec.rb +56 -56
  63. data/spec/cxxproject_2_rake_spec.rb +186 -186
  64. data/spec/file_ext_spec.rb +30 -30
  65. data/spec/ide_interface_spec.rb +41 -41
  66. data/spec/object_dependency_spec.rb +83 -83
  67. data/spec/project_path_spec.rb +71 -71
  68. data/spec/rake_listener_ext_spec.rb +58 -58
  69. data/spec/spec_helper.rb +18 -18
  70. data/spec/string_spec.rb +11 -11
  71. data/spec/testdata/basic/exe12/project.rb +5 -5
  72. data/spec/testdata/basic/lib1/project.rb +5 -5
  73. data/spec/testdata/basic/lib2/project.rb +8 -8
  74. data/spec/testdata/multiple_levels/libs/lib1/project.rb +5 -5
  75. data/spec/testdata/multiple_levels/libs/lib2/project.rb +19 -19
  76. data/spec/testdata/multiple_levels/mainproject/basic/project.rb +8 -8
  77. data/spec/testdata/onlyOneHeader/Rakefile.rb +4 -4
  78. data/spec/testdata/onlyOneHeader/project.rb +4 -4
  79. data/spec/toolchain_spec.rb +29 -29
  80. metadata +116 -107
  81. checksums.yaml +0 -7
  82. data/lib/cxxproject/buildingblocks/lint.rb +0 -89
  83. data/lib/cxxproject/errorparser/gcc_lint_error_parser.rb +0 -34
  84. data/lib/cxxproject/errorparser/greenhills_compiler_error_parser.rb +0 -32
  85. data/lib/cxxproject/errorparser/greenhills_linker_error_parser.rb +0 -44
  86. data/lib/cxxproject/errorparser/keil_compiler_error_parser.rb +0 -40
  87. data/lib/cxxproject/errorparser/keil_linker_error_parser.rb +0 -30
  88. data/lib/cxxproject/toolchain/gcc_lint.rb +0 -21
  89. data/lib/cxxproject/toolchain/gcc_param.rb +0 -7
  90. data/lib/cxxproject/toolchain/greenhills.rb +0 -51
  91. data/lib/cxxproject/toolchain/keil.rb +0 -52
  92. data/lib/cxxproject/utils/valgrind.rb +0 -11
@@ -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,218 +1,259 @@
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
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
+
16
+ require 'rubygems'
17
+
18
+ module Cxxproject
19
+
20
+ # context in which plugins are evaluated
21
+ # a cxx_plugin is a gem that:
22
+ # - follows the naming convention cxxplugin_name
23
+ # - that has a plugin.rb file in lib and
24
+ # - that calls cxx_plugin
25
+ #
26
+ # the context contains
27
+ # - @cxxproject2rake
28
+ # - @building_blocks
29
+ # - @log
30
+ class PluginContext
31
+ def initialize(cxxproject2rake, building_blocks, log)
32
+ @cxxproject2rake = cxxproject2rake
33
+ @building_blocks = building_blocks
34
+ @log = log
35
+ end
36
+ def load_plugin(gem)
37
+ path = File.join(gem.full_gem_path, 'lib', 'plugin.rb')
38
+ content = File.read(path)
39
+ instance_eval(content)
40
+ end
41
+
42
+ # method for plugins to get the
43
+ # cxxproject2rake
44
+ # building_blocks
45
+ # log
46
+ def cxx_plugin(&blk)
47
+ blk.call(@cxxproject2rake, @building_blocks, @log)
48
+ end
49
+ end
50
+
51
+ class CxxProject2Rake
52
+ attr_accessor :base, :all_tasks
53
+ def load_cxx_plugins
54
+ prefix = 'cxxproject_'
55
+ gems_to_load = Gem::Specification.find_all do |gem|
56
+ gem.name.index(prefix)
57
+ end
58
+ gems_to_load.each do |gem|
59
+ context = PluginContext.new(self, ALL_BUILDING_BLOCKS, @log)
60
+ context.load_plugin(gem)
61
+ end
62
+ end
63
+
64
+ def initialize(projects, build_dir, toolchain, base='.')
65
+ @base = base
66
+ cd(@base, :verbose => false) do
67
+ @projects = projects.to_a
68
+ end
69
+ @build_dir = build_dir
70
+ @toolchain = toolchain
71
+ @rel_projects = @projects#.map { |p| File.join(@base, p) }
72
+
73
+ # TODO: this should be cleaned up somehow...
74
+ if Utils::OS.linux?
75
+ toolchain[:LINKER][:LIB_PREFIX_FLAGS] = "-Wl,--whole-archive"
76
+ toolchain[:LINKER][:LIB_POSTFIX_FLAGS] = "-Wl,--no-whole-archive"
77
+ end
78
+
79
+ Rake::application.deriveIncludes = true
80
+
81
+ initialize_logging
82
+ @all_tasks = instantiate_tasks
83
+
84
+ load_cxx_plugins
85
+
86
+ create_generic_tasks
87
+ create_console_colorization
88
+ create_multitask
89
+ create_bail_on_first_task
90
+ describe_clean_task
91
+ create_console_task
92
+ end
93
+
94
+ def create_console_task
95
+ require 'cxxproject/utils/console'
96
+ end
97
+
98
+ def initialize_logging
99
+ @log = Logger.new(STDOUT)
100
+ @log.formatter = proc { |severity, datetime, progname, msg|
101
+ "#{severity}: #{msg}\n"
102
+ }
103
+ # Logger loglevels: fatal, error, warn, info, debug
104
+ # Rake --verbose -> info
105
+ # Rake --trace -> debug
106
+ @log.level = Logger::ERROR
107
+ @log.level = Logger::INFO if RakeFileUtils.verbose == true
108
+ @log.level = Logger::DEBUG if Rake::application.options.trace
109
+ @log.debug "initializing for build_dir: \"#{@build_dir}\", base: \"#{@base}\""
110
+ end
111
+ def describe_clean_task
112
+ Rake::Task[:clean].add_description('clean')
113
+ end
114
+ def create_bail_on_first_task
115
+ desc 'set bail on first error'
116
+ task :bail_on_first_error do
117
+ Rake::Task.bail_on_first_error = true
118
+ end
119
+ end
120
+
121
+ def create_multitask
122
+ desc 'set parallelization of multitask'
123
+ task :multitask, :threads do |t, args|
124
+ arg = args.threads
125
+ if arg
126
+ Rake::application.max_parallel_tasks = arg.to_i
127
+ end
128
+ end
129
+ end
130
+
131
+ def create_console_colorization
132
+ # default is on
133
+ Cxxproject::ColorizingFormatter.enabled = true
134
+ desc 'Toggle colorization of console output (use true|t|yes|y|1|on for true ... everything else is false)'
135
+ task :toggle_colorize, :on_off do |t, args|
136
+ arg = args[:on_off] || 'false'
137
+ on_off = arg.match(/(true|t|yes|y|1|on)$/) != nil
138
+ Cxxproject::ColorizingFormatter.enabled = on_off
139
+ end
140
+ end
141
+
142
+ def create_generic_tasks
143
+ tasks = [:lib, :exe, :run]
144
+ tasks << nil
145
+ tasks.each { |i| create_filter_task_with_namespace(i) }
146
+ end
147
+
148
+ def create_filter_task_with_namespace(basename)
149
+ if basename
150
+ desc "invoke #{basename} with filter"
151
+ namespace basename do
152
+ create_filter_task("#{basename}:")
153
+ end
154
+ else
155
+ desc 'invoke with filter'
156
+ create_filter_task('')
157
+ end
158
+ end
159
+
160
+ def create_filter_task(basename)
161
+ task :filter, :filter do |t, args|
162
+ filter = ".*"
163
+ if args[:filter]
164
+ filter = "#{args[:filter]}"
165
+ end
166
+ filter = Regexp.new("#{basename}#{filter}")
167
+ Rake::Task.tasks.each do |to_check|
168
+ name = to_check.name
169
+ if ("#{basename}:filter" != name)
170
+ match = filter.match(name)
171
+ if match
172
+ to_check.invoke
173
+ end
174
+ end
175
+ end
176
+ end
177
+ end
178
+
179
+ def instantiate_tasks
180
+ check_for_project_configs
181
+
182
+ if @log.debug?
183
+ @log.debug "project_configs:"
184
+ @projects.each { |c| @log.debug " * #{c}" }
185
+ end
186
+ register_projects()
187
+ ALL_BUILDING_BLOCKS.values.each do |block|
188
+ prepare_block(block)
189
+ end
190
+ ALL_BUILDING_BLOCKS.values.inject([]) do |memo,block|
191
+ @log.debug "creating tasks for block: #{block.name}/taskname: #{block.get_task_name} (#{block})"
192
+ memo << block.convert_to_rake()
193
+ end
194
+ end
195
+
196
+ def check_for_project_configs
197
+ cd(@base, :verbose => false) do
198
+ @projects.each do |p|
199
+ abort "project config #{p} cannot be found!" unless File.exists?(p)
200
+ end
201
+ end
202
+ end
203
+
204
+ def prepare_block(block)
205
+ block.set_tcs(@toolchain) unless block.has_tcs?
206
+ block.set_output_dir(Dir.pwd + "/" + @build_dir)
207
+ block.complete_init()
208
+ end
209
+
210
+ def register_projects()
211
+ cd(@base,:verbose => false) do |b|
212
+ @projects.each_with_index do |project_file, i|
213
+ @log.debug "register project #{project_file}"
214
+ dirname = File.dirname(project_file)
215
+ @log.debug "dirname for project was: #{dirname}"
216
+ cd(dirname,:verbose => false) do | base_dir |
217
+ @log.debug "register project #{project_file} from within directory: #{Dir.pwd}"
218
+ eval_file(b, File.basename(project_file))
219
+ end
220
+ end
221
+ end
222
+ end
223
+ def eval_file(b, project_file)
224
+ loadContext = EvalContext.new
225
+ begin
226
+ loadContext.eval_project(File.read(File.basename(project_file)), project_file, Dir.pwd)
227
+ rescue Exception => e
228
+ puts "problems with #{File.join(b, project_file)} in dir: #{Dir.pwd}"
229
+ raise e
230
+ end
231
+ begin
232
+ loadContext.myblock.call()
233
+ rescue Exception => e
234
+ error_string = "error while evaluating \"#{Dir.pwd}/#{project_file}\""
235
+ puts error_string
236
+ raise e
237
+ end
238
+
239
+ loadContext.all_blocks.each do |block|
240
+ block.
241
+ set_project_dir(Dir.pwd).
242
+ set_config_files([Dir.pwd + "/" + project_file])
243
+ if block.respond_to?(:sources) && block.sources.instance_of?(Rake::FileList)
244
+ block.set_sources(block.sources.to_a)
245
+ end
246
+ end
247
+ end
248
+ def define_project_info_task
249
+ desc "shows your defined projects"
250
+ task :project_info do
251
+ p "ProjectBase: #{@base}"
252
+ ALL_BUILDING_BLOCKS.each_value do |bb|
253
+ pp bb
254
+ end
255
+ end
256
+ end
257
+
258
+ end
259
+ end
@@ -1,24 +1,20 @@
1
- require 'rake'
2
- require 'rake/clean'
3
- require 'cxxproject/ext/filelist'
4
- require 'fileutils'
5
-
6
- module Cxxproject
7
- module Utils
8
-
9
- def self.cleanup_rake()
10
- ALL_BUILDING_BLOCKS.clear
11
- Rake.application.clear
12
- Rake.application.idei.set_abort(false)
13
- CLEAN.pending_add.clear
14
- CLEAN.items.clear
15
- task :clean do
16
- CLEAN.each { |fn| FileUtils.rm_rf fn rescue nil }
17
- end
18
- task :clobber => [:clean] do
19
- CLOBBER.each { |fn| FileUtils.rm_rf fn rescue nil }
20
- end
21
- end
22
-
23
- end
24
- end
1
+ require 'rake'
2
+ require 'rake/clean'
3
+ require 'cxxproject/ext/filelist'
4
+
5
+ module Cxxproject
6
+ module Utils
7
+
8
+ def self.cleanup_rake()
9
+ ALL_BUILDING_BLOCKS.clear
10
+ Rake.application.clear
11
+ Rake.application.idei.set_abort(false)
12
+ CLEAN.pending_add.clear
13
+ CLEAN.items.clear
14
+ task :clean do
15
+ CLEAN.each { |fn| rm_r fn rescue nil }
16
+ end
17
+ end
18
+
19
+ end
20
+ end
@@ -1,6 +1,6 @@
1
- desc 'start a rake console'
2
- task :console do
3
- require 'irb'
4
- ARGV.clear
5
- IRB.start
6
- end
1
+ desc 'start a rake console'
2
+ task :console do
3
+ require 'irb'
4
+ ARGV.clear
5
+ IRB.start
6
+ end
@@ -1,40 +1,40 @@
1
- module Cxxproject
2
- class ExitHelperException < StandardError
3
- end
4
-
5
- class ExitHelper
6
- @@exit_code = 0
7
- @@exit_test = false
8
-
9
- def self.set_exit_code(val)
10
- @@exit_code = val
11
- end
12
-
13
- def self.exit_code()
14
- @@exit_code
15
- end
16
-
17
- def self.reset_exit_code()
18
- @@exit_code = 0
19
- end
20
-
21
- def self.enable_exit_test()
22
- @@exit_test = true
23
- end
24
-
25
- def self.disable_exit_test()
26
- @@exit_test = false
27
- end
28
-
29
- def self.exit(val)
30
- raise ExitHelperException.new if @@exit_test
31
- @@exit_code = val
32
- Kernel::exit
33
- end
34
-
35
- end
36
- end
37
-
38
- at_exit do
39
- exit(Cxxproject::ExitHelper.exit_code)
40
- end
1
+ module Cxxproject
2
+ class ExitHelperException < StandardError
3
+ end
4
+
5
+ class ExitHelper
6
+ @@exit_code = 0
7
+ @@exit_test = false
8
+
9
+ def self.set_exit_code(val)
10
+ @@exit_code = val
11
+ end
12
+
13
+ def self.exit_code()
14
+ @@exit_code
15
+ end
16
+
17
+ def self.reset_exit_code()
18
+ @@exit_code = 0
19
+ end
20
+
21
+ def self.enable_exit_test()
22
+ @@exit_test = true
23
+ end
24
+
25
+ def self.disable_exit_test()
26
+ @@exit_test = false
27
+ end
28
+
29
+ def self.exit(val)
30
+ raise ExitHelperException.new if @@exit_test
31
+ @@exit_code = val
32
+ Kernel::exit
33
+ end
34
+
35
+ end
36
+ end
37
+
38
+ at_exit do
39
+ exit(Cxxproject::ExitHelper.exit_code)
40
+ end