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.
- data/Rakefile.rb +116 -116
- data/bin/cxx +10 -10
- data/lib/cxxproject.rb +23 -23
- data/lib/cxxproject/buildingblocks/binary_library.rb +39 -39
- data/lib/cxxproject/buildingblocks/building_block.rb +251 -239
- data/lib/cxxproject/buildingblocks/command_line.rb +79 -79
- data/lib/cxxproject/buildingblocks/custom_building_block.rb +39 -41
- data/lib/cxxproject/buildingblocks/executable.rb +257 -249
- data/lib/cxxproject/buildingblocks/has_dependencies_mixin.rb +83 -83
- data/lib/cxxproject/buildingblocks/has_includes_mixin.rb +20 -20
- data/lib/cxxproject/buildingblocks/has_libraries_mixin.rb +34 -34
- data/lib/cxxproject/buildingblocks/has_sources_mixin.rb +371 -364
- data/lib/cxxproject/buildingblocks/makefile.rb +153 -153
- data/lib/cxxproject/buildingblocks/module.rb +35 -35
- data/lib/cxxproject/buildingblocks/single_source.rb +33 -33
- data/lib/cxxproject/buildingblocks/source_library.rb +124 -124
- data/lib/cxxproject/errorparser/diab_compiler_error_parser.rb +40 -40
- data/lib/cxxproject/errorparser/diab_linker_error_parser.rb +41 -33
- data/lib/cxxproject/errorparser/error_parser.rb +50 -50
- data/lib/cxxproject/errorparser/gcc_compiler_error_parser.rb +35 -30
- data/lib/cxxproject/errorparser/gcc_linker_error_parser.rb +35 -29
- data/lib/cxxproject/errorparser/ti_compiler_error_parser.rb +30 -30
- data/lib/cxxproject/errorparser/ti_linker_error_parser.rb +30 -29
- data/lib/cxxproject/eval_context.rb +144 -136
- data/lib/cxxproject/ext/file.rb +71 -71
- data/lib/cxxproject/ext/filelist.rb +6 -6
- data/lib/cxxproject/ext/progressbar.rb +20 -20
- data/lib/cxxproject/ext/rake.rb +419 -397
- data/lib/cxxproject/ext/rake_dirty.rb +30 -30
- data/lib/cxxproject/ext/rake_listener.rb +59 -59
- data/lib/cxxproject/ext/stdout.rb +44 -44
- data/lib/cxxproject/ext/string.rb +9 -9
- data/lib/cxxproject/ide_interface.rb +187 -181
- data/lib/cxxproject/toolchain/clang.rb +39 -39
- data/lib/cxxproject/toolchain/colorizing_formatter.rb +99 -99
- data/lib/cxxproject/toolchain/diab.rb +3 -1
- data/lib/cxxproject/toolchain/gcc.rb +2 -1
- data/lib/cxxproject/toolchain/provider.rb +131 -128
- data/lib/cxxproject/toolchain/toolchain.rb +38 -38
- data/lib/cxxproject/toolchain/toolchain_benchmark.rb +23 -23
- data/lib/cxxproject/torake.rb +218 -216
- data/lib/cxxproject/utils/cleanup.rb +20 -20
- data/lib/cxxproject/utils/console.rb +6 -6
- data/lib/cxxproject/utils/exit_helper.rb +40 -40
- data/lib/cxxproject/utils/graphstream.rb +154 -154
- data/lib/cxxproject/utils/optional.rb +16 -16
- data/lib/cxxproject/utils/printer.rb +50 -50
- data/lib/cxxproject/utils/process.rb +52 -52
- data/lib/cxxproject/utils/progress.rb +66 -66
- data/lib/cxxproject/utils/progress_helper.rb +77 -77
- data/lib/cxxproject/utils/rbcurse.rb +284 -284
- data/lib/cxxproject/utils/rbcurse_executable_ext.rb +14 -14
- data/lib/cxxproject/utils/rbcurse_progress.rb +71 -71
- data/lib/cxxproject/utils/rbcurse_tasktable.rb +51 -51
- data/lib/cxxproject/utils/stats.rb +60 -60
- data/lib/cxxproject/utils/ubigraph.rb +228 -228
- data/lib/cxxproject/utils/utils.rb +60 -37
- data/lib/cxxproject/utils/valgrind.rb +11 -11
- data/lib/cxxproject/version.rb +7 -7
- data/lib/tools/Rakefile.rb.template +10 -10
- data/lib/tools/project.rb.template +6 -6
- data/lib/tools/project_wizard.rb +66 -66
- data/spec/building_block_spec.rb +56 -56
- data/spec/cxxproject_2_rake_spec.rb +186 -186
- data/spec/file_ext_spec.rb +30 -30
- data/spec/ide_interface_spec.rb +41 -41
- data/spec/object_dependency_spec.rb +83 -83
- data/spec/project_path_spec.rb +71 -71
- data/spec/rake_listener_ext_spec.rb +58 -58
- data/spec/spec_helper.rb +18 -18
- data/spec/string_spec.rb +11 -11
- data/spec/testdata/basic/exe12/project.rb +5 -5
- data/spec/testdata/basic/lib1/project.rb +5 -5
- data/spec/testdata/basic/lib2/project.rb +8 -8
- data/spec/testdata/multiple_levels/libs/lib1/project.rb +5 -5
- data/spec/testdata/multiple_levels/libs/lib2/project.rb +19 -19
- data/spec/testdata/multiple_levels/mainproject/basic/project.rb +8 -8
- data/spec/testdata/onlyOneHeader/Rakefile.rb +4 -4
- data/spec/testdata/onlyOneHeader/project.rb +4 -4
- data/spec/toolchain_spec.rb +29 -29
- 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
|