ritsu 0.7.0 → 0.7.1

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 (89) hide show
  1. data/README.md +95 -95
  2. data/bin/define_cpp_string +54 -54
  3. data/bin/ritsu +31 -31
  4. data/lib/ritsu.rb +16 -16
  5. data/lib/ritsu/block.rb +258 -258
  6. data/lib/ritsu/ext/cuda.rb +5 -5
  7. data/lib/ritsu/ext/cuda/external_library.rb +15 -15
  8. data/lib/ritsu/ext/cuda/project.rb +31 -31
  9. data/lib/ritsu/ext/cuda/src_files/cu_file.rb +46 -46
  10. data/lib/ritsu/ext/cuda/src_files/target_cmake_lists.rb +110 -110
  11. data/lib/ritsu/ext/cuda/target.rb +16 -16
  12. data/lib/ritsu/ext/cuda/targets/library.rb +16 -16
  13. data/lib/ritsu/ext/fake_install.rb +2 -2
  14. data/lib/ritsu/ext/fake_install/project.rb +16 -16
  15. data/lib/ritsu/ext/fake_install/src_files/project_cmake_lists.rb +45 -45
  16. data/lib/ritsu/ext/glsl.rb +1 -1
  17. data/lib/ritsu/ext/glsl/src_files/frag_file.rb +70 -70
  18. data/lib/ritsu/ext/glsl/src_files/vert_file.rb +70 -70
  19. data/lib/ritsu/ext/qt.rb +4 -4
  20. data/lib/ritsu/ext/qt/project.rb +47 -47
  21. data/lib/ritsu/ext/qt/src_files/header_file.rb +60 -60
  22. data/lib/ritsu/ext/qt/src_files/target_cmake_lists.rb +106 -106
  23. data/lib/ritsu/ext/qt/src_files/ui_file.rb +46 -46
  24. data/lib/ritsu/ext/test_case.rb +19 -19
  25. data/lib/ritsu/external_library.rb +46 -46
  26. data/lib/ritsu/project.rb +93 -93
  27. data/lib/ritsu/project_generator.rb +33 -33
  28. data/lib/ritsu/project_generators/default_generator.rb +72 -72
  29. data/lib/ritsu/project_generators/default_generator_files/Thorfile.erb +8 -8
  30. data/lib/ritsu/project_generators/default_generator_files/meta/project.rb.erb +10 -10
  31. data/lib/ritsu/src_file.rb +79 -79
  32. data/lib/ritsu/src_files.rb +12 -12
  33. data/lib/ritsu/src_files/cpp_file.rb +43 -43
  34. data/lib/ritsu/src_files/executable_cmake_lists.rb +39 -39
  35. data/lib/ritsu/src_files/header_file.rb +60 -60
  36. data/lib/ritsu/src_files/project_cmake_lists.rb +133 -133
  37. data/lib/ritsu/src_files/project_config_header_file.rb +14 -14
  38. data/lib/ritsu/src_files/project_config_header_template_file.rb +44 -44
  39. data/lib/ritsu/src_files/shared_library_cmake_lists.rb +39 -39
  40. data/lib/ritsu/src_files/static_library_cmake_lists.rb +39 -39
  41. data/lib/ritsu/src_files/target_cmake_lists.rb +189 -189
  42. data/lib/ritsu/src_files/templated_src_file.rb +47 -47
  43. data/lib/ritsu/src_files/unit.rb +32 -32
  44. data/lib/ritsu/target.rb +154 -154
  45. data/lib/ritsu/targets.rb +3 -3
  46. data/lib/ritsu/targets/executable.rb +44 -44
  47. data/lib/ritsu/targets/library.rb +29 -29
  48. data/lib/ritsu/targets/shared_library.rb +38 -38
  49. data/lib/ritsu/targets/static_library.rb +32 -32
  50. data/lib/ritsu/template.rb +68 -68
  51. data/lib/ritsu/template_policies.rb +132 -132
  52. data/lib/ritsu/test_helpers.rb +123 -123
  53. data/lib/ritsu/thors/default_thor.rb +1 -1
  54. data/lib/ritsu/utility.rb +7 -7
  55. data/lib/ritsu/utility/accessors.rb +29 -29
  56. data/lib/ritsu/utility/check_upon_add_set.rb +34 -34
  57. data/lib/ritsu/utility/file_robot.rb +128 -128
  58. data/lib/ritsu/utility/files.rb +12 -12
  59. data/lib/ritsu/utility/instance_dependencies.rb +112 -112
  60. data/lib/ritsu/utility/instance_set.rb +28 -28
  61. data/lib/ritsu/utility/platform.rb +20 -20
  62. data/lib/ritsu/utility/simple_io.rb +64 -64
  63. data/lib/ritsu/utility/single_instance.rb +33 -33
  64. data/lib/ritsu/utility/strings.rb +40 -40
  65. data/test/ritsu/block_test.rb +196 -196
  66. data/test/ritsu/ext/cuda/src_files/cuda_static_library_cmake_lists_test.rb +63 -63
  67. data/test/ritsu/external_library_test.rb +41 -41
  68. data/test/ritsu/project_generators/default_generator_test.rb +34 -34
  69. data/test/ritsu/project_test.rb +127 -127
  70. data/test/ritsu/src_file_test.rb +69 -69
  71. data/test/ritsu/src_files/cpp_file_test.rb +42 -42
  72. data/test/ritsu/src_files/executable_cmake_lists_test.rb +92 -92
  73. data/test/ritsu/src_files/header_file_test.rb +57 -57
  74. data/test/ritsu/src_files/project_cmake_lists_test.rb +159 -159
  75. data/test/ritsu/src_files/shared_library_cmake_lists_test.rb +54 -54
  76. data/test/ritsu/src_files/static_library_cmake_lists_test.rb +54 -54
  77. data/test/ritsu/src_files/target_cmake_lists_test.rb +15 -15
  78. data/test/ritsu/target_test.rb +105 -105
  79. data/test/ritsu/targets/executable_test.rb +10 -10
  80. data/test/ritsu/targets/shared_library_test.rb +10 -10
  81. data/test/ritsu/targets/static_library_test.rb +10 -10
  82. data/test/ritsu/utility/accessors_test.rb +14 -14
  83. data/test/ritsu/utility/check_upon_add_set_test.rb +31 -31
  84. data/test/ritsu/utility/file_robot_test.rb +175 -175
  85. data/test/ritsu/utility/strings_test.rb +28 -28
  86. data/test/test_helpers.rb +3 -3
  87. metadata +72 -124
  88. data/Thorfile +0 -104
  89. data/VERSION +0 -1
