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

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

Autoconf

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


Проверка отдельных программ

@anchor{Particular Programs}

Эти макросы выполняют проверку отдельных программ— существуют ли они, а также, в некоторых случаях, проверку того, поддерживают ли эти программы определенные свойства.

Macro: AC_DECL_YYTEXT
Определяет YYTEXT_POINTER, если yytext имеет тип `char *’, а не `char []’. Также устанавливает значение выходной переменной LEX_OUTPUT_ROOT равным основе имени файла, создаваемого лексическим генератором; обычно это значение равно `lex.yy’, но иногда используется что-то другое. Эти результаты различаются в зависимости от того, используется ли lex или flex.

Macro: AC_PROG_AWK
Проверяет наличие mawk, gawk, nawk и awk, в таком порядке и устанавливает выходную переменную AWK, равную имени найденной программы. Сначала пытается найти mawk, который считается самой быстрой реализацией.

Macro: AC_PROG_CC
Определяет компилятор C, который надо использовать. Если переменная среды CC не установлена, то проверить наличие gcc и использовать cc, если gcc не найден. Устанавливает выходную переменную CC, равную имени найденного компилятора.

Если используется компилятор GNU C, то значение переменной GCC устанавливается в значение `yes’, в противном случае оно остается пустым. Если выходная переменная CFLAGS еще не была установлена, то установить ее равной `-g -O2’ для компилятора GNU C (`-O2’ на системах, в которых GCC не понимает ключа `-g’) или равной `-g’ для других компиляторов.

Если используемый компилятор C не создает исполняемых файлов, которые могут запускаться в той системе, где исполняется configure, то переменной командного процессора cross_compiling присваивается значение `yes’, в противном случае она получает значение `no’. Другими словами, здесь проверяется, отличается ли тип системы, для которой производится сборка, от системы, на которой производится сборка (тип целевой системы не относится к этому тесту). Для получения дополнительной информации о кросс-компиляции See section Ручная настройка.

Macro: AC_PROG_CC_C_O
Если компилятор C не может запускаться одновременно с ключами `-c’ и `-o’, то определяется переменная NO_MINUS_C_MINUS_O.

Macro: AC_PROG_CPP
Значение выходной переменной CPP устанавливается равным имени команды, которая запускает препроцессор C. Если `$CC -E’ не работает, то используется `/lib/cpp’. Переносимым решением является запуск CPP только для обработки файлов с расширением `.c’.

Если текущим языком является C (see section Выбор языка), то многие специфические тесты косвенно используют значение переменной CPP, вызывая макросы AC_TRY_CPP, AC_CHECK_HEADER, AC_EGREP_HEADER или AC_EGREP_CPP.

Macro: AC_PROG_CXX
Определяет имя используемого компилятора C++. Проверяется, установлены ли переменные среды CXX или CCC (именно в таком порядке); если одна из них установлена, то значение выходной переменной CXX устанавливается равным значению этой переменной. В противном случае производится поиск компилятора C++, используя вероятные имена (c++, g++, gcc, CC, cxx и cc++). Если ни одна из этих проверок не прошла успешно, то в качестве последнего шанса значение переменной CXX устанавливается равным gcc.

Если используется компилятор GNU C++, то переменная командного процессора GXX получает значение `yes’, иначе ей присваивается пустое значение. Если выходная переменная CXXFLAGS еще не была установлена, то ей присваивается значение `-g -O2’ для компилятора GNU C++ (`-O2’ на системах, где G++ не распознает ключ `-g’) или значение `-g’ для других систем.

Если используемый компилятор C++ не создает исполняемых файлов, которые могут запускаться в системе, где выполняется configure, то переменной командного процессора cross_compiling присваивается значение `yes’, в противном случае устанавливается значение `no’. Другими словами, здесь проверяется, отличается ли тип системы, для которой производится сборка, от системы, на которой производится сборка (тип целевой системы не относится к этому тесту). Для получения дополнительной информации о кросс-компиляции See section Ручная настройка.

Macro: AC_PROG_CXXCPP

