diff options
Diffstat (limited to 'ext/bigdecimal/extconf.rb')
-rw-r--r-- | ext/bigdecimal/extconf.rb | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/ext/bigdecimal/extconf.rb b/ext/bigdecimal/extconf.rb index e565da891a..602c7d6162 100644 --- a/ext/bigdecimal/extconf.rb +++ b/ext/bigdecimal/extconf.rb @@ -1,6 +1,10 @@ # frozen_string_literal: false require 'mkmf' +def windows_platform? + /cygwin|mingw|mswin/ === RUBY_PLATFORM +end + gemspec_name = gemspec_path = nil unless ['', '../../'].any? {|dir| gemspec_name = "#{dir}bigdecimal.gemspec" @@ -17,8 +21,6 @@ bigdecimal_version = $defs << %Q[-DRUBY_BIGDECIMAL_VERSION=\\"#{bigdecimal_version}\\"] -alias __have_macro__ have_macro - have_func("labs", "stdlib.h") have_func("llabs", "stdlib.h") have_func("finite", "math.h") @@ -30,6 +32,38 @@ have_func("rb_rational_den", "ruby.h") have_func("rb_array_const_ptr", "ruby.h") have_func("rb_sym2str", "ruby.h") +if windows_platform? + library_base_name = "ruby-bigdecimal" + case RUBY_PLATFORM + when /cygwin|mingw/ + import_library_name = "libruby-bigdecimal.a" + when /mswin/ + import_library_name = "bigdecimal-$(arch).lib" + end +end + +checking_for(checking_message("Windows")) do + if windows_platform? + case RUBY_PLATFORM + when /cygwin|mingw/ + $DLDFLAGS << " $(srcdir)/bigdecimal.def" + $DLDFLAGS << " -Wl,--out-implib=$(TARGET_SO_DIR)#{import_library_name}" + when /mswin/ + $DLDFLAGS << " /DEF:$(srcdir)/bigdecimal.def" + end + $cleanfiles << import_library_name + true + else + false + end +end + create_makefile('bigdecimal') {|mf| mf << "\nall:\n\nextconf.h: $(srcdir)/#{gemspec_name}\n" + case RUBY_PLATFORM + when /mswin/ + mf << "\nall:\n\tdir $(TARGET_SO_DIR)" + else + mf << "\nall:\n\tls $(TARGET_SO_DIR)" + end } |