Parent

Namespace

Target

A target is a section in a Makefile

Attributes

deps[RW]
dirs_to_create[R]
files_to_copy[R]
objs[R]
rules[RW]

Public Class Methods

new(objs, deps = [], rules = []) click to toggle source
# File lib/makeconf/target.rb, line 7
def initialize(objs, deps = [], rules = [])
    deps = [ deps ] if deps.kind_of?(String)
    rules = [ rules ] if rules.kind_of?(String)
    raise ArgumentError.new('Bad objs') unless objs.kind_of?(String)
    raise ArgumentError.new('Bad deps') unless deps.kind_of?(Array)
    raise ArgumentError.new('Bad rules') unless rules.kind_of?(Array)

    @objs = objs
    @deps = deps
    @rules = rules
    @dirs_to_create = []      # directories to create
    @files_to_copy = {}       # files to be copied
end

Public Instance Methods

add_dependency(depends) click to toggle source
# File lib/makeconf/target.rb, line 46
def add_dependency(depends)
  @deps.push(depends).uniq!
end
add_rule(rule) click to toggle source
# File lib/makeconf/target.rb, line 50
def add_rule(rule)
  @rules.push(rule)
end
cp(src,dst) click to toggle source

Copy a file to a directory. This is more efficient than calling cp(1) for each file.

# File lib/makeconf/target.rb, line 41
def cp(src,dst)
  @files_to_copy[dst] = [] unless @files_to_copy.has_key? dst
  @files_to_copy[dst].push(src)
end
merge!(src) click to toggle source

Merge one target with another

# File lib/makeconf/target.rb, line 22
def merge!(src)
    raise ArgumentError.new('Mismatched object')            unless src.objs == @objs
    @deps.push(src.deps).uniq!
    @rules.push(src.rules).flatten!
    @dirs_to_create.push(src.dirs_to_create).flatten!.uniq!
    src.files_to_copy.each do |k,v|
      @files_to_copy[k] ||= []
      @files_to_copy[k].concat(v).uniq!
    end
end
mkdir(path) click to toggle source

Ensure that a directory is created before any rules are evaluated

# File lib/makeconf/target.rb, line 35
def mkdir(path)
  @dirs_to_create.push(path) unless @dirs_to_create.include?(path)
end
prepend_rule(target,rule) click to toggle source
# File lib/makeconf/target.rb, line 54
def prepend_rule(target,rule)
  @rules.unshift(rule)
end
to_s() click to toggle source

Return the string representation of the target

# File lib/makeconf/target.rb, line 59
def to_s
  res = "\n" + @objs + ':'
  res += ' ' + @deps.uniq.join(' ') if @deps
  res += "\n"
  @dirs_to_create.each do |dir|
     res += "\t" + Platform.mkdir(dir) + "\n"
  end
  @files_to_copy.each do |k,v|
     res += "\t" + Platform.cp(v, k) + "\n"
  end
  @rules.each do |r| 
    if r.kind_of?(String)
      res += "\t" + r + "\n"
    else
      res += r.to_s
    end
  end
  res
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.