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,134 +1,134 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../template')
2
- require File.expand_path(File.dirname(__FILE__) + '/../template_policies')
3
- require File.expand_path(File.dirname(__FILE__) + '/../src_files/templated_src_file')
4
-
5
- module Ritsu
6
- module SrcFiles
7
- class ProjectCmakeLists < Ritsu::SrcFiles::TemplatedSrcFile
8
- class HeaderTemplate < Ritsu::Template
9
- include Ritsu::TemplatePolicies::Overwrite
10
-
11
- def initialize(project)
12
- super("ProjectCmakeLists -- Header")
13
- @project = project
14
-
15
- add_line "PROJECT(#{@project.name})"
16
- add_line "CMAKE_MINIMUM_REQUIRED(VERSION 2.8)"
17
- add_line "SET(CMAKE_MODULE_PATH \"${CMAKE_SOURCE_DIR}/cmake_modules\" ${CMAKE_MODULE_PATH})"
18
- add_new_line
19
- add_line "IF(WIN32)"
20
- add_line ' OPTION(__WIN_PLATFORM__ "Windows Platform" ON)'
21
- add_line "ELSE(WIN32)"
22
- add_line ' OPTION(__WIN_PLATFORM__ "Windows Platform" OFF)'
23
- add_line "ENDIF(WIN32)"
24
- add_new_line
25
- add_line "IF(UNIX)"
26
- add_line " IF(APPLE)"
27
- add_line ' OPTION(__MAC_PLATFORM__ "Apple Platform" ON)'
28
- add_line ' OPTION(__UNIX_PLATFORM__ "Unix Platform" OFF)'
29
- add_line " ELSE(APPLE)"
30
- add_line ' OPTION(__MAC_PLATFORM__ "Apple Platform" OFF)'
31
- add_line ' OPTION(__UNIX_PLATFORM__ "Unix Platform" ON)'
32
- add_line " ENDIF(APPLE)"
33
- add_line "ELSE(UNIX)"
34
- add_line ' OPTION(__MAC_PLATFORM__ "Apple Platform" OFF)'
35
- add_line ' OPTION(__UNIX_PLATFORM__ "Unix Platform" OFF)'
36
- add_line "ENDIF(UNIX)"
37
- end
38
- end
39
-
40
- class CustomScriptTemplate < Ritsu::Template
41
- def initialize(project)
42
- super("ProjectCmakeLists -- Custom Script")
43
- @project = project
44
- end
45
-
46
- def update_block(block, options={})
47
- block.contents.clear
48
- block.contents << @project.custom_script
49
- end
50
- end
51
-
52
- class ExternalLibrariesTemplate < Ritsu::Template
53
- def initialize(project)
54
- super("ProjectCmakeLists -- External Libraries")
55
- @project = project
56
- end
57
-
58
- def update_block(block, options={})
59
- block.contents.clear
60
- external_libraries = @project.external_libraries.to_a
61
- external_libraries.sort! {|x,y| x.name <=> y.name}
62
- external_libraries.each do |external_library|
63
- block.contents << external_library.cmake_find_script
64
- end
65
- end
66
- end
67
-
68
- class DirectoriesTemplate < Ritsu::Template
69
- def initialize(project)
70
- super("ProjectCmakeLists -- Directories")
71
- @project = project
72
- end
73
-
74
- def update_block(block, options={})
75
- block.contents.clear
76
- targets = @project.targets_sorted_by_topological_order
77
- targets.sort! { |x,y|
78
- if x.topological_order < y.topological_order
79
- -1
80
- elsif x.topological_order > y.topological_order
81
- 1
82
- else
83
- x.name <=> y.name
84
- end
85
- }
86
- targets.each do |target|
87
- block.contents << "ADD_SUBDIRECTORY(#{target.name})"
88
- end
89
- end
90
- end
91
-
92
- class ConfigureFileTemplate < Ritsu::Template
93
- include Ritsu::TemplatePolicies::Overwrite
94
-
95
- def initialize(project)
96
- super("ProjectCmakeLists -- Configure File")
97
- @project = project
98
-
99
- add_line "CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_SOURCE_DIR}/config.h )"
100
- end
101
- end
102
-
103
- class Template < Ritsu::Template
104
- include Ritsu::TemplatePolicies::StrictBlockMatchingButLeaveUserTextBe
105
-
106
- def initialize(project)
107
- super
108
- @project = project
109
-
110
- add_template HeaderTemplate.new(project)
111
- add_new_line
112
- add_template CustomScriptTemplate.new(project)
113
- add_new_line
114
- add_template ExternalLibrariesTemplate.new(project)
115
- add_new_line
116
- add_template DirectoriesTemplate.new(project)
117
- add_new_line
118
- add_template ConfigureFileTemplate.new(project)
119
- end
120
- end
121
-
122
- def initialize(owner)
123
- super('CMakeLists.txt', owner,
124
- :block_start_prefix => "##<<",
125
- :block_end_prefix => "##>>")
126
- self.template = Template.new(project)
127
- end
128
-
129
- def include_in_source_files?
130
- false
131
- end
132
- end
133
- end
1
+ require File.expand_path(File.dirname(__FILE__) + '/../template')
2
+ require File.expand_path(File.dirname(__FILE__) + '/../template_policies')
3
+ require File.expand_path(File.dirname(__FILE__) + '/../src_files/templated_src_file')
4
+
5
+ module Ritsu
6
+ module SrcFiles
7
+ class ProjectCmakeLists < Ritsu::SrcFiles::TemplatedSrcFile
8
+ class HeaderTemplate < Ritsu::Template
9
+ include Ritsu::TemplatePolicies::Overwrite
10
+
11
+ def initialize(project)
12
+ super("ProjectCmakeLists -- Header")
13
+ @project = project
14
+
15
+ add_line "PROJECT(#{@project.name})"
16
+ add_line "CMAKE_MINIMUM_REQUIRED(VERSION 2.8)"
17
+ add_line "SET(CMAKE_MODULE_PATH \"${CMAKE_SOURCE_DIR}/cmake_modules\" ${CMAKE_MODULE_PATH})"
18
+ add_new_line
19
+ add_line "IF(WIN32)"
20
+ add_line ' OPTION(__WIN_PLATFORM__ "Windows Platform" ON)'
21
+ add_line "ELSE(WIN32)"
22
+ add_line ' OPTION(__WIN_PLATFORM__ "Windows Platform" OFF)'
23
+ add_line "ENDIF(WIN32)"
24
+ add_new_line
25
+ add_line "IF(UNIX)"
26
+ add_line " IF(APPLE)"
27
+ add_line ' OPTION(__MAC_PLATFORM__ "Apple Platform" ON)'
28
+ add_line ' OPTION(__UNIX_PLATFORM__ "Unix Platform" OFF)'
29
+ add_line " ELSE(APPLE)"
30
+ add_line ' OPTION(__MAC_PLATFORM__ "Apple Platform" OFF)'
31
+ add_line ' OPTION(__UNIX_PLATFORM__ "Unix Platform" ON)'
32
+ add_line " ENDIF(APPLE)"
33
+ add_line "ELSE(UNIX)"
34
+ add_line ' OPTION(__MAC_PLATFORM__ "Apple Platform" OFF)'
35
+ add_line ' OPTION(__UNIX_PLATFORM__ "Unix Platform" OFF)'
36
+ add_line "ENDIF(UNIX)"
37
+ end
38
+ end
39
+
40
+ class CustomScriptTemplate < Ritsu::Template
41
+ def initialize(project)
42
+ super("ProjectCmakeLists -- Custom Script")
43
+ @project = project
44
+ end
45
+
46
+ def update_block(block, options={})
47
+ block.contents.clear
48
+ block.contents << @project.custom_script
49
+ end
50
+ end
51
+
52
+ class ExternalLibrariesTemplate < Ritsu::Template
53
+ def initialize(project)
54
+ super("ProjectCmakeLists -- External Libraries")
55
+ @project = project
56
+ end
57
+
58
+ def update_block(block, options={})
59
+ block.contents.clear
60
+ external_libraries = @project.external_libraries.to_a
61
+ external_libraries.sort! {|x,y| x.name <=> y.name}
62
+ external_libraries.each do |external_library|
63
+ block.contents << external_library.cmake_find_script
64
+ end
65
+ end
66
+ end
67
+
68
+ class DirectoriesTemplate < Ritsu::Template
69
+ def initialize(project)
70
+ super("ProjectCmakeLists -- Directories")
71
+ @project = project
72
+ end
73
+
74
+ def update_block(block, options={})
75
+ block.contents.clear
76
+ targets = @project.targets_sorted_by_topological_order
77
+ targets.sort! { |x,y|
78
+ if x.topological_order < y.topological_order
79
+ -1
80
+ elsif x.topological_order > y.topological_order
81
+ 1
82
+ else
83
+ x.name <=> y.name
84
+ end
85
+ }
86
+ targets.each do |target|
87
+ block.contents << "ADD_SUBDIRECTORY(#{target.name})"
88
+ end
89
+ end
90
+ end
91
+
92
+ class ConfigureFileTemplate < Ritsu::Template
93
+ include Ritsu::TemplatePolicies::Overwrite
94
+
95
+ def initialize(project)
96
+ super("ProjectCmakeLists -- Configure File")
97
+ @project = project
98
+
99
+ add_line "CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_SOURCE_DIR}/config.h )"
100
+ end
101
+ end
102
+
103
+ class Template < Ritsu::Template
104
+ include Ritsu::TemplatePolicies::StrictBlockMatchingButLeaveUserTextBe
105
+
106
+ def initialize(project)
107
+ super
108
+ @project = project
109
+
110
+ add_template HeaderTemplate.new(project)
111
+ add_new_line
112
+ add_template CustomScriptTemplate.new(project)
113
+ add_new_line
114
+ add_template ExternalLibrariesTemplate.new(project)
115
+ add_new_line
116
+ add_template DirectoriesTemplate.new(project)
117
+ add_new_line
118
+ add_template ConfigureFileTemplate.new(project)
119
+ end
120
+ end
121
+
122
+ def initialize(owner)
123
+ super('CMakeLists.txt', owner,
124
+ :block_start_prefix => "##<<",
125
+ :block_end_prefix => "##>>")
126
+ self.template = Template.new(project)
127
+ end
128
+
129
+ def include_in_source_files?
130
+ false
131
+ end
132
+ end
133
+ end
134
134
  end
