From 732325a67ba68060fe18dc66c21134c35f8006ea Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 7 Sep 2009 16:24:41 -0700 Subject: enable MRI C extension by default It was too much confusion to have multiple gems in the mix and I mainly use the C extension anyways. If we're not on a compatible version of Ruby, the extension will just be disabled by generating a dummy no-op Makefile to work around it. --- ext/clogger_ext/extconf.rb | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) (limited to 'ext/clogger_ext/extconf.rb') diff --git a/ext/clogger_ext/extconf.rb b/ext/clogger_ext/extconf.rb index 8cc8b5e..b327ada 100644 --- a/ext/clogger_ext/extconf.rb +++ b/ext/clogger_ext/extconf.rb @@ -1,12 +1,34 @@ -require 'mkmf' +begin + require 'mkmf' -if have_header('fcntl.h') - have_macro('F_GETFL', %w(fcntl.h)) - have_macro('O_NONBLOCK', %w(unistd.h fcntl.h)) -end + # XXX let me know if this works for you... + if ! defined?(RUBY_VERSION) || RUBY_VERSION !~ /\A1\.[89]\./ + raise "Invalid RUBY_VERSION for C extension" + end + + have_header('ruby.h') or raise "ruby.h header not found!" + + if have_header('fcntl.h') + have_macro('F_GETFL', %w(fcntl.h)) + have_macro('O_NONBLOCK', %w(unistd.h fcntl.h)) + end -have_func('localtime_r', 'time.h') or abort "localtime_r needed" -have_func('gmtime_r', 'time.h') or abort "gmtime_r needed" -have_func('rb_str_set_len', 'ruby.h') -dir_config('clogger_ext') -create_makefile('clogger_ext') + have_func('localtime_r', 'time.h') or raise "localtime_r needed" + have_func('gmtime_r', 'time.h') or raise "gmtime_r needed" + have_func('rb_str_set_len', 'ruby.h') + dir_config('clogger_ext') + create_makefile('clogger_ext') +rescue Object => err + warn "E: #{err.inspect}" + warn "Skipping C extension, pure Ruby version will be used instead" + + # generate a dummy Makefile to fool rubygems installer + targets = %w(all static clean distclean realclean + install install-so install-rb install-rb-default + pre-install-rb pre-install-rb-default + site-install site-install-so site-install-rb) + File.open(File.dirname(__FILE__) << "/Makefile", "wb") do |fp| + fp.puts targets.join(' ') << ":" + fp.puts "\techo >&2 extension disabled" + end +end -- cgit v1.2.3-24-ge0c7