Skip to content

Commit

Permalink
add stub builder
Browse files Browse the repository at this point in the history
  • Loading branch information
mwotton committed Sep 1, 2010
1 parent 872dc4d commit ea7aef8
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
13 changes: 13 additions & 0 deletions tasks/extconf.rake
@@ -0,0 +1,13 @@
namespace :extconf do
desc "Compiles the Ruby extension"
task :compile
end

task :compile => "extconf:compile"

task :test => :compile

BIN = "*.{bundle,jar,so,obj,pdb,lib,def,exp}"
$hoe.clean_globs |= ["ext/**/#{BIN}", "lib/**/#{BIN}", 'ext/**/Makefile']
$hoe.spec.require_paths = Dir['{lib,ext/*}']
$hoe.spec.extensions = FileList["ext/**/extconf.rb"].to_a
43 changes: 43 additions & 0 deletions tasks/extconf/stub.rake
@@ -0,0 +1,43 @@
namespace :extconf do
extension = File.basename(__FILE__, '.rake')

ext = "ext/#{extension}"
ext_so = "#{ext}/#{extension}.#{Config::CONFIG['DLEXT']}"
ext_files = FileList[
"#{ext}/*.c",
"#{ext}/*.h",
"#{ext}/*.rl",
"#{ext}/extconf.rb",
"#{ext}/Makefile",
# "lib"
]


task :compile => extension do
if Dir.glob("**/#{extension}.{o,so,dll}").length == 0
STDERR.puts "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
STDERR.puts "Gem actually failed to build. Your system is"
STDERR.puts "NOT configured properly to build #{GEM_NAME}."
STDERR.puts "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
exit(1)
end
end

desc "Builds just the #{extension} extension"
task extension.to_sym => ["#{ext}/Makefile", ext_so ]

file "#{ext}/Makefile" => ["#{ext}/extconf.rb"] do
Dir.chdir(ext) do ruby "extconf.rb" end
end

file ext_so => ext_files do
Dir.chdir(ext) do
sh(PLATFORM =~ /win32/ ? 'nmake' : 'make') do |ok, res|
if !ok
require "fileutils"
FileUtils.rm Dir.glob('*.{so,o,dll,bundle}')
end
end
end
end
end

0 comments on commit ea7aef8

Please sign in to comment.