Для определения разной информации о данном пакете Automake сканирует
файл `configure.in'. Также ему требуется
определение некоторых макросов и переменных autoconf
в файле
`configure.in'. Automake также использует информацию из файла
`configure.in' для определения параметров вывода.
Для того, чтобы облегчить сопровождение, Automake
предоставляет некоторые макросы Autoconf. Эти макросы могут быть
автоматически помещены в ваш файл `aclocal.m4' при использовании
программы aclocal
.
Чтобы удовлетворить основным требованиям Automake, можно использовать
макрос AM_INIT_AUTOMAKE
(see section Макросы Autoconf, поставляемые с Automake). Но если хотите, то
можете совершить требуемые шаги вручную:
PACKAGE
и VERSION
с помощью
AC_SUBST
.
Переменная PACKAGE
должна содержать имя пакета, в том виде, в
котором оно используется при создании дистрибутива. Например, Automake определяет
переменную PACKAGE
со значением `automake'. Переменная
VERSION
должна содержать номер разрабатываемой версии. Мы
рекомендуем хранить номер версии в единственном месте, а именно, в файле
`configure.in': это упрощает выпуск новых версий.
Automake не производит никакой интерпретации переменных PACKAGE
или VERSION
, за исключением работы в режиме `Gnits'
(see section Эффект использования ключей --gnu
и --gnits
).
AC_ARG_PROGRAM
. See section `Преобразование имен при установке' in Руководство Autoconf.
AC_PROG_MAKE_SET
если пакет не является
плоским. See section `Создание файлов вывода' in Руководство Autoconf.
AM_SANITY_CHECK
для того, чтобы убедиться, что
среда, в которой будет производится сборка пакета, является нормальной.
AC_PROG_INSTALL
(see section `Проверка отдельных программ' in Руководство Autoconf).
AM_MISSING_PROG
для того, чтобы убедиться, что
программы aclocal
, autoconf
, automake
,
autoheader
и makeinfo
находятся в среде в которой
производится сборка пакета. Вот как это сделано:
missing_dir=`cd $ac_aux_dir && pwd` AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) AM_MISSING_PROG(AUTOCONF, autoconf-ru, $missing_dir) AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
Вот список других макросов, которые требуются Automake, но которые не
запускаются макросом AM_INIT_AUTOMAKE
:
AC_OUTPUT
make
. Остальные
файлы интерпретируются по разному. В настоящее время
отличие состоит лишь в том, что файлы `Makefile' удаляются make
distclean
, тогда как другие файлы удаляются командой make clean
.
Также Automake распознает использование некоторых макросов и в соответствии с ними генерирует `Makefile.in'. Вот список распознаваемых макросов и результатов их работы:
AC_CONFIG_HEADER
AM_CONFIG_HEADER
, который
похож на AC_CONFIG_HEADER
(see section `Заголовочные файлы настройки' in Руководство Autoconf), но
кроме этого выполняет полезную работу, специфичную для Automake.
AC_CONFIG_AUX_DIR
AC_PATH_XTRA
AC_PATH_XTRA
.
See section `Системные сервисы' in Руководство Autoconf.
AC_CANONICAL_HOST
AC_CHECK_TOOL
AC_CANONICAL_SYSTEM
AC_CANONICAL_HOST
, но кроме этого он
определяет в файле `Makefile' переменные `build_alias' и
`target_alias'. See section `Получение канонического типа системы' in Руководство Autoconf.
AC_FUNC_ALLOCA
AC_FUNC_GETLOADAVG
AC_FUNC_MEMCMP
AC_STRUCT_ST_BLOCKS
AC_FUNC_FNMATCH
AM_FUNC_STRTOD
AC_REPLACE_FUNCS
AC_REPLACE_GNU_GETOPT
AM_WITH_REGEX
automake -a
не
сможет установить их. За дополнительной информацией
см. See section Построение библиотеки. Также смотри section `Проверка отдельных функций' in Руководство Autoconf.
LIBOBJS
LIBOBJS
, и будет обрабатывать эти дополнительные
файлы так, как если бы они описывались макросом AC_REPLACE_FUNCS
.
See section `Проверка базовых функций' in Руководство Autoconf.
AC_PROG_RANLIB
AC_PROG_CXX
AC_PROG_F77
AC_F77_LIBRARY_LDFLAGS
AM_PROG_LIBTOOL
libtool
(see section `Введение' in Руководство Libtool).
AC_PROG_YACC
AC_DECL_YYTEXT
AC_PROG_LEX
ALL_LINGUAS
AM_C_PROTOTYPES
AM_GNU_GETTEXT
AM_MAINTAINER_MODE
configure
. Если используется данный макрос, то automake
отключит правило `maintainer-only' в сгенерированных файлах
`Makefile.in'. Этот макрос не разрешен в режиме `Gnits' (see section Эффект использования ключей --gnu
и --gnits
).
Этот макрос определяет условную переменную `MAINTAINER_MODE', которую
можно использовать в ваших собственных файлах `Makefile.am'.
AC_SUBST
AC_CHECK_TOOL
AC_CHECK_PROG
AC_CHECK_PROGS
AC_PATH_PROG
AC_PATH_PROGS
Automake содержит некоторое количество макросов Autoconf, которые
могут быть использованы в вашем пакете; в некоторых ситуациях они
требуются для работы Automake. Эти макросы должны быть определены в
вашем файле `aclocal.m4'; иначе они не будут обнаружены программой
autoconf
.
Программа aclocal
автоматически создает файл `aclocal.m4' на
основе содержимого `configure.in'. Это обеспечивает удобный способ
для получения макросов Automake, без выполнения дополнительного
поиска. Механизм aclocal
является также расширяемым для
использования другими пакетами.
При запуске программа aclocal
производит поиск макроопределений
во всех файлах `.m4', которые она может найти. Затем она сканирует
`configure.in'. Любое упоминание одного из найденных на первом
этапе макросов приводит к тому, что этот макрос и все макросы,
требуемые для его работы, будут помещены в файл `aclocal.m4'.
Если файл `acinclude.m4' существует, то его содержимое также будет автоматически включено в `aclocal.m4'. Это полезно для включения локальных макросов в `configure'.
Программа aclocal
работает со следующими ключами командной строки:
--acdir=dir
--help
-I dir
--output=file
--print-ac-dir
aclocal
будет производить поиск
файлов `.m4'. При задании этого ключа подавляется обычная обработка.
Этот ключ используется пакетом для определения места, куда будет
производиться установка файлов с макросами.
--verbose
--version
AM_CONFIG_HEADER
AM_ENABLE_MULTILIB
AM_FUNC_STRTOD
strtod
недоступна, или работает неправильно (как в
SunOS 5.4), то строка `strtod.o' добавляется к выходной переменной
LIBOBJS
.
AM_FUNC_ERROR_AT_LINE
error_at_line
не найдена, то строка `error.o'
добавляется к LIBOBJS
.
AM_FUNC_MKTIME
mktime
. Если таковая
не найдена, то к переменной `LIBOBJS' добавляется `mktime.o'.
AM_FUNC_OBSTACK
AM_C_PROTOTYPES
AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
TIOCGWINSZ
требует наличия файла
`<sys/ioctl.h>', то этот макрос определяет переменную
GWINSZ_IN_SYS_IOCTL
. В противном случае поиск TIOCGWINSZ
будет осуществляться в `<termios.h>'.
AM_INIT_AUTOMAKE
AC_DEFINE
макросы `PACKAGE' и
`VERSION'. Такого поведения можно избежать, передавая непустой
третий аргумент.
AM_PATH_LISPDIR
emacs
, и если она найдена, то устанавливает
выходную переменную lispdir
равной полному пути к каталогу
`site-lisp' программы Emacs.
AM_PROG_CC_STDC
CC
, которая заставит его делать это.
Этот макрос пробует различные ключи командной строки
компилятора, которые включают режим ANSI C
на некоторых системах. Считается, что компилятор находится в режиме
ANSI C, если он корректно обрабатывает прототипы функций.
Если вы используете этот макрос, то вы должны проверить, что после его
вызова компилятор C будет работать в режиме ANSI C; если это не так, то
переменная среды am_cv_prog_cc_stdc
устанавливается в значение
`no'. Если вы написали свою программу в стандарте ANSI C, то вы
можете создать ее не-ANSI-фицированную копию, используя опцию
ansi2knr
(see section Автоматическая де-ANSI-фикация).
AM_PROG_LEX
AC_PROG_LEX
и AC_DECL_YYTEXT
(see section `Проверка отдельных программ' in Руководство Autoconf), но использует скрипт missing
на системах,
в которых нет lex
. Одной из таких систем является `HP-UX
10'.
AM_SANITY_CHECK
AM_INIT_AUTOMAKE
.
AM_SYS_POSIX_TERMIOS
am_cv_sys_posix_termios
устанавливается в значение `yes'.
Если нет, то значением переменной будет являться `no'.
AM_TYPE_PTRDIFF_T
AM_WITH_DMALLOC
WITH_DMALLOC
и добавлен ключ `-ldmalloc' в
переменную LIBS
.
AM_WITH_REGEX
configure
.
Если этот ключ указан (по умолчанию), то используется библиотека регулярных
выражений `regex', файл `regex.o' помещается в `LIBOBJS'
и определяется переменная `WITH_REGEX'. Если задан ключ `--without-regex',
то используется библиотека регулярных выражений `rx', а `rx.o'
добавляется в переменную `LIBOBJS'.
Программа aclocal
сама по себе ничего не знает о каких-либо
макросах, поэтому ее очень легко расширять, создавая свои собственные
макросы.
Эта возможность в основном используется библиотеками, которые хотят предоставить
собственные макросы Autoconf для использования другими
программами. Например, библиотека gettext
предоставляет макрос
AM_GNU_GETTEXT
, который должен быть использован любым пакетом,
использующим gettext
. При установке библиотеки устанавливается
также этот макрос, чтобы программа aclocal
смогла его найти.
Файл макросов должен быть серией вызовов AC_DEFUN
. Программа
aclocal
также понимает директиву AC_REQUIRE
, так что
вполне безопасно помещать каждый макрос в отдельный
файл. See section `Hеобходимые макросы' in Руководство Autoconf,
и section `Макроопределения' in Руководство Autoconf.
Имя файла макросов должно оканчиваться на `.m4'. Такие файлы должны устанавливаться в каталог `$(datadir)/aclocal'.
Go to the first, previous, next, last section, table of contents.