Permalink
Browse files

add stub builder

  • Loading branch information...
1 parent 872dc4d commit ea7aef8ed9abd114f0ab5179848089b3bc3d9997 @mwotton committed Sep 1, 2010
Showing with 56 additions and 0 deletions.
  1. +13 −0 tasks/extconf.rake
  2. +43 −0 tasks/extconf/stub.rake
View
13 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
View
43 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.