Bug: https://bugs.gentoo.org/show_bug.cgi?id=618878 A few patches to make crossdev for mingw-w64 play nice with ruby's ebuilds. Basic gist is that without the following patch to configure.in ruby-2.4.1 hardcodes 240 into the shared, static, and import library names, which when built with the current ruby ebuilds results in names like libx64-msvcrt-ruby24240.dll and so on. The patch is in ruby-trunk[1], but may take a while to hit the tarballs that gentoo uses. Index: configure.in =================================================================== --- a/configure.in (revision 57824) +++ b/configure.in (revision 57825) @@ -3825,7 +3825,23 @@ AC_ARG_WITH(soname, AS_HELP_STRING([--with-soname=SONAME], [base name of shared library]), - [RUBY_SO_NAME=$withval], [RUBY_SO_NAME='$(RUBY_BASE_NAME)']) + [RUBY_SO_NAME=$withval], + [ + AS_CASE(["$target_os"], + [darwin*], [ + RUBY_SO_NAME='$(RUBY_BASE_NAME).$(RUBY_PROGRAM_VERSION)' + ], + [cygwin*], [ + RUBY_SO_NAME='$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)0' + ], + [mingw*], [ + RUBY_SO_NAME="${rb_cv_msvcrt}"'-$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)0' + AS_IF([test x"${target_cpu}" != xi386], [ + RUBY_SO_NAME="${target_cpu}-${RUBY_SO_NAME}" + ]) + ], + [RUBY_SO_NAME='$(RUBY_BASE_NAME)']) + ]) LIBRUBY_LDSHARED=$LDSHARED LIBRUBY_DLDFLAGS=$DLDFLAGS @@ -3925,7 +3941,6 @@ SOLIBS='-lm -lc' ], [darwin*], [ - RUBY_SO_NAME="$RUBY_SO_NAME"'.$(RUBY_PROGRAM_VERSION)' LIBRUBY_LDSHARED='$(CC) -dynamiclib' if test "$load_relative" = yes; then libprefix="@executable_path/../${libdir_basename}" @@ -4157,7 +4172,6 @@ fi ], [cygwin*|mingw*], [ - RUBY_SO_NAME="${RUBY_SO_NAME}"'$(MAJOR)$(MINOR)0' LIBRUBY_DLDFLAGS="${DLDFLAGS}"' -Wl,--out-implib=$(LIBRUBY)' AS_CASE(["$target_os"], [cygwin*], [ @@ -4167,10 +4181,6 @@ fi ], [mingw*], [ - RUBY_SO_NAME="${rb_cv_msvcrt}-${RUBY_SO_NAME}" - if test x"${target_cpu}" != xi386; then - RUBY_SO_NAME="${target_cpu}-${RUBY_SO_NAME}" - fi if test x"$enable_shared" = xyes; then LIBRUBY_SO='$(RUBY_SO_NAME)'.dll LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' $(RUBYDEF)'