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,20 +1,20 @@
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
+ 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
@@ -1,154 +1,154 @@
1
- module Cxxproject
2
- module Utils
3
- define_graphstream = lambda do
4
- require 'socket'
5
- require 'thread'
6
-
7
- class GraphStream
8
- def initialize
9
- begin
10
- @server = TCPSocket.open('localhost', 31217)
11
- @queue = Queue.new
12
- Thread.new do
13
- while true
14
- command = @queue.pop
15
- @server.puts(command)
16
- end
17
- end
18
- rescue Exception => bang
19
- puts bang
20
- end
21
- end
22
- def send(command)
23
- @queue << command
24
- end
25
-
26
- def clear
27
- send('Clear()')
28
- end
29
-
30
- def set_stylesheet(s)
31
- send("SetStylesheet(#{s})")
32
- end
33
- def add_vertex(id)
34
- send("AddVertex(#{id})")
35
- end
36
- def add_edge(from, to)
37
- send("AddEdge(#{from},#{to})")
38
- end
39
- def set_class(id, clazz)
40
- send("SetClass(#{id},#{clazz})")
41
- end
42
- end
43
-
44
- class GraphStreamSupport
45
-
46
- def object?(name)
47
- name.match(/.*\.o\Z/) != nil
48
- end
49
-
50
- def exe?(name)
51
- name.match(/.*\.exe\Z/) != nil
52
- end
53
- def library?(name)
54
- name.match(/.*\.a\Z/) != nil
55
- end
56
- def multitask?(name)
57
- name.index("Objects of") == 0
58
- end
59
- def interesting?(name)
60
- exe?(name) || object?(name) || library?(name) || multitask?(name)
61
- end
62
-
63
- def initialize(gs)
64
- @gs = gs
65
-
66
- @interesting_tasks = Rake::Task.tasks.select { |i| interesting?(i.name) }
67
- create_vertices
68
- create_edges
69
-
70
- @vertices.each do |name, task|
71
- set_attributes(name, task)
72
- end
73
-
74
- end
75
-
76
- def create_vertices
77
- @vertices = {}
78
- @interesting_tasks.each do |task|
79
- @vertices[task.name] = task
80
- @gs.add_vertex(task.name)
81
- end
82
- end
83
-
84
- def create_edges
85
- @interesting_tasks.each do |task|
86
- from = task.name
87
- task.prerequisites.each do |to|
88
- @gs.add_edge(from, to)
89
- end
90
- end
91
- end
92
-
93
- def set_attributes(name, task)
94
- @gs.set_class(name, state2color(task))
95
- end
96
-
97
- def state2color(t)
98
- begin
99
- if t.dirty?
100
- return 'dirty'
101
- else
102
- return 'ready'
103
- end
104
- rescue StandardError => bang
105
- puts bang
106
- return '#ff00ff'
107
- end
108
- end
109
-
110
- def update(name, color)
111
- @gs.set_class(name, color)
112
- end
113
-
114
- def before_prerequisites(name)
115
- update(name, 'before_prerequisites')
116
- end
117
-
118
- def after_prerequisites(name)
119
- update(name, 'after_prerequisites')
120
- end
121
-
122
- def before_execute(name)
123
- update(name, 'before_execute')
124
- end
125
-
126
- def after_execute(name)
127
- update(name, 'after_execute')
128
- end
129
- end
130
-
131
- namespace :graphstream do
132
- gs = nil
133
- task :init do
134
- gs = GraphStream.new
135
- end
136
-
137
- desc 'clear graphstream'
138
- task :clear => :init do
139
- gs.clear
140
- end
141
-
142
- desc 'update graphstream'
143
- task :update => :init do
144
- gs.set_stylesheet('node {fill-color:green;}node.dirty{fill-color:red;}node.before_prerequisites{fill-color:yellow;}node.after_prerequisites{fill-color:orange;}node.before_execute{fill-color:blue;}node.after_execute{fill-color:green;}node.ready{fill-color:yellow;}')
145
- require 'cxxproject/ext/rake_listener'
146
- require 'cxxproject/ext/rake_dirty'
147
- Rake::add_listener(GraphStreamSupport.new(gs))
148
- end
149
- end
150
- end
151
-
152
- optional_package(define_graphstream, nil)
153
- end
154
- end
1
+ module Cxxproject
2
+ module Utils
3
+ define_graphstream = lambda do
4
+ require 'socket'
5
+ require 'thread'
6
+
7
+ class GraphStream
8
+ def initialize
9
+ begin
10
+ @server = TCPSocket.open('localhost', 31217)
11
+ @queue = Queue.new
12
+ Thread.new do
13
+ while true
14
+ command = @queue.pop
15
+ @server.puts(command)
16
+ end
17
+ end
18
+ rescue Exception => bang
19
+ puts bang
20
+ end
21
+ end
22
+ def send(command)
23
+ @queue << command
24
+ end
25
+
26
+ def clear
27
+ send('Clear()')
28
+ end
29
+
30
+ def set_stylesheet(s)
31
+ send("SetStylesheet(#{s})")
32
+ end
33
+ def add_vertex(id)
34
+ send("AddVertex(#{id})")
35
+ end
36
+ def add_edge(from, to)
37
+ send("AddEdge(#{from},#{to})")
38
+ end
39
+ def set_class(id, clazz)
40
+ send("SetClass(#{id},#{clazz})")
41
+ end
42
+ end
43
+
44
+ class GraphStreamSupport
45
+
46
+ def object?(name)
47
+ name.match(/.*\.o\Z/) != nil
48
+ end
49
+
50
+ def exe?(name)
51
+ name.match(/.*\.exe\Z/) != nil
52
+ end
53
+ def library?(name)
54
+ name.match(/.*\.a\Z/) != nil
55
+ end
56
+ def multitask?(name)
57
+ name.index("Objects of") == 0
58
+ end
59
+ def interesting?(name)
60
+ exe?(name) || object?(name) || library?(name) || multitask?(name)
61
+ end
62
+
63
+ def initialize(gs)
64
+ @gs = gs
65
+
66
+ @interesting_tasks = Rake::Task.tasks.select { |i| interesting?(i.name) }
67
+ create_vertices
68
+ create_edges
69
+
70
+ @vertices.each do |name, task|
71
+ set_attributes(name, task)
72
+ end
73
+
74
+ end
75
+
76
+ def create_vertices
77
+ @vertices = {}
78
+ @interesting_tasks.each do |task|
79
+ @vertices[task.name] = task
80
+ @gs.add_vertex(task.name)
81
+ end
82
+ end
83
+
84
+ def create_edges
85
+ @interesting_tasks.each do |task|
86
+ from = task.name
87
+ task.prerequisites.each do |to|
88
+ @gs.add_edge(from, to)
89
+ end
90
+ end
91
+ end
92
+
93
+ def set_attributes(name, task)
94
+ @gs.set_class(name, state2color(task))
95
+ end
96
+
97
+ def state2color(t)
98
+ begin
99
+ if t.dirty?
100
+ return 'dirty'
101
+ else
102
+ return 'ready'
103
+ end
104
+ rescue StandardError => bang
105
+ puts bang
106
+ return '#ff00ff'
107
+ end
108
+ end
109
+
110
+ def update(name, color)
111
+ @gs.set_class(name, color)
112
+ end
113
+
114
+ def before_prerequisites(name)
115
+ update(name, 'before_prerequisites')
116
+ end
117
+
118
+ def after_prerequisites(name)
119
+ update(name, 'after_prerequisites')
120
+ end
121
+
122
+ def before_execute(name)
123
+ update(name, 'before_execute')
124
+ end
125
+
126
+ def after_execute(name)
127
+ update(name, 'after_execute')
128
+ end
129
+ end
130
+
131
+ namespace :graphstream do
132
+ gs = nil
133
+ task :init do
134
+ gs = GraphStream.new
135
+ end
136
+
137
+ desc 'clear graphstream'
138
+ task :clear => :init do
139
+ gs.clear
140
+ end
141
+
142
+ desc 'update graphstream'
143
+ task :update => :init do
144
+ gs.set_stylesheet('node {fill-color:green;}node.dirty{fill-color:red;}node.before_prerequisites{fill-color:yellow;}node.after_prerequisites{fill-color:orange;}node.before_execute{fill-color:blue;}node.after_execute{fill-color:green;}node.ready{fill-color:yellow;}')
145
+ require 'cxxproject/ext/rake_listener'
146
+ require 'cxxproject/ext/rake_dirty'
147
+ Rake::add_listener(GraphStreamSupport.new(gs))
148
+ end
149
+ end
150
+ end
151
+
152
+ optional_package(define_graphstream, nil)
153
+ end
154
+ end
@@ -1,16 +1,16 @@
1
- require 'rake'
2
-
3
- module Cxxproject
4
- module Utils
5
- def self.optional_package(block1, block2)
6
- begin
7
- block1.call
8
- rescue LoadError => e
9
- if RakeFileUtils.verbose == true
10
- puts e
11
- end
12
- block2.call if block2
13
- end
14
- end
15
- end
16
- end
1
+ require 'rake'
2
+
3
+ module Cxxproject
4
+ module Utils
5
+ def self.optional_package(block1, block2)
6
+ begin
7
+ block1.call
8
+ rescue LoadError => e
9
+ if RakeFileUtils.verbose == true
10
+ puts e
11
+ end
12
+ block2.call if block2
13
+ end
14
+ end
15
+ end
16
+ end