go to the first, previous, next, last section, table of contents.
@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'.
- macro: ac_canonical_system
-
определяет тип системы и устанавливает выходные переменные равными
именам канонических типов систем. see section переменные типов систем, где
описано, какие именно переменные устанавливаются этим макросом.
- macro: ac_canonical_host
-
выполняет часть операций
ac_canonical_system , относящуюся к
определению типа системы, на которой будет запускаться пакет. это все,
что необходимо для программ, которые не входят в набор утилит
компилятора.
- macro: ac_validate_cached_system_tuple (cmd)
-
если в кэш-файле записан тип системы, не совпадающий с текущим, то
выполняется команда cmd или печатается стандартное сообщение об
ошибке.
@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
- macro: ac_link_files (source..., dest...)
-
заставляет
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.
|