@@ -1,6 +1,6 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/cuda/src_files/cu_file")
2
- require File.expand_path(File.dirname(__FILE__) + "/cuda/src_files/target_cmake_lists")
3
- require File.expand_path(File.dirname(__FILE__) + "/cuda/project")
4
- require File.expand_path(File.dirname(__FILE__) + "/cuda/external_library.rb")
5
- require File.expand_path(File.dirname(__FILE__) + "/cuda/targets/library.rb")
1
+ require File.expand_path(File.dirname(__FILE__) + "/cuda/src_files/cu_file")
2
+ require File.expand_path(File.dirname(__FILE__) + "/cuda/src_files/target_cmake_lists")
3
+ require File.expand_path(File.dirname(__FILE__) + "/cuda/project")
4
+ require File.expand_path(File.dirname(__FILE__) + "/cuda/external_library.rb")
5
+ require File.expand_path(File.dirname(__FILE__) + "/cuda/targets/library.rb")
6
6
  require File.expand_path(File.dirname(__FILE__) + "/cuda/target.rb")
@@ -1,16 +1,16 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../external_library.rb')
2
-
3
- module Ritsu
4
- class ExternalLibrary
5
- attr_accessor :cuda_depend_script
6
- attr_method :cuda_depend_script
7
-
8
- alias_method :initialize_before_cuda, :initialize
9
-
10
- def initialize(name, options={})
11
- options = {:cuda_depend_script => ''}.merge(options)
12
- initialize_before_cuda(name, options)
13
- @cuda_depend_script = options[:cuda_depend_script]
14
- end
15
- end
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../external_library.rb')
2
+
3
+ module Ritsu
4
+ class ExternalLibrary
5
+ attr_accessor :cuda_depend_script
6
+ attr_method :cuda_depend_script
7
+
8
+ alias_method :initialize_before_cuda, :initialize
9
+
10
+ def initialize(name, options={})
11
+ options = {:cuda_depend_script => ''}.merge(options)
12
+ initialize_before_cuda(name, options)
13
+ @cuda_depend_script = options[:cuda_depend_script]
14
+ end
15
+ end
16
16
  end
