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_func(name)
Alias for: have_function
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