AutoconfとかAutomakeを使ってインストールを楽にしたい

複数のソースコードから構成されるソフトウェアのコンパイルを楽にするために、automakeを使ってみる。Linuxでインストールするとき、configure→makeとするが、そのためのconfigureファイルを自動的に作ってくれるのがautoconf。
http://www.lkn.ei.tum.de/arbeiten/faq/guidelines/GNUMakeTutorial.pdf
をテキストにしていろいろと試す。テキストではCの例で説明しているが、Fortranでやりたいので、変えるべきところは適宜変えた。

Fortranコードを用意

fortranのテストコードを作成する。→ファイル名hello.f

Makefile.amを作成

Makefile.amファイルを作成する。内容は以下の通り。

bin_PROGRAMS = hello
hello_SOURCES = hello.f
configure.inファイルを作成

configure.inファイルを作成する。内容は以下の通り。0.1aは適当に決めたバージョン番号。Cの場合と違うのは、AC_PROG_FC、AC_PROG_F77のところ。

AC_INIT(hello.f) ←AC_INIT()でもよい
AM_INIT_AUTOMAKE(hello, 0.1a)
AC_PROG_FC
AC_PROG_F77
AC_PROG_INSTALL
AC_OUTPUT(Makefile)
configureファイルを作成
% aclocal
% autoconf
% automake -a

configureファイルを作ってくれるのだが、NEWS、README、AUTHORS、ChangeLogファイルがないためエラーとなる。そこでとりあえずこれらのファイルを作っておく。そうすればエラーを回避できる。

% touch NEWS REAME AUTHORS ChangeLog

再び、automake -aを実行すると、configureファイルが作成されている。

Makefileの作成とコンパイルの実行
% ./configure

Makefileを作る。gfortranとg77がコンパイラとして認識されるみたい。

% make
% ./hello

で実行までできた。

その他の処理
# make install

とすると/usr/localかどこかにファイルをコピーしようとする。

% make distcheck

でパッケージとしてtar.gzでまとめてくれる。今の場合、hello-0.01.tar.gzというファイルができる。

まとめ
  • ここまでで人間がやらなければいけなかったこと
    • Makefile.amを書く
    • configure.inを書く