autotools (2)
とりあえずイキオイでがつっとヤれるだけトライ。
configure.ac
中身が以下。
dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) AC_INIT([foonly], [2.0], [gary@gnu.org]) AM_INIT_AUTOMAKE([1.9 foreign]) AC_PROG_CC AM_PROG_LEX AC_PROG_YACC AC_CONFIG_FILES([Makefile]) AC_OUTPUT
むむ、とウナりつつマクロのリファレンス見ても出てないのがあるしー、とか言ってると監注に info 見れ、って書いてある。
あと以下なソレも見つけた。
とりあえず info で色々確認。現時点で dnl はコメント記号みたいなモノだと見ておきます。
副作用として、次の改行文字までのすべての入力 (その改行文字も含みます) を廃棄します。
とある。(GNU Autoconf/Automake/Libtool より引用)
AC_PREREQ
ええと info によれば
Ensure that a recent enough version of Autoconf is being used. If the version of Autoconf being used to create `configure' is earlier than VERSION, print an error message on the standard error output and do not create `configure'.
とある。ちなみに configure.ac を以下にして
dnl AC_PREREQ(2.59) AC_PREREQ(2.62)
autoconf に吸わせてみたら以下との事。
# autoconf のバージョンは 2.61 です
$ aclocal $ autoconf configure.ac:4: error: Autoconf version 2.62 or higher is required configure.ac:4: the top level autom4te: /usr/bin/m4 failed with exit status: 63 $
成程。次。
AC_INIT
info は若干分かりにくい。ので Standard configure.ac Layout を参考にしてみる (ってこれ info だし) と
AC_INIT(package, version, bug-report-address)
との記述あり。何故にブラケットでマクロの引数が囲んであるのかは微妙。で、unbound な configure.ac 見てみたら以下だった。
AC_INIT(unbound,1.0.2, unbound-bugs@nlnetlabs.nl, unbound)
あの括弧は何なんでしょうか。無くしてみたらどうなるかな。とゆーコトで
>>|
dnl AC_INIT([foonly], [2.0], [gary@gnu.org])
AC_INIT(foonly, 2.0, gary@gnu.org)
|
としてみたけど動作は変わらず。引用符だと思っておきます。とりあえずググッてみたら autoconf詳細にて 4 番目の引数はソースを tar でカタめた時のファイル名を指定、とある。
あるいは 新しめの Autotools(Autoconf & Automake) を使ってみよう によれば
- AC_PREREQ
- AC_INIT
- AM_INIT_AUTOMAKE
は定型との事ですが、unbound な configure.ac では AC_INIT_AUTOMAKE マクロは使われていない模様。渡してる引数が微妙なんですが、ググッた所では引数指定の必要はあまり無い模様。なのでここでナニしているソレはスルーの方向で。
以降
以下三点は
- AC_PROG_CC
- AC_PROG_LEX
- AC_PROG_YACC
使えるかをチェックして環境変数 (ケツのソレ) に設定、との事。次の二つはほぼ決め打ちらしい。
AC_CONFIG_FILES([Makefile]) AC_OUTPUT
AC_CONFIG_FILES についてはサブディレクトリがあって、そこにコンパイルが必要なソースがある場合、リスト表記で羅列が必要らしい。そこには Makefile.am を作成しないと、なシバりもあるとの事。
とりあえづ
ここに目を通してみる事に。なんかどっかで和訳されてるのを見たような気もしますがだらだら読んでみる事に。