GNU helloは,古 典的単純さと融通性で有名です.このセクションでは,AutomakeをGNU Hello パッケージに使用する方法を示します.以下の例は,GNU Helloの最近のベー タバージョンからのものですが,著作権のコメント全体と同様に,管理者専用 のすべてのコードが取り除かれています.
もちろん,GNU Helloは伝統的な二行より幾分長くなっています.GNU Helloは 国際化されていて,オプション処理をして,そしてマニュアルとテストスイー トもあります.
GNU Helloのconfigure.acは以下のようになっています.注意
して下さい: 例にあるAC_INITとAM_INIT_AUTOMAKEの呼出は,
推奨されない構文です.現在の手法は,Public macrosの
AM_INIT_AUTOMAKEの記述を参照して下さい.
dnl Process this file with autoconf to produce a configure script.
AC_INIT(src/hello.c)
AM_INIT_AUTOMAKE(hello, 1.3.11)
AM_CONFIG_HEADER(config.h)
dnl Set of available languages.
ALL_LINGUAS="de fr es ko nl no pl pt sl sv"
dnl Checks for programs.
AC_PROG_CC
AC_ISC_POSIX
dnl Checks for libraries.
dnl Checks for header files.
AC_STDC_HEADERS
AC_HAVE_HEADERS(string.h fcntl.h sys/file.h sys/param.h)
dnl Checks for library functions.
AC_FUNC_ALLOCA
dnl Check for st_blksize in struct stat
AC_ST_BLKSIZE
dnl internationalization macros
AM_GNU_GETTEXT
AC_OUTPUT([Makefile doc/Makefile intl/Makefile po/Makefile.in \
src/Makefile tests/Makefile tests/hello],
[chmod +x tests/hello])
`AM_'マクロは,Automake(あるいはGettextライブラリ)によって提供さ れています.残りは標準的なAutoconfマクロです.
最上位のMakefile.amは以下のようになっています.
EXTRA_DIST = BUGS ChangeLog.O
SUBDIRS = doc intl po src tests
御覧のように,ここでの仕事はすべてサブディレクトリで実際に実行されます.
poとintlディレクトリは,gettextizeを使用すること
で自動的に生成されます.それらについてはここで述べません.
info_TEXINFOS = hello.texi
hello_TEXINFOS = gpl.texi
これで,GNU Helloマニュアルをビルドして,インストールして,そして配布 するには十分です.
tests/Makefile.amは以下のようになっています.
TESTS = hello
EXTRA_DIST = hello.in testdata
helloスクリプトは,configureにより生成され,それはテスト
ケースのみで生成されます.make checkでこのテストを実行します.
最後はsrc/Makefile.amで,実際にすべての仕事が行なわれる場所で す.
bin_PROGRAMS = hello
hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
hello_LDADD = $(INTLLIBS) $(ALLOCA)
localedir = $(datadir)/locale
INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\"