FortranプログラムをSConsでビルドする

前置き

とある方からFortranソースコードを頂いて、ご丁寧にもMakefileまで付けてくれていたのですが、
まあMakefileなんてもう古いですよね。

そこでmakeからSConsにビルドツールを変更しました。
SCons: A software construction tool - SCons

ビルドツールといえば、OMakeとかCMakeとかもあるのですが
OMakeだとFortranの対応状況が不明。CMakeは使ったこと無いしよく知りませんけどちょっと大げさな印象。configureとか使ってたわけではないし、単純にmakeの代わりが欲しいだけだったのでCMakeは見送り。

SConsはFortran用のモジュールがあるそうですし、Pythonで設定ファイルを書けます。
大規模開発になるとビルドに時間がかかるようになるそうですが、そんな大規模なもの作らないので問題なし。所詮数値計算で使うファイル数なんて大したことないでしょう(少なくとも私の使う範囲では)。

使い方

SConsではSConstructという設定ファイルにビルドルールを書いて行きます。makeでいうMakefileです。
私が使ってる状況は非常に簡単で、ディレクトリ内にある*.f90ソースをすべて使ってコンパイルします。
あと、blaslapackライブラリをリンクするだけです。

SConstructファイルはこんな感じです。

#SConstruct
import os
env = Environment(ENV=os.environ)
env.Program(target='calculation',source=Glob('*.f90'),LIBS=['blas','lapack'])

calculationが実行ファイル名です(安直)。sourceのところにソースコードのファイル名を指定します。私の場合ディレクトリ内のすべてのf90ファイルだったので、非常に簡単。LIBSでリンクするライブラリを指定。
これで、それぞれの依存関係をすべてチェックしてくれるようになります。
簡単ですね。

コンパイル

$ scons -Q

とかやれば、勝手にやってくれます。私はvimから:makeと打つのが癖になってるので
sconsを呼び出すMakefileを書きました(無駄..)
いわゆるmake cleanとかは

$ scons -c

でやってくれるそうです。SConsすばらしい。