@@ -1,32 +1,32 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../project")
2
-
3
- module Ritsu
4
- class Project
5
- def setup_cuda
6
- add_external_library("cuda") do |e|
7
- e.cmake_find_script "FIND_PACKAGE(CUDA REQUIRED)"
8
- e.cmake_depend_script "INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS})"
9
- e.cuda_depend_script "CUDA_INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS})"
10
- e.cmake_name "${CUDA_LIBRARIES}"
11
- end
12
- end
13
-
14
- def add_cuda_executable(name)
15
- executable = Ritsu::Targets::Executable.new(name, :project=>self, :cuda_target=>true)
16
- executable.add_external_library "cuda"
17
- yield executable if block_given?
18
- end
19
-
20
- def add_cuda_shared_library(name)
21
- shared_library = Ritsu::Targets::SharedLibrary.new(name, :project=>self, :cuda_target=>true)
22
- shared_library.add_external_library "cuda"
23
- yield shared_library if block_given?
24
- end
25
-
26
- def add_cuda_static_library(name)
27
- static_library = Ritsu::Targets::StaticLibrary.new(name, :project=>self, :cuda_target=>true)
28
- static_library.add_external_library "cuda"
29
- yield static_library if block_given?
30
- end
31
- end
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../project")
2
+
3
+ module Ritsu
4
+ class Project
5
+ def setup_cuda
6
+ add_external_library("cuda") do |e|
7
+ e.cmake_find_script "FIND_PACKAGE(CUDA REQUIRED)"
8
+ e.cmake_depend_script "INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS})"
9
+ e.cuda_depend_script "CUDA_INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS})"
10
+ e.cmake_name "${CUDA_LIBRARIES}"
11
+ end
12
+ end
13
+
14
+ def add_cuda_executable(name)
15
+ executable = Ritsu::Targets::Executable.new(name, :project=>self, :cuda_target=>true)
16
+ executable.add_external_library "cuda"
17
+ yield executable if block_given?
18
+ end
19
+
20
+ def add_cuda_shared_library(name)
21
+ shared_library = Ritsu::Targets::SharedLibrary.new(name, :project=>self, :cuda_target=>true)
22
+ shared_library.add_external_library "cuda"
23
+ yield shared_library if block_given?
24
+ end
25
+
26
+ def add_cuda_static_library(name)
27
+ static_library = Ritsu::Targets::StaticLibrary.new(name, :project=>self, :cuda_target=>true)
28
+ static_library.add_external_library "cuda"
29
+ yield static_library if block_given?
30
+ end
31
+ end
32
32
  end
@@ -1,47 +1,47 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../../project")
2
- require File.expand_path(File.dirname(__FILE__) + "/../../../src_file")
3
-
4
- module Ritsu
5
- module SrcFiles
6
- class CuFile < Ritsu::SrcFile
7
- def initialize(src_path, owner)
8
- super(src_path, owner)
9
- end
10
-
11
- def header_file?
12
- false
13
- end
14
-
15
- def cpp_file?
16
- false
17
- end
18
-
19
- def cu_file?
20
- true
21
- end
22
- end
23
-
24
- module AddCuFile
25
- def add_cu_file(path, options={})
26
- src_path = compute_src_path(path, options)
27
- CuFile.new(src_path, self)
28
- end
29
-
30
- def add_cu_files(*paths)
31
- paths.each do |path|
32
- add_cu_file(path)
33
- end
34
- end
35
- end
36
- end
37
- end
38
-
39
- module Ritsu
40
- class Target
41
- include Ritsu::SrcFiles::AddCuFile
42
- end
43
-
44
- class Project
45
- include Ritsu::SrcFiles::AddCuFile
46
- end
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../../project")
2
+ require File.expand_path(File.dirname(__FILE__) + "/../../../src_file")
3
+
4
+ module Ritsu
5
+ module SrcFiles
6
+ class CuFile < Ritsu::SrcFile
7
+ def initialize(src_path, owner)
8
+ super(src_path, owner)
9
+ end
10
+
11
+ def header_file?
12
+ false
13
+ end
14
+
15
+ def cpp_file?
16
+ false
17
+ end
18
+
19
+ def cu_file?
20
+ true
21
+ end
22
+ end
23
+
24
+ module AddCuFile
25
+ def add_cu_file(path, options={})
26
+ src_path = compute_src_path(path, options)
27
+ CuFile.new(src_path, self)
28
+ end
29
+
30
+ def add_cu_files(*paths)
31
+ paths.each do |path|
32
+ add_cu_file(path)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ module Ritsu
40
+ class Target
41
+ include Ritsu::SrcFiles::AddCuFile
42
+ end
43
+
44
+ class Project
45
+ include Ritsu::SrcFiles::AddCuFile
46
+ end
47
47
  end
