ritsu 0.1.0 → 0.2.0
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/Thorfile +9 -2
- data/VERSION +1 -1
- data/lib/ritsu/ext/fake_install/project.rb +17 -0
- data/lib/ritsu/ext/fake_install/src_files/project_cmake_lists.rb +45 -0
- data/lib/ritsu/ext/fake_install.rb +2 -0
- data/lib/ritsu/src_files/cpp_file.rb +6 -0
- data/lib/ritsu/src_files/header_file.rb +6 -0
- data/lib/ritsu/src_files/target_cmake_lists.rb +28 -1
- data/lib/ritsu/src_files/unit.rb +33 -0
- data/lib/ritsu/src_files.rb +2 -1
- data/lib/ritsu/target.rb +21 -0
- data/lib/ritsu/thors/default_thor.rb +3 -3
- data/test/ritsu/src_files/executable_cmake_lists_test.rb +41 -0
- data/test/ritsu/src_files/shared_library_cmake_lists_test.rb +3 -0
- data/test/ritsu/src_files/static_library_cmake_lists_test.rb +3 -0
- metadata +45 -4
data/Thorfile
CHANGED
@@ -17,7 +17,7 @@ end.to_a + ['Thorfile']
|
|
17
17
|
|
18
18
|
class Default < Thor
|
19
19
|
include Thor::RakeCompat
|
20
|
-
|
20
|
+
|
21
21
|
Rake::TestTask.new do |t|
|
22
22
|
t.libs << 'lib'
|
23
23
|
test_files = FileList['test/**/*_test.rb']
|
@@ -88,7 +88,14 @@ class Default < Thor
|
|
88
88
|
s.add_development_dependency 'maruku', '>= 0.5.9'
|
89
89
|
end
|
90
90
|
|
91
|
-
Jeweler::GemcutterTasks.new
|
91
|
+
Jeweler::GemcutterTasks.new
|
92
|
+
|
93
|
+
desc "fast_install", "Install gem without RI and RDoc"
|
94
|
+
def fast_install
|
95
|
+
build
|
96
|
+
version = File.read(File.dirname(__FILE__) + '/VERSION').strip
|
97
|
+
sh "gem install pkg/ritsu-#{version}.gem --no-ri --no-rdoc"
|
98
|
+
end
|
92
99
|
rescue LoadError
|
93
100
|
puts "Jeweler, or one of its dependencies, is not available. Install it with: gem install jeweler"
|
94
101
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../../project"
|
2
|
+
|
3
|
+
module Ritsu
|
4
|
+
class Project
|
5
|
+
def performs_fake_install?
|
6
|
+
@fake_install ||= false
|
7
|
+
end
|
8
|
+
|
9
|
+
def fake_install=(value)
|
10
|
+
@fake_install = value
|
11
|
+
end
|
12
|
+
|
13
|
+
def setup_fake_install
|
14
|
+
@fake_install = true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../../../src_files/project_cmake_lists"
|
2
|
+
|
3
|
+
module Ritsu
|
4
|
+
module SrcFiles
|
5
|
+
class ProjectCmakeLists
|
6
|
+
class FakeInstallTemplate < Ritsu::Template
|
7
|
+
attr_reader :project
|
8
|
+
|
9
|
+
def initialize(project)
|
10
|
+
super("ProjectCmakeLists -- Fake Install")
|
11
|
+
@project = project
|
12
|
+
end
|
13
|
+
|
14
|
+
def update_block(block, options={})
|
15
|
+
block.contents.clear
|
16
|
+
|
17
|
+
to_install = project.targets.select { |x| x.install? }
|
18
|
+
|
19
|
+
if project.performs_fake_install? && to_install.length > 0
|
20
|
+
block.add_line "ADD_CUSTOM_TARGET(fake_install"
|
21
|
+
block.add_line " ALL"
|
22
|
+
block.add_line " \"${CMAKE_COMMAND}\""
|
23
|
+
block.add_line " -D CMAKE_INSTALL_PREFIX:string=${CMAKE_SOURCE_DIR}/../"
|
24
|
+
block.add_line " -P \"${CMAKE_CURRENT_BINARY_DIR}/cmake_install.cmake\""
|
25
|
+
block.add_line " DEPENDS"
|
26
|
+
to_install.each do |target|
|
27
|
+
block.add_line " #{target.name}"
|
28
|
+
end
|
29
|
+
block.add_line ")"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Template
|
35
|
+
alias_method :initialize_before_fake_install, :initialize
|
36
|
+
|
37
|
+
def initialize(project)
|
38
|
+
initialize_before_fake_install(project)
|
39
|
+
add_new_line
|
40
|
+
add_template FakeInstallTemplate.new(project)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -115,7 +115,29 @@ module Ritsu
|
|
115
115
|
block.contents << ")"
|
116
116
|
end
|
117
117
|
end
|
118
|
-
|
118
|
+
|
119
|
+
class InstallTemplate < Ritsu::Template
|
120
|
+
attr_reader :target
|
121
|
+
|
122
|
+
def initialize(target)
|
123
|
+
super("TargetCmakeLists -- #{target.name} -- Install")
|
124
|
+
@target = target
|
125
|
+
|
126
|
+
end
|
127
|
+
|
128
|
+
def update_block(block, options = {})
|
129
|
+
block.contents.clear
|
130
|
+
|
131
|
+
if target.install?
|
132
|
+
block.add_line "INSTALL(TARGETS #{target.name}"
|
133
|
+
block.add_line " RUNTIME DESTINATION bin"
|
134
|
+
block.add_line " LIBRARY DESTINATION lib"
|
135
|
+
block.add_line ")"
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
140
|
+
|
119
141
|
class Template < Ritsu::Template
|
120
142
|
include Ritsu::TemplatePolicies::FlexibleBlockMatchingAndCreateMissingBlockButLeaveUserTextBe
|
121
143
|
attr_reader :target
|
@@ -123,6 +145,7 @@ module Ritsu
|
|
123
145
|
attr_reader :custom_commands_template
|
124
146
|
attr_reader :source_files_template
|
125
147
|
attr_reader :dependencies_template
|
148
|
+
attr_reader :install_template
|
126
149
|
|
127
150
|
def initialize(target, id = nil)
|
128
151
|
super(id)
|
@@ -142,6 +165,10 @@ module Ritsu
|
|
142
165
|
|
143
166
|
@dependencies_template = DependenciesTemplate.new(@target)
|
144
167
|
contents << @dependencies_template
|
168
|
+
contents << ""
|
169
|
+
|
170
|
+
@install_template = InstallTemplate.new(@target)
|
171
|
+
contents << @install_template
|
145
172
|
end
|
146
173
|
end
|
147
174
|
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../src_file'
|
2
|
+
require File.dirname(__FILE__) + '/cpp_file'
|
3
|
+
require File.dirname(__FILE__) + '/header_file'
|
4
|
+
|
5
|
+
module Ritsu
|
6
|
+
module SrcFiles
|
7
|
+
module AddUnit
|
8
|
+
include AddCppFile
|
9
|
+
include AddHeaderFile
|
10
|
+
|
11
|
+
def add_unit(name, options={})
|
12
|
+
add_cpp_file(name + ".cpp")
|
13
|
+
add_header_file(name + ".h")
|
14
|
+
end
|
15
|
+
|
16
|
+
def add_units(*names)
|
17
|
+
paths.each do |path|
|
18
|
+
add_unit(name)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
module Ritsu
|
26
|
+
class Target
|
27
|
+
include Ritsu::SrcFiles::AddUnit
|
28
|
+
end
|
29
|
+
|
30
|
+
class Project
|
31
|
+
include Ritsu::SrcFiles::AddUnit
|
32
|
+
end
|
33
|
+
end
|
data/lib/ritsu/src_files.rb
CHANGED
@@ -11,4 +11,5 @@ require File.dirname(__FILE__) + '/src_files/executable_cmake_lists'
|
|
11
11
|
require File.dirname(__FILE__) + '/src_files/shared_library_cmake_lists'
|
12
12
|
require File.dirname(__FILE__) + '/src_files/static_library_cmake_lists'
|
13
13
|
require File.dirname(__FILE__) + '/src_files/project_config_header_file'
|
14
|
-
require File.dirname(__FILE__) + '/src_files/project_config_header_template_file'
|
14
|
+
require File.dirname(__FILE__) + '/src_files/project_config_header_template_file'
|
15
|
+
require File.dirname(__FILE__) + "/src_files/unit"
|
data/lib/ritsu/target.rb
CHANGED
@@ -38,6 +38,7 @@ module Ritsu
|
|
38
38
|
@src_files = Set.new
|
39
39
|
@custom_commands = []
|
40
40
|
@topological_order = 0
|
41
|
+
@install = false
|
41
42
|
|
42
43
|
Target.instances << self
|
43
44
|
@project.targets << self
|
@@ -48,6 +49,14 @@ module Ritsu
|
|
48
49
|
raise "target with name '#{instance.name}' already exists"
|
49
50
|
end
|
50
51
|
end
|
52
|
+
|
53
|
+
def install?
|
54
|
+
@install
|
55
|
+
end
|
56
|
+
|
57
|
+
def setup_install
|
58
|
+
@install = true
|
59
|
+
end
|
51
60
|
|
52
61
|
def src_dir
|
53
62
|
self.name
|
@@ -103,6 +112,12 @@ module Ritsu
|
|
103
112
|
end
|
104
113
|
end
|
105
114
|
|
115
|
+
def add_external_libraries(*names)
|
116
|
+
names.each do |name|
|
117
|
+
add_external_library(name)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
106
121
|
def add_dependency_target(target_or_target_name)
|
107
122
|
if target_or_target_name.kind_of?(String)
|
108
123
|
dependency = Target.find_by_name(target_or_target_name)
|
@@ -115,6 +130,12 @@ module Ritsu
|
|
115
130
|
dependency_targets << dependency
|
116
131
|
end
|
117
132
|
|
133
|
+
def add_dependency_targets(*target_or_target_names)
|
134
|
+
target_or_target_names.each do |target|
|
135
|
+
add_dependency_target(target)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
118
139
|
def dependency_targets_sorted_by_topological_order
|
119
140
|
Target.compute_topological_orders
|
120
141
|
result = dependency_targets.to_a
|
@@ -13,9 +13,9 @@ module Ritsu::Thors
|
|
13
13
|
method_option :generator, :type => :string
|
14
14
|
def cmake
|
15
15
|
prepare_cmake_generator
|
16
|
-
|
17
|
-
if !File.exists?(
|
18
|
-
FileUtils.mkdir_p(
|
16
|
+
|
17
|
+
if !File.exists?(Ritsu::Project.instance.project_dir + "/build")
|
18
|
+
FileUtils.mkdir_p(Ritsu::Project.instance.project_dir + "/build")
|
19
19
|
end
|
20
20
|
|
21
21
|
FileUtils.chdir("build", :verbose => true)
|
@@ -45,6 +45,47 @@ ADD_EXECUTABLE(abc ${ABC_SRC_FILES})
|
|
45
45
|
|
46
46
|
##<< TargetCmakeLists -- abc -- Dependencies
|
47
47
|
##>> TargetCmakeLists -- abc -- Dependencies
|
48
|
+
|
49
|
+
##<< TargetCmakeLists -- abc -- Install
|
50
|
+
##>> TargetCmakeLists -- abc -- Install
|
51
|
+
CMAKE
|
52
|
+
|
53
|
+
assert_file_content(expected_content, abc.cmake_lists.abs_path)
|
54
|
+
end
|
55
|
+
|
56
|
+
file_test "install" do
|
57
|
+
abc = Ritsu::Targets::Executable.new("abc", :project=>@project)
|
58
|
+
abc.setup_install
|
59
|
+
FileRobot.quietly do
|
60
|
+
abc.cmake_lists.create
|
61
|
+
end
|
62
|
+
assert_file_exists(abc.cmake_lists.abs_path)
|
63
|
+
|
64
|
+
expected_content = <<-CMAKE
|
65
|
+
##<< TargetCmakeLists -- abc -- Libraries
|
66
|
+
##>> TargetCmakeLists -- abc -- Libraries
|
67
|
+
|
68
|
+
##<< TargetCmakeLists -- abc -- Custom Commands
|
69
|
+
##>> TargetCmakeLists -- abc -- Custom Commands
|
70
|
+
|
71
|
+
##<< TargetCmakeLists -- abc -- Source Files
|
72
|
+
SET(ABC_SRC_FILES
|
73
|
+
)
|
74
|
+
##>> TargetCmakeLists -- abc -- Source Files
|
75
|
+
|
76
|
+
##<< ExecutableCmakeLists -- abc -- Executable
|
77
|
+
ADD_EXECUTABLE(abc ${ABC_SRC_FILES})
|
78
|
+
##>> ExecutableCmakeLists -- abc -- Executable
|
79
|
+
|
80
|
+
##<< TargetCmakeLists -- abc -- Dependencies
|
81
|
+
##>> TargetCmakeLists -- abc -- Dependencies
|
82
|
+
|
83
|
+
##<< TargetCmakeLists -- abc -- Install
|
84
|
+
INSTALL(TARGETS abc
|
85
|
+
RUNTIME DESTINATION bin
|
86
|
+
LIBRARY DESTINATION lib
|
87
|
+
)
|
88
|
+
##>> TargetCmakeLists -- abc -- Install
|
48
89
|
CMAKE
|
49
90
|
|
50
91
|
assert_file_content(expected_content, abc.cmake_lists.abs_path)
|
@@ -45,6 +45,9 @@ ADD_LIBRARY(abc SHARED ${ABC_SRC_FILES})
|
|
45
45
|
|
46
46
|
##<< TargetCmakeLists -- abc -- Dependencies
|
47
47
|
##>> TargetCmakeLists -- abc -- Dependencies
|
48
|
+
|
49
|
+
##<< TargetCmakeLists -- abc -- Install
|
50
|
+
##>> TargetCmakeLists -- abc -- Install
|
48
51
|
CMAKE
|
49
52
|
|
50
53
|
assert_file_content(expected_content, abc.cmake_lists.abs_path)
|
@@ -45,6 +45,9 @@ ADD_LIBRARY(abc STATIC ${ABC_SRC_FILES})
|
|
45
45
|
|
46
46
|
##<< TargetCmakeLists -- abc -- Dependencies
|
47
47
|
##>> TargetCmakeLists -- abc -- Dependencies
|
48
|
+
|
49
|
+
##<< TargetCmakeLists -- abc -- Install
|
50
|
+
##>> TargetCmakeLists -- abc -- Install
|
48
51
|
CMAKE
|
49
52
|
|
50
53
|
assert_file_content(expected_content, abc.cmake_lists.abs_path)
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ritsu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 23
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
|
-
-
|
8
|
+
- 2
|
8
9
|
- 0
|
9
|
-
version: 0.
|
10
|
+
version: 0.2.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- dragonmeteor
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-07-19 00:00:00 +07:00
|
18
19
|
default_executable: ritsu
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: thor
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 35
|
27
30
|
segments:
|
28
31
|
- 0
|
29
32
|
- 13
|
@@ -35,9 +38,11 @@ dependencies:
|
|
35
38
|
name: activesupport
|
36
39
|
prerelease: false
|
37
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
38
42
|
requirements:
|
39
43
|
- - ">="
|
40
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 9
|
41
46
|
segments:
|
42
47
|
- 2
|
43
48
|
- 3
|
@@ -49,9 +54,11 @@ dependencies:
|
|
49
54
|
name: jeweler
|
50
55
|
prerelease: false
|
51
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
52
58
|
requirements:
|
53
59
|
- - ">="
|
54
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 7
|
55
62
|
segments:
|
56
63
|
- 1
|
57
64
|
- 4
|
@@ -63,9 +70,11 @@ dependencies:
|
|
63
70
|
name: yard
|
64
71
|
prerelease: false
|
65
72
|
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
66
74
|
requirements:
|
67
75
|
- - ">="
|
68
76
|
- !ruby/object:Gem::Version
|
77
|
+
hash: 13
|
69
78
|
segments:
|
70
79
|
- 0
|
71
80
|
- 5
|
@@ -77,9 +86,11 @@ dependencies:
|
|
77
86
|
name: maruku
|
78
87
|
prerelease: false
|
79
88
|
requirement: &id005 !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
80
90
|
requirements:
|
81
91
|
- - ">="
|
82
92
|
- !ruby/object:Gem::Version
|
93
|
+
hash: 25
|
83
94
|
segments:
|
84
95
|
- 0
|
85
96
|
- 5
|
@@ -104,6 +115,9 @@ files:
|
|
104
115
|
- bin/ritsu
|
105
116
|
- lib/ritsu.rb
|
106
117
|
- lib/ritsu/block.rb
|
118
|
+
- lib/ritsu/ext/fake_install.rb
|
119
|
+
- lib/ritsu/ext/fake_install/project.rb
|
120
|
+
- lib/ritsu/ext/fake_install/src_files/project_cmake_lists.rb
|
107
121
|
- lib/ritsu/ext/test_case.rb
|
108
122
|
- lib/ritsu/external_library.rb
|
109
123
|
- lib/ritsu/project.rb
|
@@ -126,6 +140,7 @@ files:
|
|
126
140
|
- lib/ritsu/src_files/static_library_cmake_lists.rb
|
127
141
|
- lib/ritsu/src_files/target_cmake_lists.rb
|
128
142
|
- lib/ritsu/src_files/templated_src_file.rb
|
143
|
+
- lib/ritsu/src_files/unit.rb
|
129
144
|
- lib/ritsu/target.rb
|
130
145
|
- lib/ritsu/targets.rb
|
131
146
|
- lib/ritsu/targets/executable.rb
|
@@ -148,6 +163,28 @@ files:
|
|
148
163
|
- lib/ritsu/utility/simple_io.rb
|
149
164
|
- lib/ritsu/utility/single_instance.rb
|
150
165
|
- lib/ritsu/utility/strings.rb
|
166
|
+
- test/ritsu/block_test.rb
|
167
|
+
- test/ritsu/external_library_test.rb
|
168
|
+
- test/ritsu/project_generators/default_generator_test.rb
|
169
|
+
- test/ritsu/project_test.rb
|
170
|
+
- test/ritsu/src_file_test.rb
|
171
|
+
- test/ritsu/src_files/cpp_file_test.rb
|
172
|
+
- test/ritsu/src_files/executable_cmake_lists_test.rb
|
173
|
+
- test/ritsu/src_files/header_file_test.rb
|
174
|
+
- test/ritsu/src_files/project_cmake_lists_test.rb
|
175
|
+
- test/ritsu/src_files/shared_library_cmake_lists_test.rb
|
176
|
+
- test/ritsu/src_files/static_library_cmake_lists_test.rb
|
177
|
+
- test/ritsu/src_files/target_cmake_lists_test.rb
|
178
|
+
- test/ritsu/target_test.rb
|
179
|
+
- test/ritsu/targets/executable_test.rb
|
180
|
+
- test/ritsu/targets/shared_library_test.rb
|
181
|
+
- test/ritsu/targets/static_library_test.rb
|
182
|
+
- test/ritsu/template_policies_test.rb
|
183
|
+
- test/ritsu/utility/accessors_test.rb
|
184
|
+
- test/ritsu/utility/check_upon_add_set_test.rb
|
185
|
+
- test/ritsu/utility/file_robot_test.rb
|
186
|
+
- test/ritsu/utility/strings_test.rb
|
187
|
+
- test/test_helpers.rb
|
151
188
|
has_rdoc: true
|
152
189
|
homepage: http://github.com/dragonmeteor/ritsu
|
153
190
|
licenses: []
|
@@ -164,23 +201,27 @@ rdoc_options:
|
|
164
201
|
require_paths:
|
165
202
|
- lib
|
166
203
|
required_ruby_version: !ruby/object:Gem::Requirement
|
204
|
+
none: false
|
167
205
|
requirements:
|
168
206
|
- - ">="
|
169
207
|
- !ruby/object:Gem::Version
|
208
|
+
hash: 3
|
170
209
|
segments:
|
171
210
|
- 0
|
172
211
|
version: "0"
|
173
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
213
|
+
none: false
|
174
214
|
requirements:
|
175
215
|
- - ">="
|
176
216
|
- !ruby/object:Gem::Version
|
217
|
+
hash: 3
|
177
218
|
segments:
|
178
219
|
- 0
|
179
220
|
version: "0"
|
180
221
|
requirements: []
|
181
222
|
|
182
223
|
rubyforge_project: ritsu
|
183
|
-
rubygems_version: 1.3.
|
224
|
+
rubygems_version: 1.3.7
|
184
225
|
signing_key:
|
185
226
|
specification_version: 3
|
186
227
|
summary: A code generation system that facilitates building C/C++ software with the help of CMake and Doxygen
|