@@ -1,15 +1,15 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../src_file")
2
-
3
- module Ritsu
4
- module SrcFiles
5
- class ProjectConfigHeaderFile < Ritsu::SrcFile
6
- def initialize(project)
7
- super("config.h", project)
8
- end
9
-
10
- def include_in_source_files?
11
- false
12
- end
13
- end
14
- end
1
+ require File.expand_path(File.dirname(__FILE__) + "/../src_file")
2
+
3
+ module Ritsu
4
+ module SrcFiles
5
+ class ProjectConfigHeaderFile < Ritsu::SrcFile
6
+ def initialize(project)
7
+ super("config.h", project)
8
+ end
9
+
10
+ def include_in_source_files?
11
+ false
12
+ end
13
+ end
14
+ end
15
15
  end
@@ -1,45 +1,45 @@
1
- require 'rubygems'
2
- require 'active_support/core_ext/string/inflections'
3
- require File.expand_path(File.dirname(__FILE__) + "/templated_src_file")
4
- require File.expand_path(File.dirname(__FILE__) + "/../template_policies")
5
- require File.expand_path(File.dirname(__FILE__) + "/../template")
6
- require File.expand_path(File.dirname(__FILE__) + "/../utility/platform")
7
-
8
- module Ritsu
9
- module SrcFiles
10
- class ProjectConfigHeaderTemplateFile < Ritsu::SrcFiles::TemplatedSrcFile
11
- class Template < Ritsu::Template
12
- include Ritsu::TemplatePolicies::DoNotUpdate
13
-
14
- attr_reader :src_file
15
-
16
- def initialize(src_file)
17
- @src_file = src_file
18
- super("ProjectConfigHeaderTemplateFile -- #{project.name}")
19
-
20
- add_line "#ifndef __#{project.name.underscore.upcase}_CONFIG_H__"
21
- add_line "#define __#{project.name.underscore.upcase}_CONFIG_H__"
22
- add_new_line
23
- add_line "#cmakedefine __WIN_PLATFORM__"
24
- add_line "#cmakedefine __MAC_PLATFORM__"
25
- add_line "#cmakedefine __UNIX_PLATFORM__"
26
- add_new_line
27
- add_line "#endif"
28
- end
29
-
30
- def project
31
- src_file.project
32
- end
33
- end
34
-
35
- def initialize(project)
36
- super("config.h.in", project)
37
- self.template = Template.new(self)
38
- end
39
-
40
- def include_in_source_files?
41
- false
42
- end
43
- end
44
- end
1
+ require 'rubygems'
2
+ require 'active_support/core_ext/string/inflections'
3
+ require File.expand_path(File.dirname(__FILE__) + "/templated_src_file")
4
+ require File.expand_path(File.dirname(__FILE__) + "/../template_policies")
5
+ require File.expand_path(File.dirname(__FILE__) + "/../template")
6
+ require File.expand_path(File.dirname(__FILE__) + "/../utility/platform")
7
+
8
+ module Ritsu
9
+ module SrcFiles
10
+ class ProjectConfigHeaderTemplateFile < Ritsu::SrcFiles::TemplatedSrcFile
11
+ class Template < Ritsu::Template
12
+ include Ritsu::TemplatePolicies::DoNotUpdate
13
+
14
+ attr_reader :src_file
15
+
16
+ def initialize(src_file)
17
+ @src_file = src_file
18
+ super("ProjectConfigHeaderTemplateFile -- #{project.name}")
19
+
20
+ add_line "#ifndef __#{project.name.underscore.upcase}_CONFIG_H__"
21
+ add_line "#define __#{project.name.underscore.upcase}_CONFIG_H__"
22
+ add_new_line
23
+ add_line "#cmakedefine __WIN_PLATFORM__"
24
+ add_line "#cmakedefine __MAC_PLATFORM__"
25
+ add_line "#cmakedefine __UNIX_PLATFORM__"
26
+ add_new_line
27
+ add_line "#endif"
28
+ end
29
+
30
+ def project
31
+ src_file.project
32
+ end
33
+ end
34
+
35
+ def initialize(project)
36
+ super("config.h.in", project)
37
+ self.template = Template.new(self)
38
+ end
39
+
40
+ def include_in_source_files?
41
+ false
42
+ end
43
+ end
44
+ end
45
45
  end
