Алексей Махоткин

домашняя страница

Autoconf

Go to the first, previous, next, last section, table of contents.


Установка значений по умолчанию для машины

@anchor{Site Defaults}

Созданные Autoconf скрипты configure позволяют вам задать значения по умолчанию для некоторых параметров настройки. Вы можете сделать это, создавая файлы инициализации для машины и для целой системы.

Если установлена переменная среды CONFIG_SITE, то configure использует ее значение как имя скрипта командного процессора, который необходимо выполнить. В противном случае он считывает скрипт `prefix/share/config.site’, если тот существует, а затем скрипт `prefix/etc/config.site’, также если он существует. Таким образом, специфические для машины файлы перекрывают настройки в машинно-независимых файлах в случае конфликта.

Файлы настроек машины могут быть произвольными скриптами командного процессора, но реально использоваться в них могут только определенные строки кода. Поскольку configure считывает кэш-файлы после того, как он считывает файлы настройки машины, то файл локальной конфигурации может определить кэш-файл по умолчанию, который будет общим для всех запускаемых в системе скриптов configure, которые созданы с помощью Autoconf. Если вы установите кэш-файл по умолчанию в файле локальной настройки, то хорошо было бы установить также выходную переменную CC, поскольку кэш-файл является правильным только для определенного компилятора, а многие системы имеют несколько компиляторов.

В файле локальных настроек вы можете проверять или изменять значения ключей командной строки, заданных скрипту configure; ключи устанавливают переменные командного процессора, которые называются так же, как и ключи командной строки, но с символами дефиса, замененными на символы подчеркивания. Исключением из этого правила являются ключи `–without-’ и `–disable-’, которые подобны заданию соответствующих ключей `–with-’ или `–enable-’ со значением `no’. Таким образом, `–cache-file=localcache’ устанавливает переменную cache_file в значение `localcache’; `–enable-warnings=no’ или `–disable-warnings’ устанавливают переменную enable_warnings равной значению `no’; `–prefix=/usr’ устанавливает переменную prefix равной `/usr’; и т. п.

В файлах локальных настроек также можно устанавливать нестандартные значения по умолчанию для других выходных переменных, таких как CFLAGS: иначе вам пришлось бы делать это снова и снова в командной строке. Если вы обычно используете нестандартные значения для переменных prefix или exec_prefix (которые обычно используются для указания файла локальной конфигурации), то все равно можно задать эти значения в этом файле, если указать его имя в переменной среды CONFIG_SITE.

Вы можете сами установить значения некоторых кэш-переменных в файле локальной конфигурации. Это полезно делать при кросс-компиляции, поскольку невозможно определить проверить возможности, которые требуют запуска тестовых программ. Вы можете “заполнить кэш” установкой этих значений для этих систем в файле `prefix/etc/config.site’. Для определения имен кэш-переменных, которые вам необходимо установить, поищите переменные с именами, содержащими `_cv_’ в соответствующих скриптах configure или в исходном коде m4 макросов Autoconf.

Кэш-файл не переопределяет ни одну переменную, установленную в файлах локальной конфигурации. Сходным образом вы не должны переопределять ключи командной строки в файлах локальной конфигурации. Ваш код должен проверять, имеют ли уже переменные типа prefix или cache_file значения по умолчанию (установленные ранее в процессе выполнения configure), и если да, то не изменять этих значений.

Вот пример файла `/usr/share/local/gnu/share/config.site’. Команда `configure –prefix=/usr/share/local/gnu’ должна прочитать этот файл (если переменная CONFIG_SITE не установлена в другое значение).

# config.site для configure
#
# изменение некоторых значений по умолчанию.
test “$prefix” = NONE && prefix=/usr/share/local/gnu
test “$exec_prefix” = NONE && exec_prefix=/usr/local/gnu
test “$sharedstatedir” = ‘${prefix}/com’ && sharedstatedir=/var
test “$localstatedir” = ‘${prefix}/var’ && localstatedir=/var
#
# разрешить скриптам, созданным Autoconf 2.x, пользоваться общим кэш-файлом
# для получения результатов тестов, которые действительны для данной
# архитектуры.
if test “$cache_file” = ./config.cache; then
  cache_file=”$prefix/var/config.cache”
  # Кэш-файл действителен только для одного компилятора C.
  CC=gcc
fi


Go to the first, previous, next, last section, table of contents.

Comments