automake - Сканирование файла configure.in
Go to the first, previous, next, last section, table of contents.
Сканирование файла `configure.in'
Для определения разной информации о данном пакете 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
-
Automake использует этот макрос для определения того, какие файлы
необходимо создавать (see section `Создание выходных файлов' in Руководство Autoconf). Файлы с именем `Makefile' из
этого списка считаются файлами для программы
make
. Остальные файлы интерпретируются по разному. В настоящее время отличие состоит лишь в том, что файлы `Makefile' удаляютсяmake distclean
, тогда как другие файлы удаляются командойmake clean
.
Другие вещи, которые распознает Automake
Также Automake распознает использование некоторых макросов и в соответствии с ними генерирует `Makefile.in'. Вот список распознаваемых макросов и результатов их работы:
AC_CONFIG_HEADER
-
Automake требует использования макроса
AM_CONFIG_HEADER
, который похож наAC_CONFIG_HEADER
(see section `Заголовочные файлы настройки' in Руководство Autoconf), но кроме этого выполняет полезную работу, специфичную для Automake. AC_CONFIG_AUX_DIR
- Automake будет искать различные вспомогательные скрипты, такие как `mkinstalldirs', в каталоге, указанном в качестве параметра макроса. Если скрипты там не обнаружены, то они ищутся в их стандартном месте (в каталоге верхнего уровня пакета, либо в каталоге исходных текстов, соответствующем текущему файлу `Makefile.am'). See section `Hахождение ввода `configure'' in Руководство Autoconf.
AC_PATH_XTRA
-
Automake при выполнении этого макроса для каждого файла
`Makefile.in', который компилирует программу или библиотеку на C,
поместит туда определения переменных, указанных в
AC_PATH_XTRA
. See section `Системные сервисы' in Руководство Autoconf. AC_CANONICAL_HOST
AC_CHECK_TOOL
- Automake обеспечит существование файлов `config.guess' и `config.sub'. Также в файле `Makefile' появятся переменные `host_alias' и `host_triplet'. Смотрите section `Получение канонического типа системы' in Руководство Autoconf, и section `Проверка базовых программ' in Руководство Autoconf.
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 обеспечит генерацию соответствующих зависимостей для объектов,
относящихся к этим макросам. Также Automake проверит, что
соответствующие файлы исходных текстов являются частью дистрибутива.
Заметьте, что Automake поставляется без исходных текстов на C, которые
требуются для использования этих макросов, так что
automake -a
не сможет установить их. За дополнительной информацией см. See section Построение библиотеки. Также смотри section `Проверка отдельных функций' in Руководство Autoconf. LIBOBJS
-
Automake также обнаружит операторы, которые помещают файлы с расширением
`.o' в
LIBOBJS
, и будет обрабатывать эти дополнительные файлы так, как если бы они описывались макросомAC_REPLACE_FUNCS
. See section `Проверка базовых функций' in Руководство Autoconf. AC_PROG_RANLIB
- Этот макрос требуется, если в пакете собирается какая-нибудь библиотека. See section `Проверка отдельных программ' in Руководство Autoconf.
AC_PROG_CXX
- Требуется если в пакет входят исходные тексты на языке C++. See section `Проверка отдельных программ' in Руководство Autoconf.
AC_PROG_F77
- Требуется, если в пакет будут включаться исходные тексты на Fortran 77. Этот макрос распространяется с Autoconf версии 2.13 и более поздних. See section `Проверка отдельных программ' in Руководство Autoconf.
AC_F77_LIBRARY_LDFLAGS
- Этот макрос требуется для программ и разделяемых библиотек, которые написаны на разных языках и включают Fortran 77 (see section Использование Fortran 77 с C и C++). See section Макросы Autoconf, поставляемые с Automake.
AM_PROG_LIBTOOL
-
Automake включит поддержку
libtool
(see section `Введение' in Руководство Libtool). AC_PROG_YACC
- Если в пакете есть исходный текст на Yacc, то вы должны либо использовать этот макрос, либо определить переменную `YACC' в файле `configure.in'. Рекомендуется использовать первый вариант (See section `Проверка отдельных программ' in Руководство Autoconf.)
AC_DECL_YYTEXT
- Этот макрос требуется, если в пакете есть исходный текст на Lex. See section `Проверка отдельных программ' in Руководство Autoconf.
AC_PROG_LEX
- Если есть исходный текст на Lex, то должен использоваться этот макрос. See section `Проверка отдельных программ' in Руководство Autoconf.
ALL_LINGUAS
- Если Automake обнаружит, что эта переменная установлена в файле `configure.in', то он проверит каталог `po', для того, чтобы обеспечить, что все указанные файлы с расширением `.po' существуют, и что указаны все существующие файлы `.po'.
AM_C_PROTOTYPES
- Это макрос требуется при использовании автоматической де-ANSI-фикации; смотри section Автоматическая де-ANSI-фикация.
AM_GNU_GETTEXT
- Этот макрос требуется для пакетов, которые используют пакет GNU gettext (see section Gettext). Он распространяется вместе с gettext. Если Automake находит этот макрос, то он проверяет, отвечает ли данный пакет некоторым требованиям gettext.
AM_MAINTAINER_MODE
-
Этот макрос добавляет ключ `--enable-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
- Для каждого из этих макросов, их первый аргумент автоматически определяется в качестве переменной в каждом сгенерированном файле `Makefile.in'. See section `Установка переменных вывода' in Руководство Autoconf, и section `Проверка основных переменных' in Руководство Autoconf.
Автоматическая генерация `aclocal.m4'
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
- Заставляет программу искать файлы с макросами в каталоге dir, вместо каталога, куда производилась установка программы. Этот ключ в основном используется для отладки.
--help
- Напечатать справку по ключам командной строки и закончить работу.
-I dir
- Добавляет каталог dir в список каталогов, в которых производится поиск файлов `.m4'.
--output=file
- Вывод производится в файл file, а не в файл `aclocal.m4'.
--print-ac-dir
-
Печатает имя каталога, в котором
aclocal
будет производить поиск файлов `.m4'. При задании этого ключа подавляется обычная обработка. Этот ключ используется пакетом для определения места, куда будет производиться установка файлов с макросами. --verbose
- Печатает имена обрабатываемых файлов.
--version
- Выдает номер версии и заканчивает работу.
Макросы Autoconf, поставляемые с Automake
AM_CONFIG_HEADER
- При использовании этого макроса Automake сгенерирует правила для автоматической регенерации заголовочного файла конфигурации. Если вы используете этот макрос, то вы должны создать в каталоге исходных текстов файл `stamp-h.in'. Он может быть пустым.
AM_ENABLE_MULTILIB
- Этот макрос используется, когда будет строиться "мульти-библиотека". "Мульти-библиотека" компилируется несколько раз, по разу на каждую комбинацию флагов компиляции. Это полезно только в тех случаях, когда библиотека предназначена для кросс-компиляции. Первым необязательным аргументом макроса является имя создаваемого файла `Makefile'; значением по умолчанию является `Makefile'. Второй аргумент используется для нахождения каталога верхнего уровня исходных текстов; по умолчанию используется пустая строка (обычно этот аргумент не следует использовать, если вы не знакомы с внутренним устройством).
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
- Проверка наличия кода GNU obstacks; если код не найден, то добавить строку `obstack.o' к переменной `LIBOBJS'.
AM_C_PROTOTYPES
- Проверяет, распознает ли компилятор прототипы функций. Если это происходит, то определяет переменную `PROTOTYPES' и устанавливает выходные переменные `U' и `ANSI2KNR' в пустую строку. В противном случае, устанавливает `U' равным `_', а `ANSI2KNR' в `./ansi2knr'. Automake использует эти значения для реализации автоматической де-ANSI-фикации.
AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
-
Если использование
TIOCGWINSZ
требует наличия файла `<sys/ioctl.h>', то этот макрос определяет переменнуюGWINSZ_IN_SYS_IOCTL
. В противном случае поискTIOCGWINSZ
будет осуществляться в `<termios.h>'. AM_INIT_AUTOMAKE
-
Запускает множество макросов, в которых нуждается `configure.in'. Этот макрос
требует два аргумента -- имя пакета и номер версии. По умолчанию этот
макрос определяет через
AC_DEFINE
макросы `PACKAGE' и `VERSION'. Такого поведения можно избежать, передавая непустой третий аргумент. AM_PATH_LISPDIR
-
Ищет программу
emacs
, и если она найдена, то устанавливает выходную переменнуюlispdir
равной полному пути к каталогу `site-lisp' программы Emacs. AM_PROG_CC_STDC
-
Если по умолчанию компилятор C не работает в режиме ANSI C, то пробует
добавить опцию к переменно
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
-
Проверяет, доступны ли заголовочные файлы POSIX `termios' в данной
системе. Если это так, то переменная среды
am_cv_sys_posix_termios
устанавливается в значение `yes'. Если нет, то значением переменной будет являться `no'. AM_TYPE_PTRDIFF_T
- Определяет переменную `HAVE_PTRDIFF_T' в том случае, если тип `ptrdiff_t' определен в `<stddef.h>'.
AM_WITH_DMALLOC
-
Добавляет поддержку пакета
dmalloc
Если пользователь выполняет конфигурацию с ключом `--with-dmalloc', то
будет определена переменная
WITH_DMALLOC
и добавлен ключ `-ldmalloc' в переменнуюLIBS
. AM_WITH_REGEX
-
Добавляет `--with-regex' к ключам командной строки
configure
. Если этот ключ указан (по умолчанию), то используется библиотека регулярных выражений `regex', файл `regex.o' помещается в `LIBOBJS' и определяется переменная `WITH_REGEX'. Если задан ключ `--without-regex', то используется библиотека регулярных выражений `rx', а `rx.o' добавляется в переменную `LIBOBJS'.
Написание ваших собственных макросов aclocal
Программа 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.