blob: 8736bb682eab93caa59f92308a34a74804b4a11d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
##
# 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.
module Hoe::Compiler
##
# Optional: Defines what tasks need to be compile first. [default: test]
attr_accessor :compile_tasks
##
# Initialize variables for compiler plugin.
def initialize_compiler
self.compile_tasks = [:multi, :test, :check_manifest]
end
##
# Activate the rake-compiler dependencies.
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
def extension name
@extensions ||= []
@extensions << name
spec_extras[:extensions] = @extensions.map { |n| "ext/#{n}/extconf.rb" }
end
##
# Define tasks for compiler plugin.
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
end
|