Windows で haskell-ide-engine をビルドする

手順

1. ソースコード取得。

git clone git@github.com:haskell/haskell-ide-engine.git

2. Unicode を扱う ICU の古いバージョンが要るので取得。

自分の使うバージョンの text-icuchangelog を見て、必要な ICU のバージョンを探す。執筆時点では 53 だった。

http://site.icu-project.org/download/53#TOC-ICU4C-Download

任意の場所に展開する。以降、展開先の箇所を $icu と表記する。

$icu\bin64 にある dll の名前を変える。(要らないかもしれない。) 管理者権限の cmd で下記を実行する。

mklink icuuc.dll icuuc53.dll

他の dll も同様に。

うまくバージョンが一致したとき

うまくバージョンが一致したときは上記のかわりに下記でもインストールできる

stack exec -- pacman -S mingw64/mingw-w64-x86_64-icu

このときはビルド時に --extra-include-dirs--extra-lib-dirs の指定が要らない。

3. ビルド

対象とする GHC のバージョンごとに stack.yaml があるのでバージョンを指定する。(8.0.2 は hie-0.1.0.0 ブランチにある。)オプションで ICU の場所を指定してやる。

stack --stack-yaml=stack-8.0.2.yaml --extra-include-dirs="$icu\include" --extra-lib-dirs="$icu\bin64" install

複数バージョンの GHC に対応できるように、stack path --local-bin が示すパスに生成された実行ファイルの名前を変える。Makefile を見ればどう変えるか書いてある。

copy hie hie-8.0.2
copy hie hie-8.0

4. dll にパスを通す

実行時に参照する必要があるので $icu\bin64 と stack path --extra-library-dirs の示すパスの bin ディレクトリーの方にパスを通す。(PATH 環境変数に追加する。)