Autoconf - Существующие тесты
Go to the first, previous, next, last section, table of contents.
Существующие тесты
@anchor{Existing Tests}
Эти макросы выполняют проверку отдельных возможностей системы, в которых пакет нуждается или которые он может использовать. Если вам необходимо протестировать возможность, которую не проверяет ни один из имеющихся макросов, то, скорее всего, вы сможете это сделать путем вызова примитивных макросов с соответствующими аргументами (see section Написание тестов).
Эти тесты сообщают пользователю, что именно они проверяют и каков
результат проверки. Результаты кэшируются для ускорения последующих
запусков configure
(see section Кэширование результатов).
Некоторые из этих макросов устанавливают выходные переменные. See section Подстановки в файлах Makefile, для того, чтобы узнать о том, как получить значения этих переменных. Фраза "определить name" ниже используется как сокращение, обозначающее "определить символ name препроцессора C в значение 1". See section Определение символов препроцессора С, для того, чтобы узнать о том, как получить определения этих символов в вашей программе.
Альтернативные программы
@anchor{Alternative Programs}
Эти макросы проверяют наличие или поведение определенных программ. Они используются для выбора между несколькими различными программами и для решения того, что делать, когда нужная программа выбрана. Если для проверки наличия необходимой вам программы нет отдельного макроса, и вам не нужно выполнять проверку специальных возможностей этой программы, то можно использовать один из стандартных макросов проверки программ.
Проверка отдельных программ
@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
andf2c
, в описанном порядке. Имя найденной программы присваивается выходной переменной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'.
Общие программы и проверки файлов
@anchor{Generic Programs}
Эти макросы используются для обнаружения программ, для которых нет
отдельных макросов. Если вам необходимо проверить не только присутствие
программы, но и ее поведение, то вам необходимо написать свой
тест для данной программы (see section Написание тестов). По умолчанию эти
макросы используют переменную среды PATH
. Если вам необходимо
проверить наличие программы, которая может находится в каталогах
пользовательской переменной PATH
, то вы можете передать макросу
измененную переменную PATH
, вот как в этом случае:
AC_PATH_PROG(INETD, inetd, /usr/libexec/inetd, $PATH:/usr/libexec:/usr/sbin:/usr/etc:etc)
- Macro: AC_CHECK_FILE (file [, action-if-found [, action-if-not-found]])
- Выполняет проверку, существует ли в системе файл file. Если он найден, то выполняются команды action-if-found, в противном случае выполняется action-if-not-found, если задано.
- Macro: AC_CHECK_FILES (files[, action-if-found [, action-if-not-found]])
-
Выполняет макрос
AC_CHECK_FILE
для каждого из файлов в списке files. Дополнительно определяет переменную `HAVEfile' для каждого из найденных файлов и устанавливает ее равной 1.
- Macro: AC_CHECK_PROG (variable, prog-to-check-for, value-if-found [, value-if-not-found [, path, [ reject ]]])
-
Проверяет, находится ли программа prog-to-check-for в каталогах,
перечисленных в переменной
PATH
. Если эта программа найдена, то переменная variable устанавливается равным значению value-if-found, в противном случае равным значению value-if-not-found (если оно задано). Никогда не использует reject (имя файла с абсолютным путем), даже если такая программа была найдена в путях поиска; в этом случае переменная variable устанавливается, используя абсолютное имя найденной программы prog-to-check-for, которая не является reject. Если переменная variable уже установлена, то ничего не делается. Вызывает макросAC_SUBST
для variable.
- Macro: AC_CHECK_PROGS (variable, progs-to-check-for [, value-if-not-found [, path]])
-
Проверяет наличие в
PATH
каждой программы из списка через пробел progs-to-check-for. Если программа найдена, то переменная variable устанавливается в значение, равное имени найденной программы. В противном случае продолжается проверка наличия следующей программы. Если ни одна из программ не найдена, то переменная variable получает значение value-if-not-found; если value-if-not-found не указано, то значение variable не изменяется. Вызывает макросAC_SUBST
для variable.
- Macro: AC_CHECK_TOOL (variable, prog-to-check-for [, value-if-not-found [, path]])
-
Работает подобно
AC_CHECK_PROG
, но сначала проверяет наличие prog-to-check-for с префиксом типа системы, который определяется макросомAC_CANONICAL_HOST
, за которым следует тире (see section Получение канонического типа системы). Например, если пользователь запустит `configure --host=i386-gnu', то этот вызов:AC_CHECK_TOOL(RANLIB, ranlib, :)
установит переменную
RANLIB
в значение `i386-gnu-ranlib', если эта программа находится в каталогах, перечисленных вPATH
, или в `ranlib', если эта программа находится вPATH
, или в `:', если ни одна из программ не существует.
- Macro: AC_PATH_PROG (variable, prog-to-check-for [, value-if-not-found [, path]])
-
Работает подобно
AC_CHECK_PROG
, но устанавливает variable равной полному пути к найденной программе prog-to-check-for.
- Macro: AC_PATH_PROGS (variable, progs-to-check-for [, value-if-not-found [, path]])
-
Подобен макросу
AC_CHECK_PROGS
, но если найдена любая из программ progs-to-check-for, то переменная variable получает значение, равное полному пути к найденной программе.
Файлы библиотек
@anchor{Libraries}
Нижеописанные макросы проверяют наличие определенных библиотек C, C++ или Fortran 77.
- Macro: AC_CHECK_LIB (library, function [, action-if-found [, action-if-not-found [, other-libraries]]])
-
В зависимости от текущего языка (see section Выбор языка), макрос пытается
убедиться, что функция C, C++ или Fortran 77 с именем function
доступна (путем проверки, что тестовая программа компонуется с
библиотекой library для получения доступа к функции).
library является базовым именем библиотеки; например, для
`-lmp', используйте `mp' в качестве аргумента library.
action-if-found является списком команд командного процессора, которые запускаются в случае, если процесс компоновки прошел удачно; action-if-not-found является списком команд, которые запускаются, если процесс компоновки потерпел неудачу. Если аргумент action-if-found не указан, то действие по умолчанию добавит `-llibrary' в переменную
LIBS
и определит переменную `HAVE_LIBlibrary' (все буквы заглавные).Если при компоновке с library выдаются сообщения о ненайденных символах, которые могут быть найдены, компонуя программы с дополнительными библиотеками, то вы должны передать список этих библиотек через пробелы в аргументе other-libraries: `-lXt -lX11'. В противном случае этот макрос не сможет определить, что библиотека library присутствует, поскольку компоновка тестовой программы всегда будет аварийно завершаться с сообщениями о ненайденных символах.
- Macro: AC_HAVE_LIBRARY (library, [, action-if-found [, action-if-not-found [, other-libraries]]])
-
Этот макрос аналогичен вызову
AC_CHECK_LIB
с аргументом function, равнымmain
. Вдобавок, library может быть указана как `foo', `-lfoo' или `libfoo.a'. Во всех этих случаях компилятору передается строка `-lfoo'. Однако library не может быть переменной командного процессора; ее значение должно быть символьным именем. Этот макрос считается устаревшим.
- Macro: AC_SEARCH_LIBS (function, search-libs [, action-if-found [, action-if-not-found [, other-libraries]]])
-
Производит поиск библиотеки, определяющей функцию function, если
она еще не доступна. Это подобно вызову макроса
AC_TRY_LINK_FUNC
сначала без указания библиотек, а затем для каждой из библиотек, перечисленных в списке search-libs.Если функция найдена, то выполняются команды action-if-found, в противном случае выполняются action-if-not-found.
Если при компоновке с library выдаются сообщения о ненайденных символах, которые могут быть найдены, компонуя программы с дополнительными библиотеками, то вы должны передать список этих библиотек через пробел, используя аргумент other-libraries: `-lXt -lX11'. В противном случае этот макрос не сможет определить, что библиотека library присутствует, поскольку компоновка тестовой программы всегда будет аварийно завершаться с сообщениями о ненайденных символах.
- Macro: AC_SEARCH_LIBS (function, search-libs[, action-if-found [, action-if-not-found]])
-
Этот макрос эквивалентен вызову
AC_TRY_LINK_FUNC
для каждой из библиотек, перечисленных в списке search-libs. Макрос добавляет `-llibrary' к содержимому переменнойLIBS
для первой библиотеки, которая содержит function и выполняет action-if-found. В противном случае выполняется action-if-not-found.
Библиотечные функции
@anchor{Library Functions}
Следующие макросы проверяют отдельные функции библиотеки C. Если для функции, которая вам нужна, нет отдельного макроса, и вам не нужно проверять специальные возможности этой функции, то можно использовать один из общих макросов проверки функций.
Проверка отдельных функций
@anchor{Particular Functions}
Эти макросы выполняют проверку отдельных функций: существуют ли они и, в отдельных случаях, как они работают при задании определенных аргументов.
- Macro: AC_FUNC_ALLOCA
-
Проверяет, как получить
alloca
. Макрос пробует получить встроенную версию, проверяя наличие файла `alloca.h' или предопределенных макросов препроцессора C__GNUC__
и_AIX
. Если этот макрос находит `alloca.h', то определяется переменнаяHAVE_ALLOCA_H
.Если эти попытки оканчиваются неудачей, то макрос будет искать функцию в стандартной библиотеке C. Если любой из этих методов закончится успешно, то будет определена переменная
HAVE_ALLOCA
. В противном случае выходная переменнаяALLOCA
получит значение `alloca.o' и будет определена переменнаяC_ALLOCA
(так что программы смогут периодически вызывать `alloca(0)' для сборки мусора). Эта переменная отделена отLIBOBJS
, так что несколько программ смогут использовать одно и то же значениеALLOCA
, без необходимости создания настоящей библиотеки, если лишь некоторые из них используют код вLIBOBJS
.Эти макросы не пытаются получить
alloca
из библиотеки System V R3 `libPW' или из библиотеки System V R4 `libucb', поскольку эти библиотеки содержат некоторые несовместимые функции, что может в дальнейшем вызвать проблемы. Некоторые версии библиотек даже не содержатalloca
или содержат версию с ошибками. Если вы все таки хотите использоватьalloca
из этих библиотек, то вместо компиляции файла `alloca.c' используйтеar
для извлечения из них `alloca.o'.Для правильного объявления этой функции исходные тексты, использующие
alloca
, должны начинаться примерно с нижеизложенного кода. В некоторых версиях AIX, объявлениеalloca
должно предшествовать всему, за исключением комментариев и директив препроцессора. Директива#pragma
специальным образом выровнена (перед ней стоит несколько пробелов), чтобы старые не-ANSI компиляторы C игнорировали ее, а не выдавали ошибку./* AIX требует, чтобы это было первым кодом в файле. */ #ifndef __GNUC__ # if HAVE_ALLOCA_H # include <alloca.h> # else # ifdef _AIX #pragma alloca # else # ifndef alloca /* предопределено в cc +Olibcalls фирмы HP */ char *alloca (); # endif # endif # endif #endif
- Macro: AC_FUNC_CLOSEDIR_VOID
-
Если значение, возвращаемое функцией
closedir
, не несет полезной информации, то определяетсяCLOSEDIR_VOID
. В противном случае тот, кто вызывает эту функцию, может проверить возвращаемое значение на наличие ошибки.
- Macro: AC_FUNC_FNMATCH
-
Если функция
fnmatch
доступна и работает (в отличие от имеющейся в SunOS 5.4), то определяется переменнаяHAVE_FNMATCH
.
- Macro: AC_FUNC_GETLOADAVG
-
Проверка того, как получить данные о загрузке системы. Если система
имеет функцию
getloadavg
, то этот макрос определяет переменнуюHAVE_GETLOADAVG
, и добавляет кLIBS
библиотеки, необходимые для получения этой функции.В противном случае макрос добавляет `getloadavg.o' к выходной переменной
LIBOBJS
и, возможно, определяет другие макросы препроцессора C и выходные переменные:-
Он определяет
SVR4
,DGUX
,UMAX
илиUMAX4_3
на соответствующих системах. -
Если он находит `nlist.h', то он определяет переменную
NLIST_STRUCT
. -
Если `struct nlist' имеет поле `n_un', то определяется
переменная
NLIST_NAME_UNION
. -
Если компиляция `getloadavg.c' определяет
LDAV_PRIVILEGED
, то программы необходимо специальным образом устанавливать на эту систему, чтобыgetloadavg
работала, и этот макрос определяетGETLOADAVG_PRIVILEGED
. -
Этот макрос устанавливает выходную переменную
NEED_SETGID
. Ее значением является `true', если требуется специальная установка, и `false' в противном случае. ЕслиNEED_SETGID
равен `true', то этот макрос устанавливаетKMEM_GROUP
в значение, равное названию группы, которая должна владеть установленной программой.
-
Он определяет
- Macro: AC_FUNC_GETMNTENT
-
Проверяет наличие
getmntent
в библиотеках `sun', `seq' и `gen' для Irix 4, PTX и Unixware, соответственно. Затем, если функцияgetmntent
доступна, определяется переменнаяHAVE_GETMNTENT
.
- Macro: AC_FUNC_GETPGRP
-
Если
getpgrp
запускается без аргументов (версия POSIX.1), то определяетсяGETPGRP_VOID
. В противном случае функция является BSD-версией, которая принимает в качестве аргумента идентификатор процесса. Этот макрос не выполняет проверку наличияgetpgrp
; если вам необходимо работать в такой ситуации, то сначала вызовитеAC_CHECK_FUNC
дляgetpgrp
.
- Macro: AC_FUNC_MEMCMP
-
Если функция
memcmp
недоступна, или не работает с восьмибитными данными (как функция в SunOS 4.1.3), то `memcmp.o' добавляется к выходной переменнойLIBOBJS
.
- Macro: AC_FUNC_MMAP
-
Если функция
mmap
существует и работает правильно, то определяется переменнаяHAVE_MMAP
. Проверяется только фиксированное приватное отображение уже отображенной памяти.
- Macro: AC_FUNC_SELECT_ARGTYPES
-
Определяет правильный тип, передаваемый каждому из аргументов функции
select
, и определяет эти типы в переменныхSELECT_TYPE_ARG1
,SELECT_TYPE_ARG234
иSELECT_TYPE_ARG5
. Значением по умолчанию дляSELECT_TYPE_ARG1
является `int', дляSELECT_TYPE_ARG234
типом по умолчанию является `int *' и дляSELECT_TYPE_ARG5
типом по умолчанию является `struct timeval *'.
- Macro: AC_FUNC_SETPGRP
-
Если
setpgrp
запускается без аргументов (версия POSIX.1), то определяетсяSETPGRP_VOID
. В противном случае, функция является BSD-версией, которая принимает в качестве аргумента идентификатор процесса. Этот макрос не выполняет проверку наличияsetpgrp
; если вам необходимо работать в такой ситуации, то сначала вызовитеAC_CHECK_FUNC
дляsetpgrp
.
- Macro: AC_FUNC_SETVBUF_REVERSED
-
Если
setvbuf
принимает тип буферизации как второй аргумент, а указатель на буфер как третий аргумент, а не наоборот, то определяется переменнаяSETVBUF_REVERSED
. Это справедливо для System V до выпуска 3.
- Macro: AC_FUNC_STRCOLL
-
Если функция
strcoll
существует и работает правильно, то определяется переменнаяHAVE_STRCOLL
. Этот макрос выполняет больше проверок, чем просто вызов `AC_CHECK_FUNCS(strcoll)', потому что некоторые системы имеют неправильные определенияstrcoll
, которыми не следует пользоваться.
- Macro: AC_FUNC_STRFTIME
-
Проверка наличия
strftime
в библиотеке `intl', для SCO UNIX. Затем, еслиstrftime
доступна, определяется переменнаяHAVE_STRFTIME
.
- Macro: AC_FUNC_UTIME_NULL
-
Если вызов `utime(file, NULL)' устанавливает время
модификации файла file в текущее время, то определить переменную
HAVE_UTIME_NULL
.
- Macro: AC_FUNC_VFORK
-
Если найден файл `vfork.h', то определяется переменная
HAVE_VFORK_H
. Если работающая версияvfork
не найдена, то определитьvfork
какfork
. Этот макрос проверяет несколько известных ошибок в реализацииvfork
и если найдена одна из таких реализаций, то считается, что система не имеет работающей версииvfork
. Макрос не считает, ошибкой реализации, если при вызове потомком функцииsignal
изменяются обработчики сигналов родителя, поскольку потомки редко изменяют обработчики сигналов родительского процесса.
- Macro: AC_FUNC_VPRINTF
-
Если найдена функция
vprintf
, то определяется переменнаяHAVE_VPRINTF
. В противном случае, если найдена функция_doprnt
, то определяется переменнаяHAVE_DOPRNT
. (Если функцияvprintf
доступна, то вы можете считать, что функцииvfprintf
иvsprintf
тоже доступны).
- Macro: AC_FUNC_WAIT3
-
Если функция
wait3
найдена, и заполняет содержимое своего третьего аргумента (`struct rusage *'), чего не делает HP-UX, то определяется переменнаяHAVE_WAIT3
.
Проверка базовых функций
@anchor{Generic Functions}
Эти макросы используются для нахождения функций, которые не имеют
специальных макросов проверки. Если функции могут находиться в других
библиотеках, а не в стандартной библиотеке C, то сначала вызовите макрос
AC_CHECK_LIB
для проверки наличия нужных библиотек. Если вам
нужно не только проверить, существует ли функция, но и уточнить ее
поведение, то вам придется написать свой собственный тест для этой
функции (see section Написание тестов).
- Macro: AC_CHECK_FUNC (function, [action-if-found [, action-if-not-found]])
-
Если функция C с именем function доступна, то запускаются команды
командного процессора action-if-found, в противном случае
запускаются action-if-not-found. Если вы просто хотите определить
символ препроцессора, если функция существует, то вместо этого макроса попробуйте
использовать
AC_CHECK_FUNCS
. Этот макрос проверяет компоновку с библиотекой C, даже если был вызван макросAC_LANG_CPLUSPLUS
, поскольку C++ является более стандартизованным, чем C. (see section Выбор языка, для дополнительной информации о выборе языка, для которого проводятся проверки).
- Macro: AC_CHECK_FUNCS (function... [, action-if-found [, action-if-not-found]])
-
Для каждой из заданных function в списке, разделенном пробелами, в
случае если она доступна, определить переменную
HAVE_function
(все буквы заглавные). Если задан аргумент action-if-found, то выполняется дополнительный код командного процессора, если одна из функций найдена. Вы можете задать значение `break' для прекращения цикла при нахождении первой функции. Если задан аргумент action-if-not-found, то эти команды выполняются, когда одна из функций не найдена.
- Macro: AC_REPLACE_FUNCS (function...)
-
Этот макрос подобен вызову макроса
AC_CHECK_FUNCS
, используя код action-if-not-found, который добавляет `function.o' к выходной переменнойLIBOBJS
. Вы можете объявить функцию, для которой будет использована ваша замена, поместив ее прототип между директивами `#ifndef HAVE_function'. Если система имеет нужную функцию, то эта функция, вероятно, будет объявлена в заголовочном файле, который вы должны включить в свою программу, так что вы не должны повторно объявлять ее, во избежание конфликта объявлений.
Заголовочные файлы
@anchor{Header Files}
Следующие макросы проверяют наличие определенных заголовочных файлов языка C. Если для нужного вам заголовочного файла нет специального макроса, и при этом вам не нужно проверять специальные особенности этого файла, то можно использовать один из стандартных макросов проверки заголовочных файлов.
Проверка отдельных заголовочных файлов
@anchor{Particular Headers}
Эти макросы выполняют проверку отдельных заголовочных файлов--- существуют ли они и, в некоторых случаях, объявлены ли в них какие-либо символы.
- Macro: AC_DECL_SYS_SIGLIST
-
Определяет переменную
SYS_SIGLIST_DECLARED
, если переменнаяsys_siglist
объявлена в системном заголовочном файле--- либо в `signal.h', либо в `unistd.h'.
- Macro: AC_DIR_HEADER
-
Подобен вызову макросов
AC_HEADER_DIRENT
иAC_FUNC_CLOSEDIR_VOID
, но определяет немного другой набор макросов препроцессора C, для указания того, какой заголовочный файл найден. Этот макрос и имена, которые он определяет, считаются устаревшими. Макрос определяет следующие имена:- `dirent.h'
-
DIRENT
- `sys/ndir.h'
-
SYSNDIR
- `sys/dir.h'
-
SYSDIR
- `ndir.h'
-
NDIR
Вдобавок, если функция
closedir
не возвращает информативного значения, то определяется переменнаяVOID_CLOSEDIR
.
- Macro: AC_HEADER_DIRENT
-
Проверка следующих заголовочных файлов, и для первого файла, который найден и определяет `DIR', определить нижеследующие макросы препроцессора C:
- `dirent.h'
-
HAVE_DIRENT_H
- `sys/ndir.h'
-
HAVE_SYS_NDIR_H
- `sys/dir.h'
-
HAVE_SYS_DIR_H
- `ndir.h'
-
HAVE_NDIR_H
В исходном тексте объявления библиотеки каталогов должны выглядеть примерно так:
#if HAVE_DIRENT_H # include <dirent.h> # define NAMLEN(dirent) strlen((dirent)->d_name) #else # define dirent direct # define NAMLEN(dirent) (dirent)->d_namlen # if HAVE_SYS_NDIR_H # include <sys/ndir.h> # endif # if HAVE_SYS_DIR_H # include <sys/dir.h> # endif # if HAVE_NDIR_H # include <ndir.h> # endif #endif
Используя нижеследующие объявления, программа должна объявить переменные с типом
struct dirent
, а неstruct direct
, а доступ к полю длины имени каталога она должна получать путем передачи указателя наstruct dirent
макросуNAMLEN
.Этот макрос также проверяет наличие библиотек `dir' и `x' в SCO Xenix.
- Macro: AC_HEADER_MAJOR
-
Если `sys/types.h' не определяет
major
,minor
иmakedev
, но это делается в `sys/mkdev.h', то определяется переменнаяMAJOR_IN_MKDEV
; в противном случае, если эти функции определяются в `sys/sysmacros.h', то определяется переменнаяMAJOR_IN_SYSMACROS
.
- Macro: AC_HEADER_STDC
-
Определяет
STDC_HEADERS
, если система имеет заголовочные файлы ANSI C. Это макрос проверяет наличие `stdlib.h', `stdarg.h', `string.h' и `float.h'; если система имеет эти файлы, то, скорее всего, имеются и остальные заголовочные файлы ANSI C. Этот макрос также проверяет, что `string.h' объявляетmemchr
(и поэтому, скорее всего, еще и другие функцииmem
), объявляется ли в `stdlib.h' функцияfree
(и, по видимому,malloc
и другие относящиеся к ним функции), и будут ли макросы из `ctype.h' работать с символами с установленным старшим битом, как этого требует ANSI C.Используйте
STDC_HEADERS
вместо of__STDC__
для определения, имеются ли в системе совместимые с ANSI заголовочные файлы (и, вероятно, функции библиотеки C), поскольку многие системы, имеющие GCC, не имеют заголовочные файлы ANSI C.На системах без заголовочных файлов ANSI C существует так много вариантов, что, вероятно, легче объявить используемые вами функции, чем точно определять, какой из заголовочные файлов определяет эти функции. Некоторые системы содержат смесь функций ANSI и BSD; некоторые из них по большей части совместимы с ANSI, но не имеют `memmove'; некоторое определяют функции BSD как макросы в файлах `string.h' или `strings.h'; некоторые из них имеют только функции BSD, но с `string.h'; некоторые объявляют функции работы с памятью в `memory.h', некоторые в `string.h'; и т. п. Скорее всего, достаточно проверить наличие одной функции работы со строками и одной функции работы с памятью; если библиотека имеет ANSI-версии этих функций, то, скорее всего, она имеет и большинство других функций. Вы должны поместить следующий код в `configure.in':
AC_HEADER_STDC AC_CHECK_FUNCS(strchr memcpy)
а затем, в вашем коде вы можете поместить следующие строки:
#if STDC_HEADERS # include <string.h> #else # ifndef HAVE_STRCHR # define strchr index # define strrchr rindex # endif char *strchr (), *strrchr (); # ifndef HAVE_MEMCPY # define memcpy(d, s, n) bcopy ((s), (d), (n)) # define memmove(d, s, n) bcopy ((s), (d), (n)) # endif #endif
Если вы используете функции, которые не имеют эквивалентов в BSD, такие как
memchr
,memset
strtok
илиstrspn
, то просто макросов будет недостаточно; вы должны предоставить реализацию каждой из функций. Простой способ подключить ваши реализации только если они действительно нужны (потому что функции из системной библиотеки могут быть вручную оптимизированы) --- это, например, поместить функциюmemchr
в файл `memchr.c', и использовать макрос `AC_REPLACE_FUNCS(memchr)'.
- Macro: AC_HEADER_SYS_WAIT
-
Если `sys/wait.h' существует и совместим с POSIX.1, то определяется
переменная
HAVE_SYS_WAIT_H
. Несовместимость может возникнуть, если файла `sys/wait.h' не существует, или для сохранения значения статуса он использует старую BSD-версиюunion wait
вместоint
. Если `sys/wait.h' не является совместимым с POSIX.1, то вместо его включения определяется макрос POSIX.1 с его обычной реализацией. Вот пример:#include <sys/types.h> #if HAVE_SYS_WAIT_H # include <sys/wait.h> #endif #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif
- Macro: AC_MEMORY_H
-
Определяет
NEED_MEMORY_H
, еслиmemcpy
,memcmp
, и т. п. не объявлены в файле `string.h' и существует файл `memory.h'. Этот макрос является устаревшим; вместо него используйте вызовAC_CHECK_HEADERS(memory.h)
. Смотрите пример дляAC_HEADER_STDC
.
- Macro: AC_UNISTD_H
-
Определяет переменную
HAVE_UNISTD_H
, если в системе имеется файл `unistd.h'. Этот макрос является устаревшим; вместо него используйте вызов `AC_CHECK_HEADERS(unistd.h)'.Для проверки того, что система поддерживает POSIX.1, можно использовать следующий код:
#if HAVE_UNISTD_H # include <sys/types.h> # include <unistd.h> #endif #ifdef _POSIX_VERSION /* Код для систем POSIX.1 */ #endif
_POSIX_VERSION
определяется, когда `unistd.h' подключен в системах, совместимых с POSIX.1. Если файла `unistd.h' не существует, то, скорее всего, эта система не относится к POSIX.1. Однако некоторые не-POSIX.1 системы имеют файл `unistd.h'.
- Macro: AC_USG
-
Определяет
USG
, если система не имеет файла `strings.h',rindex
,bzero
и т. п. Это означает, что система имеет `string.h',strrchr
,memset
и т. п.Символ
USG
является устаревшим. Вместо этого макроса смотрите пример дляAC_HEADER_STDC
.
Базовые проверки заголовочных файлов
@anchor{Generic Headers}
Эти макросы используются для нахождения системных заголовочных файлов, для которых не существует отдельного теста. Если вам надо проверить не только наличие заголовочного файла, но и его содержимое, то придется написать для этого собственный тест (see section Написание тестов).
- Macro: AC_CHECK_HEADER (header-file, [action-if-found [, action-if-not-found]])
-
Если системный заголовочный файл header-file существует, то
исполняются команды командного процессора action-if-found, в
противном случае выполняются action-if-not-found. Если вы просто
хотите определить символ, если заголовочный файл доступен, то лучше
используйте макрос
AC_CHECK_HEADERS
.
- Macro: AC_CHECK_HEADERS (header-file... [, action-if-found [, action-if-not-found]])
-
Для каждого системного заголовочного файла header-file, заданного
в списке через пробел, в случае его существования определить
переменную
HAVE_header-file
(все буквы заглавные). Если задан аргумент action-if-found, то выполняется дополнительный код командного процессора в случае, когда файл найден. Вы можете задать аргумент `break' для прекращения итераций, когда найден первый файл. Если задан аргумент action-if-not-found, то он выполняется, когда заголовочный файл не найден.
Структуры
@anchor{Structures}
Следующие макросы проверяют наличие определенных структур или полей
структур. Для проверки структур, не перечисленных в этом разделе,
используйте макрос AC_EGREP_CPP
(see section Исследование деклараций)
или AC_TRY_COMPILE
(see section Проверка синтаксиса).
- Macro: AC_HEADER_STAT
-
Если макросы
S_ISDIR
,S_ISREG
и т. п., определенные в `sys/stat.h', работают неправильно (возвращая неверные положительные результаты), то определяется переменнаяSTAT_MACROS_BROKEN
. Это происходит на системах Tektronix UTekV, Amdahl UTS и Motorola System V/88.
- Macro: AC_HEADER_TIME
-
Если программа может подключать как `time.h', так и `sys/time.h', то
определяется переменная
TIME_WITH_SYS_TIME
. В некоторых старых системах `sys/time.h' подключает `time.h', но `time.h' не защищен от многократного подключения, так что программы не должны явно подключать оба файла. Этот макрос полезен для программ, которые, например, используют структурыstruct timeval
илиstruct timezone
, вместе сstruct tm
. Этот макрос лучше всего использовать вместе сHAVE_SYS_TIME_H
, который может быть проверен с помощьюAC_CHECK_HEADERS(sys/time.h)
.#if TIME_WITH_SYS_TIME # include <sys/time.h> # include <time.h> #else # if HAVE_SYS_TIME_H # include <sys/time.h> # else # include <time.h> # endif #endif
- Macro: AC_STRUCT_ST_BLKSIZE
-
Если
struct stat
содержит полеst_blksize
, то определяется переменнаяHAVE_ST_BLKSIZE
.
- Macro: AC_STRUCT_ST_BLOCKS
-
Если
struct stat
содержит полеst_blocks
, то определяется переменнаяHAVE_ST_BLOCKS
. В противном случае, `fileblocks.o' добавляется к выходной переменнойLIBOBJS
.
- Macro: AC_STRUCT_ST_RDEV
-
Если
struct stat
содержит полеst_rdev
, то определяется переменнаяHAVE_ST_RDEV
.
- Macro: AC_STRUCT_TM
-
Если `time.h' не определяет
struct tm
, то определяется символTM_IN_SYS_TIME
, что означает, что `sys/time.h' следовало бы определитьstruct tm
.
- Macro: AC_STRUCT_TIMEZONE
-
Определяет, как получить текущую временную зону. Если
struct tm
имеет полеtm_zone
, то определяется переменнаяHAVE_TM_ZONE
. В противном случае, если найден внешний массивtzname
, то определяется переменнаяHAVE_TZNAME
.
Объявления типов
@anchor{Typedefs}
Следующие макросы проверяют определения типов (typedef) языка C. Если для нужного вам определения типа нет специального макроса, и вам не нужно выполнять проверку специальных возможностей, то можно использовать общие макросы проверки объявлений типов.
Проверка отдельных объявлений типов
@anchor{Particular Typedefs}
Эти макросы проверяют конкретные объявления типов C в файлах `sys/types.h' и `stdlib.h' (если он существует).
- Macro: AC_TYPE_GETGROUPS
-
Определяет
GETGROUPS_T
равнымgid_t
илиint
, в зависимости от того, что именно является базовым типом массива-аргумента функцииgetgroups
.
- Macro: AC_TYPE_SIGNAL
-
Если `signal.h' определяет
signal
как возвращающий указатель на функцию, возвращающуюvoid
, то переменнаяRETSIGTYPE
становится равнойvoid
; в противном случае она определяется с типомint
.Определить обработчики сигналов как возвращающие тип
RETSIGTYPE
:RETSIGTYPE hup_handler () { ... }
Базовые проверки объявлений типов
@anchor{Generic Typedefs}
Эти макросы используются для проверки определений типов (typedef), которые не были описаны в разделе конкретных макросов проверок.
- Macro: AC_CHECK_TYPE (type, default)
- Если тип type не определен в `sys/types.h', или в `stdlib.h', или в `stddef.h' (если они существуют), то определить этот тип равным встроенному типу C (или C++) default; например, `short' или `unsigned'.
Характеристики компилятора C
@anchor{C Compiler Characteristics}
Следующие макросы выполняют проверку свойств компилятора C или
архитектуры машины. Для проверки характеристик, не перечисленных в этом
разделе, используйте макросы AC_TRY_COMPILE
(see section Проверка синтаксиса) или AC_TRY_RUN
(see section Проверка поведения во время выполнения).
- Macro: AC_C_BIGENDIAN
-
Если слова хранятся в порядке, когда самый значимый байт хранится первым
(подобно процессорам Motorola и SPARC, но не Intel и VAX), то
определяется переменная
WORDS_BIGENDIAN
.
- Macro: AC_C_CONST
-
Если компилятор C не поддерживает полностью ключевое слово
const
, то макросуconst
присваивается пустое значение. Некоторые компиляторы C не определяют константу__STDC__
, но поддерживаютconst
; некоторые компиляторы, определяющие__STDC__
, не полностью поддерживаютconst
. Программы могут просто использоватьconst
, как будто любой компилятор C поддерживает его; для тех компиляторов, которые не имеют такой поддержки, `Makefile' или заголовочный файл настройки определят это слово как имеющее пустое значение.
- Macro: AC_C_INLINE
-
Если компилятор C поддерживает
inline
, то ничего не делается. В противном случае,inline
определяется равным__inline__
или__inline
, если компилятор поддерживает один из этих вариантов, иначеinline
определяется равным пустому значению.
- Macro: AC_C_CHAR_UNSIGNED
-
Если тип C
char
является беззнаковым, то определяется переменная__CHAR_UNSIGNED__
(если компилятор C еще не определил ее).
- Macro: AC_C_LONG_DOUBLE
-
Если компилятор C поддерживает тип
long double
, то определяется переменнаяHAVE_LONG_DOUBLE
. Некоторые компиляторы C, которые не определяют__STDC__
, поддерживаютlong double
; а некоторые компиляторы, определяющие__STDC__
, не поддерживают типlong double
.
- Macro: AC_C_STRINGIZE
-
Если препроцессор C поддерживает строковый (stringizing) оператор, то определяется
переменная
HAVE_STRINGIZE
. Строковым (stringinzing)оператором является `#' и он используется в макросах, например:#define x(y) #y
- Macro: AC_CHECK_SIZEOF (type [, cross-size])
-
Определить
SIZEOF_uctype
равным числу байтов во встроенном типе C (или C++) type, например, `int' или `char *'. Если `type' неизвестен компилятору, то переменная получает значение 0. uctype является type, со строчными буквами, преобразованными в прописные, пробелы преобразуются в знаки подчеркивания, и знаки звездочка (*
) заменяются на `P'. Если производится кросс-компиляция, то используется значение cross-size (если оно задано), в противном случаеconfigure
прекращает работу с выдачей сообщения об ошибке.Например, вызов
AC_CHECK_SIZEOF(int *)
определяет
SIZEOF_INT_P
равным 8 на системах DEC Alpha AXP.
- Macro: AC_INT_16_BITS
-
Если тип
int
имеет размер 16 бит, то определяется переменнаяINT_16_BITS
. Этот макрос является устаревшим; вместо него лучше использовать общий макрос `AC_CHECK_SIZEOF(int)'.
- Macro: AC_LONG_64_BITS
-
Если тип
long int
имеет размер 64 бита, то определяется переменнаяLONG_64_BITS
. Этот макрос является устаревшим; вместо него лучше использовать вызов `AC_CHECK_SIZEOF(long)'.
Характеристики компилятора Fortran 77
@anchor{Fortran 77 Compiler Characteristics}
Следующие макросы используются для проверки характеристик компилятора
Fortran 77. Для проверки характеристик, не перечисленных в этом разделе,
используйте макросы AC_TRY_COMPILE
(see section Проверка синтаксиса)
или AC_TRY_RUN
(see section Проверка поведения во время выполнения), убедившись, что перед
этим вы установили Fortran 77 текущим языком.
AC_LANG_FORTRAN77
(see section Выбор языка).
- Macro: AC_F77_LIBRARY_LDFLAGS
-
Определяет ключи командной строки компоновщика (например, `-L' и
`-l') для внутренних библиотек Fortran 77 и библиотек времени
исполнения, которые требуются для правильной компоновки программ на
Fortran 77 или разделяемых библиотек. Выходная переменная
FLIBS
устанавливается равной этим флагам.Этот макрос предназначен для использования в ситуациях, когда необходимо смешать исходный код, например на C++ и Fortran 77, в одну программу или разделяемую библиотеку (see section `Смешивание кода Fortran 77 с кодом на C и C++' in GNU Automake).
Например, если объектные файлы от компиляторов C++ и Fortran 77 должны быть скомпонованы вместе, то для компоновки должен использоваться компилятор/компоновщик C++, поскольку специфические для C++ вещи, такие как вызовы глобальных конструкторов, подстановке шаблонов, разрешении обработки исключений, и т. п., нуждаются в специальных действиях во время компоновки.
Однако в этих случаях должны быть подключены и внутренние библиотеки Fortran 77, а также библиотеки времени исполнения, а компилятор/компоновщик C++ просто не знает, какие библиотеки Fortran 77 должны быть добавлены. Для определения библиотек Fortran 77 и был создан макрос
AC_F77_LIBRARY_LDFLAGS
.
Системные сервисы
@anchor{System Services}
Следующие макросы проверяют наличие сервисов операционной системы или ее возможности.
- Macro: AC_CYGWIN
-
Проверяет наличие среды Cygwin. Если она присутствует, то переменная
среды
CYGWIN
получает значение `yes'. В противном случае переменнаяCYGWIN
получает пустое значение.
- Macro: AC_EXEEXT
-
Определяет переменную подстановки
EXEEXT
, основанную на расширении файла, выдаваемого компилятором, после исключения файлов с расширениями .c, .o и .obj. Для Unix обычным значением является пустая строка, а для Win32 --- `.exe' и `.EXE'.
- Macro: AC_OBJEXT
-
Определяет переменную подстановки
OBJEXT
, основанную на выводе компилятора, после исключения файлов с расширением .c. Обычно имеет значение `.o' в Unix, и `.obj' на системах Win32.
- Macro: AC_MINGW32
-
Проверяет наличие среды компилятора MingW32. Если она присутствует, то
переменная
MINGW32
получает значение `yes'. В противном случае переменнаяMINGW32
получает пустое значение.
- Macro: AC_PATH_X
-
Этот макрос пробует определить расположение заголовочных файлов и
библиотек X Window System. Если пользователь задал ключи командной
строки `--x-includes=dir' и `--x-libraries=dir',
то используются заданные каталоги. Если один из ключей или оба не
заданы, то пропущенные значения получают запуском
xmkmf
для простого `Imakefile' и разбора полученного файла `Makefile'. Если произошел сбой (например, еслиxmkmf
отсутствует), то производится поиск в нескольких каталогах, где часто располагаются эти файлы. Если один из этих способов был удачен, то переменные командного процессораx_includes
иx_libraries
устанавливаются равными найденным каталогам (в том случае, если эти каталоги не входят в пути, в которых компилятор по умолчанию производит поиск).Если оба этих метода дают сбой, или пользователь задал ключ командной строки `--without-x', то переменная командного процессора
no_x
получает значение `yes'; в противном случае она получает пустое значение.
- Macro: AC_PATH_XTRA
-
Расширенная версия
AC_PATH_X
. Она добавляет к выходной переменнойX_CFLAGS
ключи компилятора C, которые необходимы X, а также флаги X для компоновщика к переменнойX_LIBS
. Если X не доступна, то добавляется `-DX_DISPLAY_MISSING' кX_CFLAGS
.Этот макрос также выполняет проверки специальных библиотек, в которых нуждаются некоторые системы для того, чтобы скомпилировать программу для X. Он добавляет все, что необходимо для таких систем, к выходной переменной
X_EXTRA_LIBS
. Он также проверяет наличие специальных библиотек X11R6, которые необходимо скомпоновать до использования `-lX11', и добавляет найденные библиотеки к выходной переменнойX_PRE_LIBS
.
- Macro: AC_SYS_INTERPRETER
-
Проверяет, поддерживает ли система начало скриптов со строки в форме
`#! /bin/csh' для выбора интерпретатора, который будет
использоваться для данного скрипта. После запуска этого макроса код
командного процессора в
configure.in
может проверить переменнуюinterpval
; она будет равна `yes', если система поддерживает `#!', и `no' в противном случае.
- Macro: AC_SYS_LONG_FILE_NAMES
-
Если система поддерживает имена файлов длиннее 14 символов, то будет
определена переменная
HAVE_LONG_FILE_NAMES
.
- Macro: AC_SYS_RESTARTABLE_SYSCALLS
-
Если система автоматически перезапускает системный вызов, который был
прерван сигналом, то определяется переменная
HAVE_RESTARTABLE_SYSCALLS
.
Варианты UNIX
@anchor{UNIX Variants}
Следующие макросы проверяют наличие конкретных операционных систем, что может потребовать специальной обработки в программах из-за исключительных странностей в их заголовочных файлах или библиотеках. Эти макросы являются бородавками (наростами); они будут заменены на более систематизированные, разбитые на предоставляемые ими функции или устанавливаемые ими параметры среды.
- Macro: AC_AIX
-
На AIX определяет переменную
_ALL_SOURCE
. Позволяет использовать некоторые функции BSD. Должен вызываться до макросов, запускающих компилятор C.
- Macro: AC_DYNIX_SEQ
-
На Dynix/PTX (Sequent UNIX) добавляет `-lseq' к выходной
переменной
LIBS
. Этот макрос является устаревшим; используйте вместо негоAC_FUNC_GETMNTENT
.
- Macro: AC_IRIX_SUN
-
На IRIX (Silicon Graphics UNIX) добавляет `-lsun' к выходной
переменной
LIBS
. Этот макрос является устаревшим. Если вы используете его для проверки наличияgetmntent
, то вместо него используйте макросAC_FUNC_GETMNTENT
. Если вы использовали его для NIS-версий функций работы с паролями и группами, то вместо него используйте `AC_CHECK_LIB(sun, getpwnam)'.
- Macro: AC_ISC_POSIX
-
На POSIX-версии ISC UNIX определяет переменную
_POSIX_SOURCE
и добавляет `-posix' (для компилятора GNU C) или `-Xp' (для других компиляторов C) к выходной переменнойCC
. Это позволяет использовать возможности POSIX. Макрос должен быть вызван после вызоваAC_PROG_CC
и до вызова любых других макросов, которые запускают компилятор C.
- Macro: AC_MINIX
-
На Minix определяет переменные
_MINIX
и_POSIX_SOURCE
и определяет_POSIX_1_SOURCE
со значением 2. Это позволяет использовать возможности POSIX. Должен вызываться до вызова других макросов, запускающих компилятор C.
- Macro: AC_SCO_INTL
-
На SCO UNIX добавляет `-lintl' к выходной переменной
LIBS
. Этот макрос является устаревшим; вместо него используйте макросAC_FUNC_STRFTIME
.
- Macro: AC_XENIX_DIR
-
На Xenix добавляет `-lx' к выходной переменной
LIBS
. Также, если используется `dirent.h', то к переменнойLIBS
добавляется `-ldir'. Этот макрос является устаревшим; вместо него используйтеAC_HEADER_DIRENT
.
Go to the first, previous, next, last section, table of contents.