123456789_123456789_123456789_123456789_123456789_

Class: Rake::MakefileLoader

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Instance Chain:
Inherits: Object
Defined in: lib/rake/loaders/makefile.rb

Overview

Makefile loader to be used with the import file loader. Use this to import dependencies from make dependency tools:

require 'rake/loaders/makefile'

file ".depends.mf" => [SRC_LIST] do |t|
  sh "makedepend -f- -- #{CFLAGS} -- #{t.prerequisites} > #{t.name}"
end

import ".depends.mf"

See Importing Dependencies for further details.

Constant Summary

::FileUtils - Included

LN_SUPPORTED, RUBY

FileUtilsExt - Included

DEFAULT

Instance Method Summary

DSL - Included

#desc

Describes the next rake task.

#directory

Declare a set of files tasks to create the given directories on demand.

#file

Declare a file task.

#file_create

Declare a file creation task.

#import

Import the partial Rakefiles fn.

#multitask

Declare a task that performs its prerequisites in parallel.

#namespace

Create a new rake namespace and use it for evaluating the given block.

#rule

Declare a rule for auto-tasks.

#task

Declare a basic task.

FileUtilsExt - Included

#nowrite

Get/set the nowrite flag controlling output from the ::FileUtils utilities.

#rake_check_options

Check that the options do not contain options not listed in optdecl.

#rake_output_message

Send the message to the default rake output (which is $stderr).

#verbose

Get/set the verbose flag controlling output from the ::FileUtils utilities.

#when_writing

Use this function to prevent potentially destructive ruby code from running when the :nowrite flag is set.

::FileUtils - Included

#ruby

Run a Ruby interpreter with the given arguments.

#safe_ln

Attempt to do a normal file link, but fall back to a copy if the link fails.

#sh

Run the system command cmd.

#split_all

Split a file path into individual directory names.

#create_shell_runner, #set_verbose_option, #sh_show_command

Instance Method Details

#load(fn)

This method is for internal use only.

Load the makefile dependencies in fn.

[ GitHub ]

  
# File 'lib/rake/loaders/makefile.rb', line 24

def load(fn) # :nodoc:
  lines = File.read fn
  lines.gsub!(/\\ /, SPACE_MARK)
  lines.gsub!(/#[^\n]*\n/m, "")
  lines.gsub!(/\\\n/, " ")
  lines.each_line do |line|
    process_line(line)
  end
end

#process_line(line) (private)

This method is for internal use only.

Process one logical line of makefile data.

[ GitHub ]

  
# File 'lib/rake/loaders/makefile.rb', line 37

def process_line(line) # :nodoc:
  file_tasks, args = line.split(":", 2)
  return if args.nil?
  dependents = args.split.map { |d| respace(d) }
  file_tasks.scan(/\S+/) do |file_task|
    file_task = respace(file_task)
    file file_task => dependents
  end
end

#respace(str) (private)

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rake/loaders/makefile.rb', line 47

def respace(str) # :nodoc:
  str.tr SPACE_MARK, " "
end