Class: Rake::SWIGExtensionTask
- Inherits:
-
ExtensionTask
- Object
- TaskLib
- ExtensionTask
- Rake::SWIGExtensionTask
- Defined in:
- lib/rake/swigextensiontask.rb
Instance Attribute Summary collapse
-
#deps ⇒ Object
A Hash of interface filenames and their dependencies, i.e.
-
#ifaces ⇒ Object
An Array of interface filenames (Symbol or String) to build and link into the extension.
Attributes inherited from ExtensionTask
#dir, #env, #lib_name, #link_libs, #name, #objs
Instance Method Summary collapse
-
#define_rules ⇒ Object
Add rule for generating C++ wrapper code (_wrap.cc) from SWIG interface definition (.i).
- #define_tasks ⇒ Object
-
#set_defaults ⇒ Object
Defaults: - lib_name: name.so - ifaces: name.i - deps: <none> - dir: .
Methods inherited from ExtensionTask
Constructor Details
This class inherits a constructor from Rake::ExtensionTask
Instance Attribute Details
#deps ⇒ Object
A Hash of interface filenames and their dependencies, i.e. files which are not built or linked, but cause the corresponding interface to be rebuild if any of them change.
36 37 38 |
# File 'lib/rake/swigextensiontask.rb', line 36 def deps @deps end |
#ifaces ⇒ Object
An Array of interface filenames (Symbol or String) to build and link into the extension.
31 32 33 |
# File 'lib/rake/swigextensiontask.rb', line 31 def ifaces @ifaces end |
Instance Method Details
#define_rules ⇒ Object
Add rule for generating C++ wrapper code (_wrap.cc) from SWIG interface definition (.i).
68 69 70 71 72 73 74 75 76 77 |
# File 'lib/rake/swigextensiontask.rb', line 68 def define_rules verify_swig_version super Rake::Task.create_rule( /#{env[:swig_cppext]}$/ => [proc {|t| t.sub /#{env[:swig_cppext]}$/, '.'+env[:swigext] }] ) do |r| sh_cmd :swig, :swig_flags, {'-I' => :swig_includedirs}, {'-I' => :includedirs}, '-o', r.name, r.sources end end |
#define_tasks ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/rake/swigextensiontask.rb', line 51 def define_tasks for iface in @ifaces deps = @deps[iface] iface = filepath(iface, :swigext) src = iface.sub(/\.#{env[:swigext]}$/, env[:swig_cppext]) deps = [deps] unless deps.kind_of? Enumerable if deps and deps.any? file src => deps.collect { |dep| filepath(dep, :swigext) } << iface end CLEAN.include src @objs << src.sub(/\.[^.]+$/, '.'+env[:objext]) end super end |
#set_defaults ⇒ Object
Defaults:
-
lib_name: name.so
-
ifaces: name.i
-
deps: <none>
-
dir: .
-
link_libs: <none>
44 45 46 47 48 49 |
# File 'lib/rake/swigextensiontask.rb', line 44 def set_defaults super @ifaces ||= [name.to_sym] @deps ||= Hash.new [] @objs = [] end |