@anchor{Manual Configuration}
Некоторые типы свойств не могут быть определены автоматически путем
запуска тестовых программ. Например, детали реализации формата объектных
файлов или специальные ключи, которые необходимо передать компилятору
или компоновщику. Вы можете проверить такие свойства используя
специализированные возможности, такие как заставив configure
проверить вывод программы uname
или производя поиск библиотек,
специфических для отдельных систем. Однако Autoconf предоставляет
однообразный метод для обработки неопределяемых свойств.
@anchor{Specifying Names}
Подобно другим скриптам GNU configure
, созданные Autoconf скрипты
configure
могут делать заключение основываясь на каноническом
имени типа системы, которое имеет форму:
cpu-company-system
configure
обычно может определить каноническое имя типа системы
на которой он запущен. Для этого он запускает скрипт с именем
config.guess
, который определяет имя, используя команду
uname
или символы определенные препроцессором C.
В качестве альтернативы, пользователь может указать тип системы как
аргумент командной строки скрипта configure
. Это необходимо
сделать, если вы хотите использовать кросс-компиляцию. В большинстве
сложных случаев кросс-компиляции будут вовлечены три типа систем. Для их
указания используются следующие ключи:
--build=build-type
--host=host-type
--target=target-type
Если пользователь задает configure
неключевой аргумент, то он
используется как значение по умолчанию для всех типов систем, если
только пользователь не указал типы явно для систем с помощью ключей
командной строки. Если типы целевой и собирающей систем не заданы, а
задан тип системы на которой будет запускаться пакет, то они равны
заданному значению. Если вы используете кросс-компиляцию, то вам
необходимо указать в командной строке скрипта configure
имена
используемых вами кросс-утилит, в частности компилятора С, например,
CC=m68k-coff-gcc configure --target=m68k-coff
configure
распознает короткие алиасы для многих типов систем;
например, в командной строке может быть задано имя `decstation'
вместо `mips-dec-ultrix4.2'. configure
запускает скрипт с
именем config.sub
для канонизации алиасов типов систем.
@anchor{Canonicalizing}
Следующие макросы делают тип системы доступным для скриптов
configure
. Они запускают скрипт командного процессора
config.guess
для определения значений для каждого из типов
систем, в которых они нуждаются, и которые пользователь не указал в
командной строке. Они запускают config.sub
для канонизации
заданных пользователем псевдонимов. Если вы используете эти макросы, то вы
должны распространять эти два файла вместе с вашим исходным
кодом. See section Создание выходных файлов, для получения информации о макросе
AC_CONFIG_AUX_DIR
, который вы можете использовать для контроля
того, в каком именно каталоге configure
будет искать эти
файлы. Если вы не используете ни один из этих макросов, то
configure
игнорирует заданные ключи `--host',
`--target' и `--build'.
AC_CANONICAL_SYSTEM
, относящуюся к
определению типа системы, на которой будет запускаться пакет. Это все,
что необходимо для программ, которые не входят в набор утилит
компилятора.
@anchor{System Type Variables}
После вызова AC_CANONICAL_SYSTEM
информация о типе системы
содержится в нижеперечисленных выходных переменных. После
AC_CANONICAL_HOST
устанавливаются только те из перечисленных
переменных, чьи имена начинаются на host
.
build
, host
, target
build_alias
, host_alias
, target_alias
config.guess
;
build_cpu
, build_vendor
, build_os
host_cpu
, host_vendor
, host_os
target_cpu
, target_vendor
, target_os
@anchor{Using System Type}
Как использовать канонический тип системы? Обычно вы используете его в
одном или нескольких операторах case
в `configure.in' для
выбора специфических для системы файлов C. Затем делает ссылки на
файлы, чьи имена содержат информацию о системе, чтобы они назывались также
своим обобщенным именем, например, `host.h' или `target.c'. Шаблоны
в операторе case
могут использовать специальные символы командного процессора
для группировки нескольких вариантов вместе, например как в таком
фрагменте:
case "$target" in i386-*-mach* | i386-*-gnu*) obj_format=aout emulation=mach bfd_gas=yes ;; i960-*-bout) obj_format=bout ;; esac
AC_OUTPUT
сделать ссылку с каждого файла из списка
source на соответствующий файл с именем dest. Если это
возможно, то создается символьная ссылка, иначе создается жесткая
ссылка. Имена dest и source должны быть заданы относительно
каталога верхнего уровня с исходными текстами или каталога, в котором
происходит сборка. Этот макрос может быть вызван неоднократно.
Например, такой вызов:
AC_LINK_FILES(config/${machine}.h config/${obj_format}.h, host.h object.h)
создает в текущем каталоге файл `host.h', который является ссылкой на `srcdir/config/${machine}.h', и `object.h', который является ссылкой на `srcdir/config/${obj_format}.h'.
Вы также можете использовать тип системы, на которой будет запускаться
программа, для поиска утилит кросс-компиляции. See section Общие программы и проверки файлов, для информации о макросе AC_CHECK_TOOL
, который
выполняет это.
Go to the first, previous, next, last section, table of contents.