[ruby-core:96940] [Ruby master Feature#16517] mkmf.rb - changes for Windows ?
From:
nobu@...
Date:
2020-01-19 05:04:18 UTC
List:
ruby-core #96940
Issue #16517 has been updated by nobu (Nobuyoshi Nakada).
MSP-Greg (Greg L) wrote:
> I propose two changes to mkmf.rb to make it more Windows friendly.
>
> 1) mingw
What is `devkit`?
Is it https://rubygems.org/gems/devkit ?
It doesn't look special for MinGW.
> 2) mswin - most compile tools other than msvc will find libraries without a lib prefix.
> Adding something similar to above two items would remove the need for Windows specific build code in many extension gems.
Until such gems remove the code, it won't repeat same compilations 4 times?
----------------------------------------
Feature #16517: mkmf.rb - changes for Windows ?
https://bugs.ruby-lang.org/issues/16517#change-83967
* 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: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>