@@ -1,40 +1,40 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../src_files/target_cmake_lists')
2
-
3
- module Ritsu
4
- module SrcFiles
5
- class SharedLibraryCmakeLists < TargetCmakeLists
6
- class SharedLibraryTemplate < Ritsu::Template
7
- attr_accessor :target
8
- attr_accessor :parent
9
-
10
- def initialize(target, parent)
11
- super("SharedLibraryCmakeLists -- #{target.name} -- Shared Library")
12
- @target = target
13
- @parent = parent
14
- end
15
-
16
- def update_block(block, options={})
17
- block.contents.clear
18
- block.contents << "ADD_LIBRARY(#{@target.name} SHARED ${#{@parent.source_files_template.src_files_var_name}})"
19
- end
20
- end
21
-
22
- class Template < Ritsu::SrcFiles::TargetCmakeLists::Template
23
- def initialize(target, options={})
24
- super(target, "SharedLibraryCmakeLists -- #{target.name}")
25
-
26
- position_to_insert = contents.index(dependencies_template)
27
- contents.insert(position_to_insert, SharedLibraryTemplate.new(target, self))
28
- contents.insert(position_to_insert+1, "")
29
- end
30
- end
31
-
32
- def initialize(target)
33
- super(target)
34
- self.template = Template.new(target,
35
- :block_start_prefix => '##<<',
36
- :block_end_prefix => '##>>')
37
- end
38
- end
39
- end
1
+ require File.expand_path(File.dirname(__FILE__) + '/../src_files/target_cmake_lists')
2
+
3
+ module Ritsu
4
+ module SrcFiles
5
+ class SharedLibraryCmakeLists < TargetCmakeLists
6
+ class SharedLibraryTemplate < Ritsu::Template
7
+ attr_accessor :target
8
+ attr_accessor :parent
9
+
10
+ def initialize(target, parent)
11
+ super("SharedLibraryCmakeLists -- #{target.name} -- Shared Library")
12
+ @target = target
13
+ @parent = parent
14
+ end
15
+
16
+ def update_block(block, options={})
17
+ block.contents.clear
18
+ block.contents << "ADD_LIBRARY(#{@target.name} SHARED ${#{@parent.source_files_template.src_files_var_name}})"
19
+ end
20
+ end
21
+
22
+ class Template < Ritsu::SrcFiles::TargetCmakeLists::Template
23
+ def initialize(target, options={})
24
+ super(target, "SharedLibraryCmakeLists -- #{target.name}")
25
+
26
+ position_to_insert = contents.index(dependencies_template)
27
+ contents.insert(position_to_insert, SharedLibraryTemplate.new(target, self))
28
+ contents.insert(position_to_insert+1, "")
29
+ end
30
+ end
31
+
32
+ def initialize(target)
33
+ super(target)
34
+ self.template = Template.new(target,
35
+ :block_start_prefix => '##<<',
36
+ :block_end_prefix => '##>>')
37
+ end
38
+ end
39
+ end
40
40
  end