module Hoe::Compiler

rake-compiler plugin for hoe c-extensions.

This plugin is for extconf.rb based projects that want to use rake-compiler to deal with packaging binary gems. It expects a standard extconf setup, namely that your extconf.rb and c source is located in: ext/project-name.

Look at nokogiri for a good example of how to use this.

Tasks Provided:

compile

Compile your c-extension.

Attributes

compile_tasks[RW]

Optional: Defines what tasks need to be compile first. [default: test]

Public Instance Methods

activate_compiler_deps() click to toggle source

Activate the rake-compiler dependencies.

# File lib/hoe/compiler.rb, line 32
def activate_compiler_deps
  dependency "rake-compiler", "~> 1.0", :development

  gem "rake-compiler", "~> 1.0"
rescue LoadError
  warn "Couldn't load rake-compiler. Skipping. Run `rake newb` to fix."
end
define_compiler_tasks() click to toggle source

Define tasks for compiler plugin.

# File lib/hoe/compiler.rb, line 53
def define_compiler_tasks
  require "rake/extensiontask"

  @extensions.each do |name|
    clean_globs << "lib/#{name}/*.{so,bundle,dll}"

    Rake::ExtensionTask.new name, spec do |ext|
      ext.lib_dir = File.join(*["lib", name.to_s, ENV["FAT_DIR"]].compact)
    end
  end

  compile_tasks.each do |t|
    task t => :compile
  end
rescue LoadError
  warn "Couldn't load rake-compiler. Skipping. Run `rake newb` to fix."
end
extension(name) click to toggle source

Declare a compiler extension, expecting ext/NAME/extconf.rb to exist.

# File lib/hoe/compiler.rb, line 44
def extension name
  @extensions ||= []
  @extensions << name
  spec_extras[:extensions] = @extensions.map { |n| "ext/#{n}/extconf.rb" }
end
initialize_compiler() click to toggle source

Initialize variables for compiler plugin.

# File lib/hoe/compiler.rb, line 25
def initialize_compiler
  self.compile_tasks = [:multi, :test, :check_manifest]
end