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