[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Некоторые типы свойств не могут быть определены автоматически путем
запуска тестовых программ. Например, детали реализации формата объектных
файлов или специальные ключи, которые необходимо передать компилятору
или компоновщику. Вы можете проверить такие свойства, используя
специализированные возможности, такие как заставив configure
проверить вывод программы uname
или производя поиск библиотек,
специфических для отдельных систем. Однако Autoconf предоставляет
однообразный метод для обработки неопределяемых свойств.
8.1 Указание типа системы 8.2 Получение канонического типа системы 8.3 Переменные типов систем 8.4 Использование типов систем
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Подобно другим скриптам 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
для канонизации алиасов типов систем.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Следующие макросы делают тип системы доступным для скриптов
configure
. Они запускают скрипт командного процессора
config.guess
для определения значений каждого типа систем, в
которых они нуждаются, и которые пользователь не указал в командной
строке. Они запускают config.sub
для канонизации заданных
пользователем псевдонимов. Если вы используете эти макросы, то должны
распространять эти два файла вместе с вашим исходным кодом.
See section 3.2 Создание выходных файлов, для получения информации о макросе
AC_CONFIG_AUX_DIR
, который вы можете использовать для контроля
того, в каком именно каталоге configure
будет искать эти файлы.
Если вы не используете ни один из этих макросов, то configure
игнорирует заданные ключи `--host', `--target' и
`--build'.
AC_CANONICAL_SYSTEM
, относящуюся к
определению типа системы, на которой будет запускаться пакет. Это все,
что необходимо для программ, не входящих в набор утилит компилятора.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
После вызова 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
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Как использовать канонический тип системы? Обычно вы используете его в
одном или нескольких операторах 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 4.1.2 Общие программы и проверки файлов,
для информации о макросе AC_CHECK_TOOL
, выполняющем этот поиск.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |