go to the first, previous, next, last section, table of contents.
для определения разной информации о данном пакете 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 `particular program checks' in the autoconf manual).
-
используйте макрос
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, $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 распознает использование некоторых макросов и в
соответствии с ними генерирует `makefile.in'. вот список
распознаваемых макросов и результатов их работы:
ac_config_header
-
automake требует использования макроса
am_config_header , который
похож на ac_config_header (see section `configuration header files' in the autoconf manual), но кроме
этого выполняет полезную работу, специфичную для automake.
ac_config_aux_dir
-
automake будет искать различные вспомогательные скрипты, такие как
`mkinstalldirs', в каталоге, указанном в качестве параметра
макроса. если скрипты там не обнаружены, то они ищутся в их
стандартном месте (в каталоге верхнего уровня пакета, либо в
каталоге исходных текстов, соответствующем текущему файлу
`makefile.am'). see section `finding `configure' input' in the autoconf manual.
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.
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
-
выдает номер версии и заканчивает работу.
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 сама по себе ничего не знает о каких-либо
макросах, поэтому ее очень легко расширять, создавая свои собственные
макросы.
эта возможность в основном используется библиотеками, которые хотят предоставить
собственные макросы autoconf для использования другими
программами. например, библиотека gettext предоставляет макрос
am_gnu_gettext , который должен быть использован любым пакетом,
использующим gettext . при установке библиотеки устанавливается
также этот макрос, чтобы программа aclocal смогла его найти.
файл макросов должен быть серией вызовов ac_defun . программа
aclocal также понимает директиву ac_require , так что
вполне безопасно помещать каждый макрос в отдельный
файл. see section `prerequisite macros' in руководство autoconf, и
section `макроопределения' in руководство autoconf.
имя файла макросов должно оканчиваться на `.m4'. такие файлы должны
устанавливаться в каталог `$(datadir)/aclocal'.
go to the first, previous, next, last section, table of contents.
|