Значение выходной переменной CXXCPP устанавливается равным имени команды, которая запускает препроцессор C++. Если `$CXX -E’ не работает, то используется `/lib/cpp’. Переносимым решением является запуск CXXCPP только для обработки файлов с расширениями `.c’, `.C’ или `.cc’.

Если текущим языком является C++ (see section Выбор языка), то многие специфические тесты косвенно используют значение переменной CXXCPP, вызывая AC_TRY_CPP, AC_CHECK_HEADER, AC_EGREP_HEADER или AC_EGREP_CPP.

Macro: AC_PROG_F77
Определяет имя используемого компилятора Fortran 77. Если переменная среды F77 не установлена, то производится проверка наличия программ g77, f77 and f2c, в описанном порядке. Имя найденной программы присваивается выходной переменной F77.

Если используется программа g77 (компилятор GNU Fortran 77), то макрос AC_PROG_F77 установит переменную G77 равной значению `yes’, а в противном случае ей будет присвоено пустое значение. Если выходная переменная FFLAGS не была установлена в среде, то для g77 данной переменной присваивается значение `-g -02’ (или `-O2’ в тех случаях когда g77 не принимает ключ `-g’). Иначе, для всех остальных компиляторов Fortran 77, переменной FFLAGS присваивается значение `-g’.

Macro: AC_PROG_F77_C_O
Выполняет проверку того, что компилятор Fortran 77 может запускаться одновременно с ключами `-c’ и `-o’. Если компилятор не принимает эти ключи одновременно, то определяется переменная F77_NO_MINUS_C_MINUS_O.

Macro: AC_PROG_GCC_TRADITIONAL
Добавляет строку `-traditional’ к выходной переменной CC в том случае, если используемый компилятор GNU C и функции ioctl неправильно работают без нее. Обычно это случается, если в старой системе не были установлены исправленные заголовочные файлы. Поскольку свежие версии компилятора GNU C при установке исправляют заголовочные файлы, это становится менее распространенной проблемой.

Macro: AC_PROG_INSTALL
Устанавливает выходную переменную INSTALL, равной полному пути к совместимой с BSD программе install, если она найдена в текущей переменной PATH. Иначе, переменная INSTALL получает значение `dir/install-sh -c’, проверяя каталоги, указанные в AC_CONFIG_AUX_DIR (или каталоги по умолчанию) для определения dir (see section Создание выходных файлов). Этот макрос также устанавливает переменные INSTALL_PROGRAM и INSTALL_SCRIPT равными значениям `${INSTALL}’, а INSTALL_DATA значение `${INSTALL} -m 644’.

Этот макрос не замечает версии install о которых известно, что они не работают. Этот макрос также предпочитает использовать программу на языке C вместо скриптов командного процессора. Вместо `install-sh’, он также может использовать `install.sh’, но это имя устарело, поскольку некоторые программы make имеют правило, которое создает файл `install’ из этого файла, если нет файла `Makefile’.

Копия `install-sh’, которую вы можете использовать, поставляется с Autoconf. Если вы используете AC_PROG_INSTALL, то вы должны включить в свой дистрибутив либо `install-sh’, либо `install.sh’, иначе configure выдаст ошибку, сообщающую о том, что он не может найти эти файлы— даже если система имеет нормальную программу install. Это мера безопасности, чтобы вы случайно не забыли про этот файл, тем самым лишив пользователя возможности установить ваш пакет в системе, в которой нет BSD-совместимой программы install.

Если вам необходимо использовать вашу собственную программу установки (поскольку она имеет возможности, отсутствующие в стандартных программах install), то нет никакой надобности в использовании макроса AC_PROG_INSTALL; просто поместите путь к вашей программе в ваши файлы `Makefile.in’.

Macro: AC_PROG_LEX
Если найдена программа flex, то выходная переменная LEX получает значение `flex’, а LEXLIB – значение `-lfl’, в случае, если библиотека располагается в стандартном месте. Иначе переменная LEX получает значение `lex’, а LEXLIB — значение `-ll’.

Macro: AC_PROG_LN_S
Если команда `ln -s’ работает в текущей файловой системе (и операционная, и файловая системы поддерживают символьные ссылки), то выходная переменная LN_S получает значение `ln -s’, в противном случае значение равно `ln’.

Если ссылка помещается в другой, отличный от текущего, каталог, то смысл этой ссылки зависит от того, какая команда будет использована: `ln’ или `ln -s’. Чтобы безбоязненно создавать ссылки, используя `$(LN_S)’, либо определите, какая форма команды используется и соответственно измените ее аргументы, либо всегда запускайте ln в том каталоге, где будет создаваться ссылка.

Другими словами, не делайте

$(LN_S) foo /x/bar

Вместо этого выполняйте

(cd /x && $(LN_S) foo bar)

Macro: AC_PROG_RANLIB
Если команда ranlib найдена, то выходная переменная RANLIB получает значение равное `ranlib’, в противном случае используется значение `:’ (не делать ничего).

Macro: AC_PROG_YACC
Если найдена программа bison, то выходная переменная YACC получает значение `bison -y’. В противном случае, если найдена команда byacc, то переменная YACC получит значение `byacc’. В противном случае YACC устанавливается в `yacc’.


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

Comments