From f58ff1ba12a0bbd52ff59e2e8b780004c5edfe9e Mon Sep 17 00:00:00 2001 From: drbrain Date: Mon, 10 Dec 2012 00:40:39 +0000 Subject: * lib/rubygems/ext/cmake_builder.rb: Added a builder for cmake. * lib/rubygems/ext.rb: ditto. * lib/rubygems/installer.rb: ditto. * test/rubygems/test_gem_ext_cmake_builder.rb: Test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rubygems/ext.rb | 1 + lib/rubygems/ext/cmake_builder.rb | 14 ++++++++++++++ lib/rubygems/installer.rb | 2 ++ 3 files changed, 17 insertions(+) create mode 100644 lib/rubygems/ext/cmake_builder.rb (limited to 'lib') diff --git a/lib/rubygems/ext.rb b/lib/rubygems/ext.rb index 97ee762a4a..b2bb09aad5 100644 --- a/lib/rubygems/ext.rb +++ b/lib/rubygems/ext.rb @@ -15,4 +15,5 @@ require 'rubygems/ext/builder' require 'rubygems/ext/configure_builder' require 'rubygems/ext/ext_conf_builder' require 'rubygems/ext/rake_builder' +require 'rubygems/ext/cmake_builder' diff --git a/lib/rubygems/ext/cmake_builder.rb b/lib/rubygems/ext/cmake_builder.rb new file mode 100644 index 0000000000..d6d106f4ae --- /dev/null +++ b/lib/rubygems/ext/cmake_builder.rb @@ -0,0 +1,14 @@ +class Gem::Ext::CmakeBuilder < Gem::Ext::Builder + def self.build(extension, directory, dest_path, results) + unless File.exist?('Makefile') then + cmd = "cmake . -DCMAKE_INSTALL_PREFIX=#{dest_path}" + cmd << " #{Gem::Command.build_args.join ' '}" unless Gem::Command.build_args.empty? + + run cmd, results + end + + make dest_path, results + + results + end +end diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb index 2b7c821727..6c2e6ce5a3 100644 --- a/lib/rubygems/installer.rb +++ b/lib/rubygems/installer.rb @@ -667,6 +667,8 @@ TEXT when /rakefile/i, /mkrf_conf/i then ran_rake = true Gem::Ext::RakeBuilder + when /CMakeLists.txt/ then + Gem::Ext::CmakeBuilder else message = "No builder for extension '#{extension}'" extension_build_error extension_dir, message -- cgit v1.2.3