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,153 +1,153 @@
1
- require 'cxxproject/buildingblocks/building_block'
2
- require 'cxxproject/buildingblocks/has_libraries_mixin'
3
- require 'cxxproject/utils/printer'
4
- require 'cxxproject/utils/process'
5
-
6
- module Cxxproject
7
- class Makefile < BuildingBlock
8
- include HasLibraries
9
-
10
- def set_target(x)
11
- @target = x
12
- self
13
- end
14
-
15
- def set_flags(x)
16
- @flags = x
17
- self
18
- end
19
-
20
- def get_flags(x)
21
- @flags
22
- end
23
-
24
-
25
- def set_makefile(x)
26
- @makefile = x
27
- self
28
- end
29
-
30
- def set_path_to(hash)
31
- @path_to = hash
32
- self
33
- end
34
-
35
- def get_makefile
36
- @makefile
37
- end
38
-
39
- def get_target
40
- @target
41
- end
42
-
43
- def initialize(mfile, mtarget)
44
- @target = mtarget != "" ? mtarget : "all"
45
- @makefile = mfile
46
- @flags = ""
47
- @path_to = {}
48
- @num = Rake.application.makefile_number
49
- super(get_task_name)
50
- end
51
-
52
- def get_task_name()
53
- "makefile (#{@num}): " + get_makefile + (get_target ? ("_"+get_target) : "")
54
- end
55
-
56
- def calc_pathes_to_projects
57
- vars = []
58
- @path_to.each do |k,v|
59
- bb = ALL_BUILDING_BLOCKS[p]
60
- if bb
61
- pref = File.rel_from_to_project(@project_dir,bb.project_dir)
62
- rex = Regexp.new "\\.\\.\\/(.*)#{p}"
63
- var = pref.scan(rex)[0]
64
- if var
65
- vars << "PATH_TO_#{p}=#{var[0]}"
66
- end
67
- else
68
- vars << "PATH_TO_#{k}=#{v}"
69
- end
70
- end
71
- vars.join(" ")
72
- end
73
-
74
- def executeCmd(cmd)
75
- Dir.chdir(@project_dir) do
76
- check_config_file
77
- puts cmd + (RakeFileUtils.verbose ? "\n(executed in '#{@project_dir}')" : "")
78
- cmd_result = false
79
- begin
80
- cmd_result = ProcessHelper.spawnProcess(cmd + " 2>&1")
81
- rescue
82
- end
83
- if (cmd_result == false)
84
- if Rake.application.idei
85
- err_res = ErrorDesc.new
86
- err_res.file_name = @project_dir + "/" + get_makefile()
87
- err_res.line_number = 1
88
- err_res.severity = ErrorParser::SEVERITY_ERROR
89
- if get_target != ""
90
- err_res.message = "Target \"#{get_target}\" failed"
91
- else
92
- err_res.message = "Failed"
93
- end
94
- Rake.application.idei.set_errors([err_res])
95
- end
96
- Printer.printError "Error: command \"#{cmd}\" failed" + (RakeFileUtils.verbose ? "" : "\n(executed in '#{@project_dir}')")
97
- raise SystemCommandFailed.new
98
- end
99
- end
100
- end
101
-
102
- def convert_to_rake()
103
- pathes_to_projects = calc_pathes_to_projects
104
-
105
- mfile = get_makefile()
106
- make = @tcs[:MAKE]
107
- cmd = remove_empty_strings_and_join([
108
- make[:COMMAND], # make
109
- get_target, # all
110
- make[:MAKE_FLAGS],
111
- @flags, # -j
112
- make[:DIR_FLAG], # -C
113
- File.dirname(mfile), # x/y
114
- make[:FILE_FLAG], # -f
115
- File.basename(mfile), # x/y/makefile
116
- pathes_to_projects
117
- ])
118
-
119
- mfileTask = task get_task_name do
120
- executeCmd(cmd)
121
- end
122
-
123
- mfileTask.immediate_output = true
124
- mfileTask.transparent_timestamp = true
125
- mfileTask.type = Rake::Task::MAKE
126
- mfileTask.enhance(@config_files)
127
-
128
- create_clean_task(@project_dir+"/"+mfile, pathes_to_projects)
129
- setup_rake_dependencies(mfileTask)
130
- mfileTask
131
- end
132
-
133
- def create_clean_task(mfile, pathes_to_projects)
134
- # generate the clean task
135
- if not Rake.application["clean"].prerequisites.include?(mfile+"Clean")
136
- cmd = remove_empty_strings_and_join([@tcs[:MAKE][:COMMAND], # make
137
- @tcs[:MAKE][:CLEAN], # clean
138
- @tcs[:MAKE][:DIR_FLAG], # -C
139
- File.dirname(mfile), # x/y
140
- @tcs[:MAKE][:FILE_FLAG], # -f
141
- File.basename(mfile), # x/y/makefile
142
- pathes_to_projects
143
- ])
144
- mfileCleanTask = task mfile+"Clean" do
145
- executeCmd(cmd)
146
- end
147
- mfileCleanTask.immediate_output = true
148
- Rake.application["clean"].enhance([mfileCleanTask])
149
- end
150
- end
151
-
152
- end
153
- end
1
+ require 'cxxproject/buildingblocks/building_block'
2
+ require 'cxxproject/buildingblocks/has_libraries_mixin'
3
+ require 'cxxproject/utils/printer'
4
+ require 'cxxproject/utils/process'
5
+
6
+ module Cxxproject
7
+ class Makefile < BuildingBlock
8
+ include HasLibraries
9
+
10
+ def set_target(x)
11
+ @target = x
12
+ self
13
+ end
14
+
15
+ def set_flags(x)
16
+ @flags = x
17
+ self
18
+ end
19
+
20
+ def get_flags(x)
21
+ @flags
22
+ end
23
+
24
+
25
+ def set_makefile(x)
26
+ @makefile = x
27
+ self
28
+ end
29
+
30
+ def set_path_to(hash)
31
+ @path_to = hash
32
+ self
33
+ end
34
+
35
+ def get_makefile
36
+ @makefile
37
+ end
38
+
39
+ def get_target
40
+ @target
41
+ end
42
+
43
+ def initialize(mfile, mtarget)
44
+ @target = mtarget != "" ? mtarget : "all"
45
+ @makefile = mfile
46
+ @flags = ""
47
+ @path_to = {}
48
+ @num = Rake.application.makefile_number
49
+ super(get_task_name)
50
+ end
51
+
52
+ def get_task_name()
53
+ "makefile (#{@num}): " + get_makefile + (get_target ? ("_"+get_target) : "")
54
+ end
55
+
56
+ def calc_pathes_to_projects
57
+ vars = []
58
+ @path_to.each do |k,v|
59
+ bb = ALL_BUILDING_BLOCKS[p]
60
+ if bb
61
+ pref = File.rel_from_to_project(@project_dir,bb.project_dir)
62
+ rex = Regexp.new "\\.\\.\\/(.*)#{p}"
63
+ var = pref.scan(rex)[0]
64
+ if var
65
+ vars << "PATH_TO_#{p}=#{var[0]}"
66
+ end
67
+ else
68
+ vars << "PATH_TO_#{k}=#{v}"
69
+ end
70
+ end
71
+ vars.join(" ")
72
+ end
73
+
74
+ def executeCmd(cmd)
75
+ Dir.chdir(@project_dir) do
76
+ check_config_file
77
+ puts cmd + (RakeFileUtils.verbose ? " (executed in '#{@project_dir}')" : "")
78
+ cmd_result = false
79
+ begin
80
+ cmd_result = ProcessHelper.spawnProcess(cmd + " 2>&1")
81
+ rescue
82
+ end
83
+ if (cmd_result == false)
84
+ if Rake.application.idei
85
+ err_res = ErrorDesc.new
86
+ err_res.file_name = @project_dir + "/" + get_makefile()
87
+ err_res.line_number = 1
88
+ err_res.severity = ErrorParser::SEVERITY_ERROR
89
+ if get_target != ""
90
+ err_res.message = "Target \"#{get_target}\" failed"
91
+ else
92
+ err_res.message = "Failed"
93
+ end
94
+ Rake.application.idei.set_errors([err_res])
95
+ end
96
+ Printer.printError "Error: command \"#{cmd}\" failed" + (RakeFileUtils.verbose ? "" : " (executed in '#{@project_dir}')")
97
+ raise SystemCommandFailed.new
98
+ end
99
+ end
100
+ end
101
+
102
+ def convert_to_rake()
103
+ pathes_to_projects = calc_pathes_to_projects
104
+
105
+ mfile = get_makefile()
106
+ make = @tcs[:MAKE]
107
+ cmd = remove_empty_strings_and_join([
108
+ make[:COMMAND], # make
109
+ get_target, # all
110
+ make[:MAKE_FLAGS],
111
+ @flags, # -j
112
+ make[:DIR_FLAG], # -C
113
+ File.dirname(mfile), # x/y
114
+ make[:FILE_FLAG], # -f
115
+ File.basename(mfile), # x/y/makefile
116
+ pathes_to_projects
117
+ ])
118
+
119
+ mfileTask = task get_task_name do
120
+ executeCmd(cmd)
121
+ end
122
+
123
+ mfileTask.immediate_output = true
124
+ mfileTask.transparent_timestamp = true
125
+ mfileTask.type = Rake::Task::MAKE
126
+ mfileTask.enhance(@config_files)
127
+
128
+ create_clean_task(@project_dir+"/"+mfile, pathes_to_projects)
129
+ setup_rake_dependencies(mfileTask)
130
+ mfileTask
131
+ end
132
+
133
+ def create_clean_task(mfile, pathes_to_projects)
134
+ # generate the clean task
135
+ if not Rake.application["clean"].prerequisites.include?(mfile+"Clean")
136
+ cmd = remove_empty_strings_and_join([@tcs[:MAKE][:COMMAND], # make
137
+ @tcs[:MAKE][:CLEAN], # clean
138
+ @tcs[:MAKE][:DIR_FLAG], # -C
139
+ File.dirname(mfile), # x/y
140
+ @tcs[:MAKE][:FILE_FLAG], # -f
141
+ File.basename(mfile), # x/y/makefile
142
+ pathes_to_projects
143
+ ])
144
+ mfileCleanTask = task mfile+"Clean" do
145
+ executeCmd(cmd)
146
+ end
147
+ mfileCleanTask.immediate_output = true
148
+ Rake.application["clean"].enhance([mfileCleanTask])
149
+ end
150
+ end
151
+
152
+ end
153
+ end
@@ -1,35 +1,35 @@
1
- require 'cxxproject/buildingblocks/building_block'
2
- require 'cxxproject/buildingblocks/has_libraries_mixin'
3
- require 'cxxproject/buildingblocks/has_sources_mixin'
4
- require 'cxxproject/buildingblocks/has_includes_mixin'
5
-
6
-
7
- # can be used as wrapper for other tasks
8
- module Cxxproject
9
- class ModuleBuildingBlock < BuildingBlock
10
-
11
- attr_accessor :contents
12
- attr_accessor :main_content
13
- attr_accessor :last_content
14
-
15
- def initialize(name)
16
- super
17
- @contents = []
18
- @last_content = self
19
- @main_content = nil
20
- end
21
-
22
- def get_task_name()
23
- name
24
- end
25
-
26
- def convert_to_rake()
27
- res = task get_task_name
28
- res.type = Rake::Task::MODULE
29
- res.transparent_timestamp = true
30
-
31
- setup_rake_dependencies(res)
32
- res
33
- end
34
- end
35
- end
1
+ require 'cxxproject/buildingblocks/building_block'
2
+ require 'cxxproject/buildingblocks/has_libraries_mixin'
3
+ require 'cxxproject/buildingblocks/has_sources_mixin'
4
+ require 'cxxproject/buildingblocks/has_includes_mixin'
5
+
6
+
7
+ # can be used as wrapper for other tasks
8
+ module Cxxproject
9
+ class ModuleBuildingBlock < BuildingBlock
10
+
11
+ attr_accessor :contents
12
+ attr_accessor :main_content
13
+ attr_accessor :last_content
14
+
15
+ def initialize(name)
16
+ super
17
+ @contents = []
18
+ @last_content = self
19
+ @main_content = nil
20
+ end
21
+
22
+ def get_task_name()
23
+ name
24
+ end
25
+
26
+ def convert_to_rake()
27
+ res = task get_task_name
28
+ res.type = Rake::Task::MODULE
29
+ res.transparent_timestamp = true
30
+
31
+ setup_rake_dependencies(res)
32
+ res
33
+ end
34
+ end
35
+ end
@@ -1,33 +1,33 @@
1
- require 'cxxproject/buildingblocks/building_block'
2
- require 'cxxproject/buildingblocks/has_sources_mixin'
3
- require 'cxxproject/buildingblocks/has_includes_mixin'
4
-
5
- module Cxxproject
6
- module SingleSourceModule
7
- def get_task_name()
8
- get_sources_task_name
9
- end
10
-
11
- def convert_to_rake()
12
- objects_multitask = prepare_tasks_for_objects()
13
-
14
- if objects_multitask
15
- namespace "compile" do
16
- desc "compile sources in #{@name}-configuration"
17
- task @name => objects_multitask
18
- end
19
- objects_multitask.add_description("compile sources only")
20
- end
21
-
22
- setup_rake_dependencies(objects_multitask)
23
- objects_multitask
24
- end
25
- end
26
-
27
- class SingleSource < BuildingBlock
28
- include HasSources
29
- include HasIncludes
30
-
31
- include SingleSourceModule
32
- end
33
- end
1
+ require 'cxxproject/buildingblocks/building_block'
2
+ require 'cxxproject/buildingblocks/has_sources_mixin'
3
+ require 'cxxproject/buildingblocks/has_includes_mixin'
4
+
5
+ module Cxxproject
6
+ module SingleSourceModule
7
+ def get_task_name()
8
+ get_sources_task_name
9
+ end
10
+
11
+ def convert_to_rake()
12
+ objects_multitask = prepare_tasks_for_objects()
13
+
14
+ if objects_multitask
15
+ namespace "compile" do
16
+ desc "compile sources in #{@name}-configuration"
17
+ task @name => objects_multitask
18
+ end
19
+ objects_multitask.add_description("compile sources only")
20
+ end
21
+
22
+ setup_rake_dependencies(objects_multitask)
23
+ objects_multitask
24
+ end
25
+ end
26
+
27
+ class SingleSource < BuildingBlock
28
+ include HasSources
29
+ include HasIncludes
30
+
31
+ include SingleSourceModule
32
+ end
33
+ end