diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rubygems/ext.rb | 1 | ||||
-rw-r--r-- | lib/rubygems/ext/cmake_builder.rb | 14 | ||||
-rw-r--r-- | lib/rubygems/installer.rb | 2 |
3 files changed, 17 insertions, 0 deletions
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 |