おかゆ++

IT業界の片隅で生き残るブログ

MSYS2でVim8をコンパイル(Windows)

前提

2017/12/28時点の情報です! なるべく更新しますが、今後もこの通りとは限りません。

+perl、+python、+python3、+lua、+rubyが有効なVimコンパイルします。

基本的にはvim-jpの記事を参考にしますが、Perl、Python2、Python3、RubyはChocolateyでインストールします。 LuaもChocolateyでインストールしますが、ソース(lua.hなど)がダウンロードされないので、 ソースだけ別途取得します。

vim-jp.org

chocolateyでのインストール

choco install -y StrawberryPerl --version 5.26.1.1
choco install -y python2 --version 2.7.9
choco install -y python3 --version 3.6.4
choco install -y ruby --version 2.3.3
choco install -y lua53 --version 5.3.3

それぞれ、以下の場所にインストールされる。

  • python2:C:\tools\python2
  • python3:C:\Python36
  • RubyC:\tools\ruby23
  • PerlC:\Strawberry\perl
  • LuaC:\ProgramData\chocolatey\lib\lua53\tools

MSYS2の準備

pacman -Suuy
# ここで一度minttyを閉じて、再度開く
pacman -Suu
pacman -S git mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain
pacman -S python3

作業用のディレクトリ作成、ソースの取得

mkdir -p ~/src/vim
cd ~/src/vim
# Lua
wget http://www.lua.org/ftp/lua-5.3.3.tar.gz
tar xzvf lua-5.3.3.tar.gz
# Vim
git clone https://github.com/vim/vim.git

ビルド

cd ./vim/src
rm -rf ./build
mkdir -p ./build/vimfiles

# メッセージファイルを生成
python3 C:/Python36/tools/i18n/msgfmt.py ./po/ja.po

# ビルド(CUI)
mingw32-make -f Make_ming.mak  \
  GUI=no \
  ARCH=x86-64 \
  IME=yes \
  MBYTE=yes \
  ICONV=yes \
  FEAT_TERMGUICOLORS=yes \
  clean
mingw32-make -f Make_ming.mak \
  ARCH=x86-64 \
  IME=yes \
  MBYTE=yes \
  ICONV=yes \
  FEAT_TERMGUICOLORS=yes \
  PERL=C:/Strawberry/perl DYNAMIC_PERL=yes PERL_VER=526 \
  PYTHON=C:/tools/python2 DYNAMIC_PYTHON=yes PYTHON_VER=27 \
  PYTHON3=C:/python36 DYNAMIC_PYTHON3=yes PYTHON3_VER=36 \
  RUBY=C:/tools/ruby23 DYNAMIC_RUBY=yes RUBY_VER=23 RUBY_API_VER_LONG=2.3.0 \
  LUA=~/src/vim/lua-5.3.3/src DYNAMIC_LUA=yes LUA_VER=53 \
  GUI=no
cp vim.exe ./build/

# ビルド(GUI)
mingw32-make -f Make_ming.mak  \
  GUI=yes \
  ARCH=x86-64 \
  IME=yes \
  MBYTE=yes \
  ICONV=yes \
  FEAT_TERMGUICOLORS=yes \
  clean
mingw32-make -f Make_ming.mak \
  ARCH=x86-64 \
  IME=yes \
  MBYTE=yes \
  ICONV=yes \
  FEAT_TERMGUICOLORS=yes \
  PERL=C:/Strawberry/perl DYNAMIC_PERL=yes PERL_VER=526 \
  PYTHON=C:/tools/python2 DYNAMIC_PYTHON=yes PYTHON_VER=27 \
  PYTHON3=C:/python36 DYNAMIC_PYTHON3=yes PYTHON3_VER=36 \
  RUBY=C:/tools/ruby23 DYNAMIC_RUBY=yes RUBY_VER=23 RUBY_API_VER_LONG=2.3.0 \
  LUA=~/src/vim/lua-5.3.3/src DYNAMIC_LUA=yes LUA_VER=53 \
  GUI=yes \
  STATIC_STDCPLUS=yes \
  DIRECTX=yes
cp gvim.exe ./build/
cp vimrun.exe ./build/

# パッキング
cp C:/msys64/mingw64/bin/libiconv-2.dll ./build/
cp C:/msys64/mingw64/bin/libintl-8.dll ./build/
cp C:/msys64/mingw64/bin/libwinpthread-1.dll ./build/

cp C:/Strawberry/perl/bin/perl526.dll ./build/
cp C:/tools/ruby23/bin/x64-msvcrt-ruby230.dll ./build/
cp C:/Windows/System32/python27.dll ./build/
cp C:/Python36/python36.dll ./build/
cp C:/ProgramData/chocolatey/lib/lua53/tools/lua53.dll ./build/
cp -r ../runtime ./build/vim80
mkdir -p ./build/vim80/lang/ja/LC_MESSAGES
cp ./po/ja.mo ./build/vim80/lang/ja/LC_MESSAGES/vim.mo

# 実行ファイル置き場に移動
mkdir ~/bin/vim/
cp -r ./build/* ~/bin/vim/