@@ -1,111 +1,111 @@
1
- require 'rubygems'
2
- require 'active_support/core_ext/string/starts_ends_with'
3
- require File.expand_path(File.dirname(__FILE__) + '/../../../src_files/target_cmake_lists')
4
-
5
- module Ritsu
6
- module SrcFiles
7
- class TargetCmakeLists
8
- class CudaIncludeDirectoriesTemplate < Ritsu::Template
9
- attr_reader :target
10
-
11
- def initialize(target)
12
- super("TargetCmakeLists -- #{target.name} -- CudaIncludeDirectories")
13
- @target = target
14
- end
15
-
16
- def update_block(block, options = {})
17
- external_libraries = target.dependency_libraries.to_a
18
- external_libraries.sort! {|x,y| x.name <=> y.name}
19
-
20
- dependency_targets = target.dependency_targets.to_a
21
- dependency_targets.sort! {|x,y| x.name <=> y.name}
22
-
23
- block.contents.clear
24
- external_libraries.each do |external_library|
25
- if external_library.cuda_depend_script.strip.length > 0
26
- block.contents << external_library.cuda_depend_script
27
- end
28
- end
29
- dependency_targets.each do |dependency_target|
30
- if dependency_target.cuda_depend_script.strip.length > 0
31
- block.contents << dependency_target.cuda_depend_script
32
- end
33
- end
34
-
35
- if target.library?
36
- if target.cuda_depend_script.strip.length > 0
37
- block.contents << target.cuda_depend_script
38
- end
39
- end
40
- end
41
- end
42
-
43
- class CudaCompileTemplate < Ritsu::Template
44
- attr_reader :target
45
-
46
- def initialize(target)
47
- super("TargetCmakeLists -- #{target.name} -- CudaCompile")
48
- @target = target
49
- end
50
-
51
- def cuda_generate_files_var_name
52
- "#{target.name.upcase}_CUDA_GENERATED_FILES"
53
- end
54
-
55
- def update_block(block, options = {})
56
- block.clear_contents
57
-
58
- cu_files = target.src_files.select { |x| x.respond_to?(:cu_file?) && x.cu_file? }
59
- if cu_files.length == 0
60
- return
61
- end
62
- cu_files.sort! {|x,y| x.src_path <=> y.src_path}
63
-
64
- block.add_line "CUDA_COMPILE(#{cuda_generate_files_var_name}"
65
- block.indent
66
- cu_files.each do |cu_file|
67
- block.add_line("${CMAKE_SOURCE_DIR}/#{cu_file.src_path}")
68
- end
69
- block.outdent
70
- block.add_line ")"
71
- block.add_new_line
72
- block.add_line "SET(#{target.name.upcase}_SRC_FILES ${#{target.name.upcase}_SRC_FILES} ${#{cuda_generate_files_var_name}})"
73
- end
74
- end
75
-
76
- class Template
77
- attr_reader :cuda_compile_template
78
- attr_reader :cuda_include_directories_template
79
-
80
- alias_method :initialize_before_cuda, :initialize
81
-
82
- def initialize(target, id = nil)
83
- initialize_before_cuda(target, id)
84
-
85
- @cuda_include_directories_template = CudaIncludeDirectoriesTemplate.new(target)
86
- @cuda_compile_template = CudaCompileTemplate.new(target)
87
-
88
- if target.cuda_target?
89
- position = child_template_with_id_position(libraries_template.id) + 1
90
- contents.insert(position, @cuda_include_directories_template)
91
- contents.insert(position, "")
92
-
93
- position = child_template_with_id_position(source_files_template.id) + 1
94
- contents.insert(position, @cuda_compile_template)
95
- contents.insert(position, "")
96
- end
97
- end
98
-
99
- alias_method :position_to_insert_before_cuda, :position_to_insert
100
-
101
- def position_to_insert(block, new_block)
102
- if new_block.id == cuda_compile_template.id
103
- block.child_block_with_id_position(source_files_template.id) + 2
104
- else
105
- position_to_insert_before_cuda(block, new_block)
106
- end
107
- end
108
- end
109
- end
110
- end
1
+ require 'rubygems'
2
+ require 'active_support/core_ext/string/starts_ends_with'
3
+ require File.expand_path(File.dirname(__FILE__) + '/../../../src_files/target_cmake_lists')
4
+
5
+ module Ritsu
6
+ module SrcFiles
7
+ class TargetCmakeLists
8
+ class CudaIncludeDirectoriesTemplate < Ritsu::Template
9
+ attr_reader :target
10
+
11
+ def initialize(target)
12
+ super("TargetCmakeLists -- #{target.name} -- CudaIncludeDirectories")
13
+ @target = target
14
+ end
15
+
16
+ def update_block(block, options = {})
17
+ external_libraries = target.dependency_libraries.to_a
18
+ external_libraries.sort! {|x,y| x.name <=> y.name}
19
+
20
+ dependency_targets = target.dependency_targets.to_a
21
+ dependency_targets.sort! {|x,y| x.name <=> y.name}
22
+
23
+ block.contents.clear
24
+ external_libraries.each do |external_library|
25
+ if external_library.cuda_depend_script.strip.length > 0
26
+ block.contents << external_library.cuda_depend_script
27
+ end
28
+ end
29
+ dependency_targets.each do |dependency_target|
30
+ if dependency_target.cuda_depend_script.strip.length > 0
31
+ block.contents << dependency_target.cuda_depend_script
32
+ end
33
+ end
34
+
35
+ if target.library?
36
+ if target.cuda_depend_script.strip.length > 0
37
+ block.contents << target.cuda_depend_script
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ class CudaCompileTemplate < Ritsu::Template
44
+ attr_reader :target
45
+
46
+ def initialize(target)
47
+ super("TargetCmakeLists -- #{target.name} -- CudaCompile")
48
+ @target = target
49
+ end
50
+
51
+ def cuda_generate_files_var_name
52
+ "#{target.name.upcase}_CUDA_GENERATED_FILES"
53
+ end
54
+
55
+ def update_block(block, options = {})
56
+ block.clear_contents
57
+
58
+ cu_files = target.src_files.select { |x| x.respond_to?(:cu_file?) && x.cu_file? }
59
+ if cu_files.length == 0
60
+ return
61
+ end
62
+ cu_files.sort! {|x,y| x.src_path <=> y.src_path}
63
+
64
+ block.add_line "CUDA_COMPILE(#{cuda_generate_files_var_name}"
65
+ block.indent
66
+ cu_files.each do |cu_file|
67
+ block.add_line("${CMAKE_SOURCE_DIR}/#{cu_file.src_path}")
68
+ end
69
+ block.outdent
70
+ block.add_line ")"
71
+ block.add_new_line
72
+ block.add_line "SET(#{target.name.upcase}_SRC_FILES ${#{target.name.upcase}_SRC_FILES} ${#{cuda_generate_files_var_name}})"
73
+ end
74
+ end
75
+
76
+ class Template
77
+ attr_reader :cuda_compile_template
78
+ attr_reader :cuda_include_directories_template
79
+
80
+ alias_method :initialize_before_cuda, :initialize
81
+
82
+ def initialize(target, id = nil)
83
+ initialize_before_cuda(target, id)
84
+
85
+ @cuda_include_directories_template = CudaIncludeDirectoriesTemplate.new(target)
86
+ @cuda_compile_template = CudaCompileTemplate.new(target)
87
+
88
+ if target.cuda_target?
89
+ position = child_template_with_id_position(libraries_template.id) + 1
90
+ contents.insert(position, @cuda_include_directories_template)
91
+ contents.insert(position, "")
92
+
93
+ position = child_template_with_id_position(source_files_template.id) + 1
94
+ contents.insert(position, @cuda_compile_template)
95
+ contents.insert(position, "")
96
+ end
97
+ end
98
+
99
+ alias_method :position_to_insert_before_cuda, :position_to_insert
100
+
101
+ def position_to_insert(block, new_block)
102
+ if new_block.id == cuda_compile_template.id
103
+ block.child_block_with_id_position(source_files_template.id) + 2
104
+ else
105
+ position_to_insert_before_cuda(block, new_block)
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
111
  end
@@ -1,17 +1,17 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../target')
2
-
3
- module Ritsu
4
- class Target
5
- alias_method :initialize_target_before_cuda, :initialize
6
-
7
- def initialize(name, options={})
8
- options = {:cuda_target => false}.merge(options)
9
- initialize_target_before_cuda(name, options)
10
- @cuda_target = options[:cuda_target]
11
- end
12
-
13
- def cuda_target?
14
- @cuda_target
15
- end
16
- end
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../target')
2
+
3
+ module Ritsu
4
+ class Target
5
+ alias_method :initialize_target_before_cuda, :initialize
6
+
7
+ def initialize(name, options={})
8
+ options = {:cuda_target => false}.merge(options)
9
+ initialize_target_before_cuda(name, options)
10
+ @cuda_target = options[:cuda_target]
11
+ end
12
+
13
+ def cuda_target?
14
+ @cuda_target
15
+ end
16
+ end
17
17
  end