class Autorake::Definitions
Attributes
directories[R]
environment[R]
features[R]
Public Class Methods
new()
click to toggle source
# File lib/autorake/definition.rb, line 17 def initialize @environment = {} @directories = Directories.new @features = {} @args = { :par => {}, :inc => {}, :lib => {}, } @checks = [] end
Public Instance Methods
dump()
click to toggle source
# File lib/autorake/definition.rb, line 25 def dump c = perform c.dump end
incpath()
click to toggle source
# File lib/autorake/definition.rb, line 14 def incpath ; @args[ :inc] ; end
libpath()
click to toggle source
# File lib/autorake/definition.rb, line 15 def libpath ; @args[ :lib] ; end
parameters()
click to toggle source
# File lib/autorake/definition.rb, line 13 def parameters ; @args[ :par] ; end
perform()
click to toggle source
# File lib/autorake/definition.rb, line 30 def perform Builder.quiet = true c = Configuration.new @environment, @directories c.do_env c.features.update @features d = @directories.expand "INCLUDE" ; c.incdirs.push d d = @directories.expand "LIB" ; c.libdirs.push d af = @features.keys.map { |k| AddFeature.new k } am = @args[ :par].map { |k,v| AddMacro.new k, v } ai = @args[ :inc].map { |k,v| AddIncdir.new k, v } al = @args[ :lib].map { |k,v| AddLibdir.new k, v } [ af, am, ai, al, @checks].each { |a| a.each { |k| k.perform c } } c end
Protected Instance Methods
directory(name, dir)
click to toggle source
# File lib/autorake/definition.rb, line 47 def directory name, dir @directories[ name] = dir end
disable(name, &block)
click to toggle source
# File lib/autorake/definition.rb, line 63 def disable name, &block feature name, false, &block end
enable(name, &block)
click to toggle source
# File lib/autorake/definition.rb, line 60 def enable name, &block feature name, true, &block end
extending_ruby(full_libname = nil)
click to toggle source
# File lib/autorake/definition.rb, line 72 def extending_ruby full_libname = nil if RUBY_VERSION < "1.9" then incdir :ruby, RbConfig::CONFIG[ "topdir"] else incdir :ruby, RbConfig::CONFIG[ "rubyhdrdir"] incdir :ruby_arch, RbConfig::CONFIG[ "rubyarchhdrdir"] end libdir :ruby, RbConfig::CONFIG[ "libdir"] libdir :ruby_arch, RbConfig::CONFIG[ "archlibdir"] l = RbConfig::CONFIG[ "LIBRUBY"] l = if full_libname then ":#{l}" else l[ /\Alib(.*?)\.so(?:\..*)?\z/, 1] end need_library l end
feature(name, enabled = nil) { || ... }
click to toggle source
# File lib/autorake/definition.rb, line 51 def feature name, enabled = nil name = name.to_sym @current and raise "Features may not be nested." @current = name @features[ name] = enabled yield if block_given? ensure @current = nil end
have_function(name)
click to toggle source
# File lib/autorake/definition.rb, line 105 def have_function name c = CheckFunction.new @current, name @checks.push c end
Also aliased as: have_func
have_header(name)
click to toggle source
# File lib/autorake/definition.rb, line 90 def have_header name c = CheckHeader.new @current, name, false @checks.push c end
have_macro(name)
click to toggle source
# File lib/autorake/definition.rb, line 100 def have_macro name c = CheckMacro.new @current, name @checks.push c end
incdir(name, dir ;)
click to toggle source
# File lib/autorake/definition.rb, line 69 def incdir name, dir ; argdef :inc, name, dir ; end
libdir(name, dir ;)
click to toggle source
# File lib/autorake/definition.rb, line 70 def libdir name, dir ; argdef :lib, name, dir ; end
need_header(name)
click to toggle source
# File lib/autorake/definition.rb, line 95 def need_header name c = CheckHeader.new @current, name, true @checks.push c end
need_library(name)
click to toggle source
# File lib/autorake/definition.rb, line 111 def need_library name c = CheckLibrary.new @current, name @checks.push c end
with(name, val = nil ;)
click to toggle source
# File lib/autorake/definition.rb, line 67 def with name, val = nil ; argdef :par, name, val ; end
Private Instance Methods
argdef(type, name, val)
click to toggle source
# File lib/autorake/definition.rb, line 118 def argdef type, name, val String === val and val.chomp! name = "#@current/#{name}" if @current @args[ type][ name.to_sym] = val end