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

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

Autoconf

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


Измененные результаты

@anchor{Changed Results}

Если вы проверяли результаты предыдущих тестов путем проверки переменной командного процессора DEFS, то теперь вам необходимо переключиться на проверку значений переменных кэша для данных тестов. Переменная DEFS больше не существует во время запуска configure; она создается только при генерации выходных файлов. Это изменение поведения было сделано потому, что правильное экранирование содержимого этой переменной оказалось слишком громоздким и неэффективным при каждом вызове макроса AC_DEFINE. See section Имена переменных кэша.

Например, вот фрагмент `configure.in’, написанного для Autoconf версии 1:

AC_HAVE_FUNCS(syslog)
case “$DEFS” in
*-DHAVE_SYSLOG*) ;;
*) # syslog не находится в библиотеках по умолчанию. Смотрим, есть ли он в
   # других библиотеках.
  saved_LIBS=”$LIBS”
  for lib in bsd socket inet; do
    AC_CHECKING(for syslog in -l$lib)
    LIBS=”$saved_LIBS -l$lib”
    AC_HAVE_FUNCS(syslog)
    case “$DEFS” in
    *-DHAVE_SYSLOG*) break ;;
    *) ;;
    esac
    LIBS=”$saved_LIBS”
  done ;;
esac

Вот как это записывается для версии 2:

AC_CHECK_FUNCS(syslog)
if test $ac_cv_func_syslog = no; then
  # syslog не находится в библиотеках по умолчанию. Смотрим, есть ли он в
  # других библиотеках.
  for lib in bsd socket inet; do
    AC_CHECK_LIB($lib, syslog, [AC_DEFINE(HAVE_SYSLOG)
      LIBS=”$LIBS $lib”; break])
  done
fi

Если вы обходили ошибку в макросе AC_DEFINE_UNQUOTED, добавляя символы обратной косой черты перед кавычками, то теперь вам придется удалить их. Этот макрос сейчас работает предсказуемо и не рассматривает особым образом кавычки (кроме обратных). See section Установка выходных переменных.

Все логические переменные командного процессора, устанавливаемые макросами Autoconf, используют `yes’ для истинных переменных. Большинство из них использует `no’ для ложных значений, хотя для обратной совместимости некоторые из них используют пустую строку. Если вы полагались, что переменная командного процессора будет установлена в что-нибудь типа `1’ или `t’ для истинного значения, то вам необходимо изменить ваши тесты.


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

Comments