Concurrent Clean : Linux
Linux環境でCleanを使う場合には、公式ホームページからバイナリパッケージをとってくるかソースパッケージを取ってきてmakeするかして実行ファイルを取得した後に、それらのファイルを配置することになるのだけれど、そこのところについてちょっと解説しておこうかと思います。
いちおう、make installでもよいのですが、あまり気の利いた感じではないので、ファイルの配置を環境に合わせて自分で設定したいと思うと思うので。
まず、制限として、Cleanのライブラリは、自分のホームフォルダの下に配置するべきです。というのは、Cleanプログラムのコンパイルの際に、ライブラリをリコンパイルすることがあるからです。なので、複数のユーザーが同時にコンパイルを行うことは想定していない作りになっているからです。
Cleanの配布版の構成は次のようになっています。(ObjectIOライブラリについては省略)
bin/ clm patch_bin htoclean exe/ cocl cg linker man/man1/ clm.1 stdenv/ data/ ArgEnv/ Generics/ StdLib/
Cleanのコンパイラのフロントエンドはclmで、これがcocl(コンパイラ)、cg(コードジェネレータ)、linker(リンカ)を呼び出します。patch_binはclmの環境設定をするツールですが、Clean2.2では環境変数で環境設定できるので、使う必要はありません。htocleanはCのヘッダファイルCleanのラッパープログラムを作成するツールらしいです(使ったことはないです)
ライブラリは、stdenvディレクトリとdataディレクトリ以下にあるディレクトリです。
manの下には、clmのマニュアルファイルがありますが、これは、/usr/local/man/man1/以下にでもいれておくとよいと思います。
実行ファイルとライブラリの配置ですが、私は次のように配置するのが好みなので、それを例にして説明をします。
~/bin/ clm patch_bin htoclean cocl cg linker ~/lib/clean2.2/ stdenv/ ArgEnv/ Generics/ StdLib/
設定するべき環境変数は、CLEANPATHとCLEANLIBの2つです。CLEANPATHは、Cleanのライブラリのパスを':'で連結して記述します。CLEANLIBはclmから呼び出すcocl,cg,linkerが配置されているディレクトリのパスを設定します。
bashを使っている場合は、.bash_profileに次のように書きます。
CLEANDIR=~/lib/clean2.2 export CLEANPATH=$CLEANDIR/stdenv:$CLEANDIR/StdLib:$CLEANDIR/ArgEnv:$CLEANDIR/Generics export CLEANLIB=~/bin
これで、Cleanが使えるようになります。clmにあたえる引数は、manを引けば説明があります。