ritsu 0.5.2 → 0.5.3
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/VERSION +1 -1
- data/bin/define_cpp_string +0 -0
- data/bin/ritsu +0 -0
- data/lib/ritsu/ext/cuda/external_library.rb +16 -0
- data/lib/ritsu/ext/cuda/project.rb +4 -3
- data/lib/ritsu/ext/cuda/src_files/target_cmake_lists.rb +48 -4
- data/lib/ritsu/ext/cuda/target.rb +17 -0
- data/lib/ritsu/ext/cuda/targets/library.rb +16 -0
- data/lib/ritsu/ext/cuda.rb +4 -1
- data/lib/ritsu/utility/accessors.rb +2 -2
- data/test/ritsu/ext/cuda/src_files/cuda_static_library_cmake_lists_test.rb +64 -0
- metadata +13 -8
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.3
|
data/bin/define_cpp_string
CHANGED
File without changes
|
data/bin/ritsu
CHANGED
File without changes
|
@@ -0,0 +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
|
16
|
+
end
|
@@ -6,24 +6,25 @@ module Ritsu
|
|
6
6
|
add_external_library("cuda") do |e|
|
7
7
|
e.cmake_find_script "FIND_PACKAGE(CUDA REQUIRED)"
|
8
8
|
e.cmake_depend_script "INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS})"
|
9
|
+
e.cuda_depend_script "CUDA_INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS})"
|
9
10
|
e.cmake_name "${CUDA_LIBRARIES}"
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
13
14
|
def add_cuda_executable(name)
|
14
|
-
executable = Ritsu::Targets::Executable.new(name, :project=>self)
|
15
|
+
executable = Ritsu::Targets::Executable.new(name, :project=>self, :cuda_target=>true)
|
15
16
|
executable.add_external_library "cuda"
|
16
17
|
yield executable if block_given?
|
17
18
|
end
|
18
19
|
|
19
20
|
def add_cuda_shared_library(name)
|
20
|
-
shared_library = Ritsu::Targets::SharedLibrary.new(name, :project=>self)
|
21
|
+
shared_library = Ritsu::Targets::SharedLibrary.new(name, :project=>self, :cuda_target=>true)
|
21
22
|
shared_library.add_external_library "cuda"
|
22
23
|
yield shared_library if block_given?
|
23
24
|
end
|
24
25
|
|
25
26
|
def add_cuda_static_library(name)
|
26
|
-
static_library = Ritsu::Targets::StaticLibrary.new(name, :project=>self)
|
27
|
+
static_library = Ritsu::Targets::StaticLibrary.new(name, :project=>self, :cuda_target=>true)
|
27
28
|
static_library.add_external_library "cuda"
|
28
29
|
yield static_library if block_given?
|
29
30
|
end
|
@@ -4,7 +4,42 @@ require File.expand_path(File.dirname(__FILE__) + '/../../../src_files/target_cm
|
|
4
4
|
|
5
5
|
module Ritsu
|
6
6
|
module SrcFiles
|
7
|
-
class TargetCmakeLists
|
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
|
+
|
8
43
|
class CudaCompileTemplate < Ritsu::Template
|
9
44
|
attr_reader :target
|
10
45
|
|
@@ -40,16 +75,25 @@ module Ritsu
|
|
40
75
|
|
41
76
|
class Template
|
42
77
|
attr_reader :cuda_compile_template
|
78
|
+
attr_reader :cuda_include_directories_template
|
43
79
|
|
44
80
|
alias_method :initialize_before_cuda, :initialize
|
45
81
|
|
46
82
|
def initialize(target, id = nil)
|
47
83
|
initialize_before_cuda(target, id)
|
48
84
|
|
85
|
+
@cuda_include_directories_template = CudaIncludeDirectoriesTemplate.new(target)
|
49
86
|
@cuda_compile_template = CudaCompileTemplate.new(target)
|
50
|
-
|
51
|
-
|
52
|
-
|
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
|
53
97
|
end
|
54
98
|
|
55
99
|
alias_method :position_to_insert_before_cuda, :position_to_insert
|
@@ -0,0 +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
|
17
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../targets/library.rb")
|
2
|
+
|
3
|
+
module Ritsu::Targets
|
4
|
+
class Library
|
5
|
+
attr_accessor :cuda_depend_script
|
6
|
+
attr_method :cuda_depend_script
|
7
|
+
|
8
|
+
alias_method :initialize_library_before_cuda, :initialize
|
9
|
+
|
10
|
+
def initialize(name, options={})
|
11
|
+
options = {:cuda_depend_script => ""}.merge(options)
|
12
|
+
initialize_library_before_cuda(name, options)
|
13
|
+
@cuda_depend_script = options[:cuda_depend_script]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/ritsu/ext/cuda.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + "/cuda/src_files/cu_file")
|
2
2
|
require File.expand_path(File.dirname(__FILE__) + "/cuda/src_files/target_cmake_lists")
|
3
|
-
require File.expand_path(File.dirname(__FILE__) + "/cuda/project")
|
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
|
+
require File.expand_path(File.dirname(__FILE__) + "/cuda/target.rb")
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../../../../test_helpers"
|
2
|
+
require File.dirname(__FILE__) + "/../../../../../lib/ritsu/ext/cuda"
|
3
|
+
|
4
|
+
class CudaStaticLibraryCMakeListsTest < Test::Unit::TestCase
|
5
|
+
include Ritsu::SetupProjectAndClearEverythingElse
|
6
|
+
include Ritsu::TestCaseWithFileTestData
|
7
|
+
include Ritsu::Utility
|
8
|
+
|
9
|
+
def data_dir; File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb") end
|
10
|
+
|
11
|
+
def setup
|
12
|
+
setup_project('mio')
|
13
|
+
@project.project_dir = output_dir
|
14
|
+
@project.setup_cuda
|
15
|
+
end
|
16
|
+
|
17
|
+
file_test "must be present" do
|
18
|
+
abc = Ritsu::Targets::StaticLibrary.new("abc", :project=>@project, :cuda_target=>true)
|
19
|
+
abc.add_external_library "cuda"
|
20
|
+
assert abc.respond_to?(:cmake_lists)
|
21
|
+
assert abc.cmake_lists.kind_of?(Ritsu::SrcFiles::StaticLibraryCmakeLists)
|
22
|
+
assert_equal 1,
|
23
|
+
abc.src_files.select {|x| x.kind_of?(Ritsu::SrcFiles::StaticLibraryCmakeLists)}.length
|
24
|
+
end
|
25
|
+
|
26
|
+
file_test "create" do
|
27
|
+
abc = Ritsu::Targets::StaticLibrary.new("abc", :project=>@project, :cuda_target=>true)
|
28
|
+
FileRobot.quietly do
|
29
|
+
abc.cmake_lists.create
|
30
|
+
end
|
31
|
+
assert_file_exists(abc.cmake_lists.abs_path)
|
32
|
+
|
33
|
+
expected_content = <<-CMAKE
|
34
|
+
##<< TargetCmakeLists -- abc -- Libraries
|
35
|
+
##>> TargetCmakeLists -- abc -- Libraries
|
36
|
+
|
37
|
+
##<< TargetCmakeLists -- abc -- CudaIncludeDirectories
|
38
|
+
##>> TargetCmakeLists -- abc -- CudaIncludeDirectories
|
39
|
+
|
40
|
+
##<< TargetCmakeLists -- abc -- Custom Commands
|
41
|
+
##>> TargetCmakeLists -- abc -- Custom Commands
|
42
|
+
|
43
|
+
##<< TargetCmakeLists -- abc -- Source Files
|
44
|
+
SET(ABC_SRC_FILES
|
45
|
+
)
|
46
|
+
##>> TargetCmakeLists -- abc -- Source Files
|
47
|
+
|
48
|
+
##<< TargetCmakeLists -- abc -- CudaCompile
|
49
|
+
##>> TargetCmakeLists -- abc -- CudaCompile
|
50
|
+
|
51
|
+
##<< StaticLibraryCmakeLists -- abc -- Static Library
|
52
|
+
ADD_LIBRARY(abc STATIC ${ABC_SRC_FILES})
|
53
|
+
##>> StaticLibraryCmakeLists -- abc -- Static Library
|
54
|
+
|
55
|
+
##<< TargetCmakeLists -- abc -- Dependencies
|
56
|
+
##>> TargetCmakeLists -- abc -- Dependencies
|
57
|
+
|
58
|
+
##<< TargetCmakeLists -- abc -- Install
|
59
|
+
##>> TargetCmakeLists -- abc -- Install
|
60
|
+
CMAKE
|
61
|
+
|
62
|
+
assert_file_content(expected_content, abc.cmake_lists.abs_path)
|
63
|
+
end
|
64
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ritsu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 5
|
9
|
-
-
|
10
|
-
version: 0.5.
|
9
|
+
- 3
|
10
|
+
version: 0.5.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- dragonmeteor
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-09-
|
18
|
+
date: 2010-09-14 00:00:00 +07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -118,9 +118,12 @@ files:
|
|
118
118
|
- lib/ritsu.rb
|
119
119
|
- lib/ritsu/block.rb
|
120
120
|
- lib/ritsu/ext/cuda.rb
|
121
|
+
- lib/ritsu/ext/cuda/external_library.rb
|
121
122
|
- lib/ritsu/ext/cuda/project.rb
|
122
123
|
- lib/ritsu/ext/cuda/src_files/cu_file.rb
|
123
124
|
- lib/ritsu/ext/cuda/src_files/target_cmake_lists.rb
|
125
|
+
- lib/ritsu/ext/cuda/target.rb
|
126
|
+
- lib/ritsu/ext/cuda/targets/library.rb
|
124
127
|
- lib/ritsu/ext/fake_install.rb
|
125
128
|
- lib/ritsu/ext/fake_install/project.rb
|
126
129
|
- lib/ritsu/ext/fake_install/src_files/project_cmake_lists.rb
|
@@ -171,9 +174,11 @@ files:
|
|
171
174
|
- lib/ritsu/utility/single_instance.rb
|
172
175
|
- lib/ritsu/utility/strings.rb
|
173
176
|
- test/ritsu/block_test.rb
|
177
|
+
- test/ritsu/ext/cuda/src_files/cuda_static_library_cmake_lists_test.rb
|
174
178
|
- test/ritsu/external_library_test.rb
|
175
179
|
- test/ritsu/project_generators/default_generator_test.rb
|
176
180
|
- test/ritsu/project_test.rb
|
181
|
+
- test/ritsu/src_file_test.rb
|
177
182
|
- test/ritsu/src_files/cpp_file_test.rb
|
178
183
|
- test/ritsu/src_files/executable_cmake_lists_test.rb
|
179
184
|
- test/ritsu/src_files/header_file_test.rb
|
@@ -181,11 +186,10 @@ files:
|
|
181
186
|
- test/ritsu/src_files/shared_library_cmake_lists_test.rb
|
182
187
|
- test/ritsu/src_files/static_library_cmake_lists_test.rb
|
183
188
|
- test/ritsu/src_files/target_cmake_lists_test.rb
|
184
|
-
- test/ritsu/
|
189
|
+
- test/ritsu/target_test.rb
|
185
190
|
- test/ritsu/targets/executable_test.rb
|
186
191
|
- test/ritsu/targets/shared_library_test.rb
|
187
192
|
- test/ritsu/targets/static_library_test.rb
|
188
|
-
- test/ritsu/target_test.rb
|
189
193
|
- test/ritsu/template_policies_test.rb
|
190
194
|
- test/ritsu/utility/accessors_test.rb
|
191
195
|
- test/ritsu/utility/check_upon_add_set_test.rb
|
@@ -234,9 +238,11 @@ specification_version: 3
|
|
234
238
|
summary: A code generation system that facilitates building C/C++ software with the help of CMake
|
235
239
|
test_files:
|
236
240
|
- test/ritsu/block_test.rb
|
241
|
+
- test/ritsu/ext/cuda/src_files/cuda_static_library_cmake_lists_test.rb
|
237
242
|
- test/ritsu/external_library_test.rb
|
238
243
|
- test/ritsu/project_generators/default_generator_test.rb
|
239
244
|
- test/ritsu/project_test.rb
|
245
|
+
- test/ritsu/src_file_test.rb
|
240
246
|
- test/ritsu/src_files/cpp_file_test.rb
|
241
247
|
- test/ritsu/src_files/executable_cmake_lists_test.rb
|
242
248
|
- test/ritsu/src_files/header_file_test.rb
|
@@ -244,11 +250,10 @@ test_files:
|
|
244
250
|
- test/ritsu/src_files/shared_library_cmake_lists_test.rb
|
245
251
|
- test/ritsu/src_files/static_library_cmake_lists_test.rb
|
246
252
|
- test/ritsu/src_files/target_cmake_lists_test.rb
|
247
|
-
- test/ritsu/
|
253
|
+
- test/ritsu/target_test.rb
|
248
254
|
- test/ritsu/targets/executable_test.rb
|
249
255
|
- test/ritsu/targets/shared_library_test.rb
|
250
256
|
- test/ritsu/targets/static_library_test.rb
|
251
|
-
- test/ritsu/target_test.rb
|
252
257
|
- test/ritsu/template_policies_test.rb
|
253
258
|
- test/ritsu/utility/accessors_test.rb
|
254
259
|
- test/ritsu/utility/check_upon_add_set_test.rb
|