From ce2b2389c6e0c7c6eb8e5fc5d0ec7803e2e1ad54 Mon Sep 17 00:00:00 2001 From: SHIBATA Hiroshi Date: Wed, 12 Jul 2017 13:22:44 +0900 Subject: [PATCH 1/3] Added cross compilation task for mingw platform --- Rakefile | 16 +++++++++++++++- bigdecimal.gemspec | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 4c625065..ad837967 100644 --- a/Rakefile +++ b/Rakefile @@ -3,7 +3,21 @@ require "rake" require "rake/extensiontask" require "rake/testtask" -Rake::ExtensionTask.new('bigdecimal') +spec = eval(File.read('bigdecimal.gemspec')) +Rake::ExtensionTask.new('bigdecimal', spec) do |ext| + ext.lib_dir = File.join(*['lib', ENV['FAT_DIR']].compact) + ext.cross_compile = true + ext.cross_platform = %w[x86-mingw32 x64-mingw32] + ext.cross_compiling do |s| + s.files.concat ["lib/2.2/bigdecimal.so", "lib/2.3/bigdecimal.so", "lib/2.4/bigdecimal.so"] + end +end + +desc "Compile binaries for mingw platform using rake-compiler-dock" +task 'build:mingw' do + require 'rake_compiler_dock' + RakeCompilerDock.sh "bundle && rake cross native gem RUBY_CC_VERSION=2.2.2:2.3.0:2.4.0" +end Rake::TestTask.new do |t| t.libs << 'test/lib' diff --git a/bigdecimal.gemspec b/bigdecimal.gemspec index 4efe438f..113f22b3 100644 --- a/bigdecimal.gemspec +++ b/bigdecimal.gemspec @@ -32,6 +32,7 @@ Gem::Specification.new do |s| s.add_development_dependency "rake", "~> 10.0" s.add_development_dependency "rake-compiler", "~> 0.9" + s.add_development_dependency "rake-compiler-dock", ">= 0.6.1" s.add_development_dependency "minitest", "~> 4.7.5" s.add_development_dependency "pry" end From e071e3a7596043ee87ea7a32b994c52a28949d56 Mon Sep 17 00:00:00 2001 From: SHIBATA Hiroshi Date: Wed, 12 Jul 2017 13:48:26 +0900 Subject: [PATCH 2/3] To use `Bundler::GemHelper.install_tasks instead of bundler/gem_tasks --- Rakefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index ad837967..09b00898 100644 --- a/Rakefile +++ b/Rakefile @@ -1,4 +1,6 @@ -require "bundler/gem_tasks" +require "bundler" +Bundler::GemHelper.install_tasks + require "rake" require "rake/extensiontask" require "rake/testtask" From bf7eee63bf953869591d425bea84153dfad6f789 Mon Sep 17 00:00:00 2001 From: SHIBATA Hiroshi Date: Wed, 12 Jul 2017 13:50:28 +0900 Subject: [PATCH 3/3] Added helper file for mingw binaries --- lib/bigdecimal.rb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 lib/bigdecimal.rb diff --git a/lib/bigdecimal.rb b/lib/bigdecimal.rb new file mode 100644 index 00000000..c9682deb --- /dev/null +++ b/lib/bigdecimal.rb @@ -0,0 +1,5 @@ +begin + require "#{RUBY_VERSION[/\d+\.\d+/]}/bigdecimal.so" +rescue LoadError + require 'bigdecimal.so' +end