From: nobu@... Date: 2020-01-19T12:47:24+00:00 Subject: [ruby-core:96945] [Ruby master Feature#16517] mkmf.rb - changes for Windows ? Issue #16517 has been updated by nobu (Nobuyoshi Nakada). duerst (Martin D�rst) wrote: > I don't think so. Please have a look at https://github.com/oneclick/rubyinstaller/wiki/Development-Kit. Thank you, I thought it might be one of RubyInstaller but couldn't find out. If so, it sounds a RubyInstaller specific file. If it is required always, non-RubyInstaller mingw build can't compile extensions anymore. And, as the name conflicts with the above gem, it is unable to install with rubygems. I think this part is unacceptable. ---------------------------------------- Feature #16517: mkmf.rb - changes for Windows ? https://bugs.ruby-lang.org/issues/16517#change-83972 * Author: MSP-Greg (Greg L) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- I propose two changes to mkmf.rb to make it more Windows friendly. 1) mingw - `devkit` has been the standard for 'enabling' compile tools in publicly available MinGW builds for quite a while. Could something like the following be added? Not sure whether to rescue on LoadError or not, or whether to output anything if it doesn't load. ```ruby if $mingw begin require 'devkit' rescue end end ``` 2) mswin - most compile tools other than msvc will find libraries without a lib prefix. Note the following code in extconf.rb for OpenSSL: ```ruby ret = have_library("crypto", "CRYPTO_malloc") && have_library("ssl", "SSL_new") return ret if ret if $mswin # OpenSSL >= 1.1.0: libcrypto.lib and libssl.lib. if have_library("libcrypto", "CRYPTO_malloc") && have_library("libssl", "SSL_new") return true end ``` If something like the following was added, the above wouldn't be needed: ```ruby if $mswin alias_method :orig_find_library, :find_library def find_library(lib, func, *paths, &b) orig_find_library(lib, func, *paths, b) || orig_find_library("lib#{lib}", func, *paths, b) end alias_method :orig_have_library, :have_library def have_library(lib, func = nil, headers = nil, opt = "", &b) orig_have_library(lib, func, headers, opt, b) || orig_have_library("lib#{lib}", func, headers, opt, b) end end ``` Adding something similar to above two items would remove the need for Windows specific build code in many extension gems. -- https://bugs.ruby-lang.org/ Unsubscribe: