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

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

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 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’.

Общие программы и проверки файлов

@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 и выходные переменные:

  1. Он определяет SVR4, DGUX, UMAX или UMAX4_3 на соответствующих системах.
  2. Если он находит `nlist.h’, то он определяет переменную NLIST_STRUCT.
  3. Если `struct nlist’ имеет поле `n_un’, то определяется переменная NLIST_NAME_UNION.
  4. Если компиляция `getloadavg.c’ определяет LDAV_PRIVILEGED, то программы необходимо специальным образом устанавливать на эту систему, чтобы getloadavg работала, и этот макрос определяет GETLOADAVG_PRIVILEGED.
  5. Этот макрос устанавливает выходную переменную 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_MODE_T
Если mode_t не определен, то определить тип mode_t равным int.

Macro: AC_TYPE_OFF_T
Если off_t не определен, то определить off_t равным long.

Macro: AC_TYPE_PID_T
Если pid_t не определен, то определить pid_t равным int.

Macro: AC_TYPE_SIGNAL
Если `signal.h’ определяет signal как возвращающий указатель на функцию, возвращающую void, то переменная RETSIGTYPE становится равной void; в противном случае она определяется с типом int.

Определить обработчики сигналов как возвращающие тип RETSIGTYPE:

RETSIGTYPE
hup_handler ()
{
…
}

Macro: AC_TYPE_SIZE_T
Если size_t не определен, то определить size_t как unsigned.

Macro: AC_TYPE_UID_T
Если uid_t не определен, то определить uid_t равным int и gid_t равным int.

Базовые проверки объявлений типов

@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.

Comments