SMLUnit のインストールを統一して簡潔にした

SML用のユニットテストライブラリとして SMLUnit というライブラリがあります。
SML# プロジェクトの一部として開発されたようですが、現在は SML# 以外の処理系向けのコードは独立したリポジトリで管理されています。

現在対応している処理系は以下の4つです。

  • SML#
  • SML/NJ
  • MLton
  • Poly/ML

SML#については処理系のリポジトリに含まれているのでオマケです。
その他3つの処理系については対応はしていましたが、インストール方法が煩雑で手動で行う操作が多く要求されていました。

今回以下の3つのPRによって Makefile を追加、改良し、手順が統一的かつ簡潔になりました。

SML/NJ、MLton、Poly/ML いずれについても以下の形式でビルド、インストール、テストの実行が可能です。

$ make -f Makefile.[smlnj|mlton|polyml]
         [ smlunit-lib | smlunit-lib-nodoc
         | doc
         | install | install-nodoc
         | test
         | example ]

SML/NJ の pathconfig と MLton の mlb-path-map のエントリ追加については柔軟性が高すぎて Makefile で行う範囲を超えていると判断したため手動ですが、install ターゲットのメッセージとしてヒントを出すようにしたので考えることは減ったと思います。

SMLUnit$ make -f Makefile.smlnj install-nodoc PREFIX=~/.sml/smlnj/110.99
.. (snip) ..
val it = true : bool
-
================================================================
smlunit-lib has been installed to:
        /home/eldesh/.sml/smlnj/110.99/lib/smlunit-lib.cm
Next, add an entry to your pathconfig (e.g. ~/.smlnj-pathconfig) such like:
        smlunit-lib.cm /home/eldesh/.sml/smlnj/110.99/lib/smlunit-lib.cm
Then you can load the library like
        - CM.make "$/smlunit-lib.cm";
================================================================