From: "dsisnero (Dominic Sisneros)" Date: 2022-11-18T00:24:07+00:00 Subject: [ruby-core:110803] [Ruby master Feature#16517] mkmf.rb - changes for Windows ? Issue #16517 has been updated by dsisnero (Dominic Sisneros). As we are adding the ability to make gems from rust added in rubygems, can we come back to this and enable this or add some kind of hook to set shell environment - if a hook is added it would work for rubyinstaller and also Ruby MSVC/ by running vcvars64.bat or doing the equivalent in ruby. ---------------------------------------- Feature #16517: mkmf.rb - changes for Windows ? https://bugs.ruby-lang.org/issues/16517#change-100158 * Author: MSP-Greg (Greg L) * Status: Open * Priority: Normal ---------------------------------------- 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: