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 CHANGED
@@ -1 +1 @@
1
- 0.5.2
1
+ 0.5.3
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
- position = child_template_with_id_position(source_files_template.id) + 1
51
- contents.insert(position, @cuda_compile_template)
52
- contents.insert(position, "")
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
@@ -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")
@@ -15,7 +15,7 @@ module Ritsu
15
15
  elsif args.length == 1
16
16
  @#{name} = args[0]
17
17
  end
18
- end
18
+ end
19
19
  _RUBY
20
20
  end
21
21
 
@@ -24,7 +24,7 @@ module Ritsu
24
24
  attr_method_single(name)
25
25
  end
26
26
  end
27
- end
27
+ end
28
28
  end
29
29
  end
30
30
  end
@@ -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: 15
4
+ hash: 13
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 2
10
- version: 0.5.2
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-11 00:00:00 +07:00
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/src_file_test.rb
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/src_file_test.rb
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