require "mkmf" require "date" RMAGICK_VERS = "2.9.2" MIN_RUBY_VERS = "1.8.2" MIN_RUBY_VERS_NO = MIN_RUBY_VERS.tr(".","").to_i MIN_IM_VERS = "6.3.0" MIN_IM_VERS_NO = MIN_IM_VERS.tr(".","").to_i # Test for a specific value in an enum type def have_enum_value(enum, value, headers=nil, &b) checking_for "#{enum}.#{value}" do if try_compile(<<"SRC", &b) #{COMMON_HEADERS} #{cpp_include(headers)} /*top*/ int main() { #{enum} t = #{value}; t = t; return 0; } SRC $defs.push(format("-DHAVE_ENUM_%s", value.upcase)) true else false end end end # Test for multiple values of the same enum type def have_enum_values(enum, values, headers=nil, &b) values.each do |value| have_enum_value(enum, value, headers, &b) end end def exit_failure(msg) Logging::message msg message msg+"\n" exit(1) end # Seems like lots of people have multiple versions of ImageMagick installed. def check_multiple_imagemagick_versions() versions = [] path = ENV['PATH'].split(File::PATH_SEPARATOR) path.each do |dir| file = File.join(dir, "Magick-config") if File.executable? file vers = `#{file} --version`.chomp.strip prefix = `#{file} --prefix`.chomp.strip versions << [vers, prefix, dir] end end versions.uniq! if versions.size > 1 msg = "\nWarning: Found more than one ImageMagick installation. This could cause problems at runtime.\n" versions.each do |vers, prefix, dir| msg << " #{dir}/Magick-config reports version #{vers} is installed in #{prefix}\n" end msg << "Using #{versions[0][0]} from #{versions[0][1]}.\n\n" Logging::message msg message msg end end if RUBY_PLATFORM =~ /mswin/ abort <= #{MIN_RUBY_VERS}") do version = RUBY_VERSION.tr(".","").to_i version >= MIN_RUBY_VERS_NO end exit_failure "Can't install RMagick #{RMAGICK_VERS}. Ruby #{MIN_RUBY_VERS} or later required.\n" end unless checking_for("Ruby version >= 1.8.5") do version = RUBY_VERSION.tr(".","").to_i version >= 185 end msg = <= #{MIN_IM_VERS}") do version = `Magick-config --version`.chomp.tr(".","").to_i version >= MIN_IM_VERS_NO end exit_failure "Can't install RMagick #{RMAGICK_VERS}. You must have ImageMagick #{MIN_IM_VERS} or later.\n" end unless checking_for("ImageMagick version >= 6.3.5") do version = `Magick-config --version`.chomp.tr(".","").to_i version >= 635 end msg = <