msvc の環境を作る前に ruby をビルドするには ruby がいるので、特に何も考えないで RubyInstaller2 を入れる。噂だと 2 というのは msys2 の 2 という話があるけど真偽はわかりません。
ポチポチ ok をクリックして C:\opt\Ruby24-x64
にインストールしてから、msys2 の build toolchain も一緒に入れてから、msys2 以外からも使えるように PATH を通して終わり。
無事 Ruby が Windows に入ったので Visual Studio を使って msvc な Ruby のビルド環境を作っていく。
ちょっと書くのが遅くなって、すでに成瀬さんが 2017年のruby-mswin事情 - なるせにっき という感じで vcpkg を使って最短で構築する手順がまとまっているので、こっちでは openssl, zlib を手で入れてビルドするという手順を書いていきます。
ディレクトリ構成は今までの流れにそって C:\opt\local\src\github.com\ruby\ruby
にソースコードを置いて、C:\opt\ruby.build\
の下にアーキテクチャ毎に vs2017-x64, vs2015-x86 というように適当にフォルダを掘る。
まずはコンパイラがないと話にならないので、成瀬さんのエントリに書いてあるパッケージか、Visutal Studio Community などを使ってインストールをする。2013 だと、Windows SDK とか選択しないと rc.exe
が無くて右往左往するので、C 関連と Windows SDK はインストールした方が良いようです。この辺、結局最小が何なのかは自分もよくわからない...
OpenSSL を自分でビルドするのはめんどいので、自分は LibreSSL を使うことにしている。
https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/
上の URL から最新版(2017/06 時点は 2.5.4)の windows バイナリをダウンロードして C:\opt\libressl-2.5.4-windows
などに展開して、x86, x64 それぞれのディレクトリの libssl-43.lib を ssl.lib へ、libcrypto-41.lib を crypto.lib へコピーしてリネーム。
(これ、 usa さんがリネームしなくても動くようにしたんだっけ...?)
zlib も https://zlib.net/ からソースコードをダウンロードして C:\opt\zlib-1.2.11
などへ展開。Visual Studio の "x64 Native Tools Command Prompt for VS 2017" などから展開したフォルダに移動して
nmake -f win32\Makefile.msc
で dll や lib などをビルド、これもアーキテクチャごとに用意しておきたいので x86 と x64 それぞれでビルドしてできたものを C:\opt\zlib-1.2.11\x64
などというように手動でコピーしておく。
ここまで来たら以外と楽で、Ruby のビルドディレクトリからソースコードディレクトリにある configure.bat を実行する。以下はビルドオプションの例です。
x86 用
..\..\local\src\github.com\ruby\ruby\win32\configure.bat --without-ext=+,dbm,gdbm,readline --enable-bundled-libffi --with-zlib-include=C:/opt/zlib-1.2.11 --with-zlib-lib=C:/opt/zlib-1.2.11/x86 --with-openssl-include=C:/opt/libressl-2.5.4-windows/include --with-openssl-lib=C:/opt/libressl-2.5.4-windows/x86
x64 用
..\..\local\src\github.com\ruby\ruby\win32\configure.bat --without-ext=+,dbm,gdbm,readline --enable-bundled-libffi --with-zlib-include=C:/opt/zlib-1.2.11 --with-zlib-lib=C:/opt/zlib-1.2.11/x64 --with-openssl-include=C:/opt/libressl-2.5.4-windows/include --with-openssl-lib=C:/opt/libressl-2.5.4-windows/x64
上記を vs2013, vs2015, vs2017 と x86, x64 それぞれの組み合わせで実行して、それぞれ nmake
でビルドできます。次は msys2 版のビルド環境に続きます。