def check_cairo(options={})
return false unless PKGConfig.have_package('cairo')
rcairo_source_dir = options[:rcairo_source_dir]
if rcairo_source_dir and !File.exist?(rcairo_source_dir)
rcairo_source_dir = nil
end
$CFLAGS += " -I#{rcairo_source_dir}/ext/cairo" if rcairo_source_dir
have_rb_cairo_h = have_header('rb_cairo.h')
unless have_rb_cairo_h
begin
require 'rubygems'
rcairo_gem = Gem.cache.find_name("cairo").sort_by do |gem|
gem.version
end.last
if rcairo_gem
rcairo_source_dir = rcairo_gem.full_gem_path
rb_cairo_h_dir = File.join(rcairo_source_dir, "ext", "cairo")
$CFLAGS += " -I#{rb_cairo_h_dir} "
have_rb_cairo_h = have_header('rb_cairo.h')
else
require "cairo"
rcairo_source_dir = File.dirname($".grep(/cairo\.(?!rb\z)\w+\z/).first)
rb_cairo_h_dir = rcairo_source_dir
$CFLAGS += " -I#{rcairo_h_dir} "
have_rb_cairo_h = have_header('rb_cairo.h')
end
rescue LoadError
end
end
if have_rb_cairo_h
if /mingw|cygwin|mswin32/ =~ RUBY_PLATFORM
options = {}
build_dir = "tmp/#{RUBY_PLATFORM}/cairo/#{RUBY_VERSION}"
if File.exist?(File.join(rcairo_source_dir, build_dir))
options[:target_build_dir] = build_dir
end
add_depend_package("cairo", "ext/cairo", rcairo_source_dir, options)
$defs << "-DRUBY_CAIRO_PLATFORM_WIN32"
end
end
have_rb_cairo_h
end