Autoconf Производит настройку с нарушенными функциями (ac_fn_set_status, ac_fn_exit) - PullRequest
2 голосов
/ 20 июля 2010

Я пытаюсь настроить autoconf для моего проекта. У меня все работает "правильно", за исключением того, что функции ac_set _ <...> не найдены в ./configure. Они прекрасно работают в configure.status, если я запускаю его напрямую.

В частности, у меня проблемы с as_fn_set_status и as_fn_exit.

Если я вручную отредактирую файл конфигурации и переместу две функции в начало скрипта настройки, все будет работать нормально.

Чтобы добраться до этой точки, я:

  1. Написал configure.ac
  2. запустил autoreconf -i
  3. run ./configure

Полученные строки выглядят примерно так:

./configure: line 1366: as_fn_set_status: command not found

Есть 3-4 строки, в которых возникает ошибка.

Есть идеи о том, что может вызвать этот эффект? Вот мой configure.ac:

##########################################
#  Autoconf Configuration File for RPDB  #
##########################################

#   RPDB: An Object-Oriented Wrapper for Oracle's Berkeley Database (BDB/libdb),
#   which is available at: http://www.oracle.com/technology/software/products/berkeley-db/index.html

###########################
#  Init Autoconf >= 2.61  #
###########################

AC_CANONICAL_SYSTEM

AC_PREREQ(2.61)
AC_INIT([rpdb], [0.1.0], [asher@ridiculouspower.com])

AC_CONFIG_AUX_DIR([.])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_FILES([Makefile])
AC_CONFIG_HEADERS([config.h])

AM_INIT_AUTOMAKE

#################################
#  Check for Library Functions  #
#################################

AC_FUNC_ERROR_AT_LINE
AC_FUNC_MALLOC
AC_CHECK_FUNCS([strdup])

################################
#  Check for Working Compiler  #
################################

AC_PROG_CC
AC_PROG_RANLIB

#########################
#  Check for Libraries  #
#########################

AC_SEARCH_LIBS([db_create], [db], [have_libdb=yes])

#######################
#  "Root Sourcefile"  #
#######################

# "Root Sourcefile" is only used nominally to specify base path

AC_CONFIG_SRCDIR([src/RPDB_Base/RPDB.h])

#######################
#  Check for Headers  #
#######################

AC_HEADER_STDC
AC_CHECK_HEADERS([stdlib.h string.h])

# If we found libdb then check for db.h - we need to have both or we throw an error
if test "x${have_libdb}" = xyes; then
  AC_CHECK_HEADERS([db.h], [], [have_libdb=no])
fi
if test "x${have_libdb}" = xno; then
  echo "------------------------------------------"
  echo " Oracle's Berkeley Database (libdb)       "
  echo " library and header file is required to   "
  echo " build RPDB. Stopping...                  "
  echo " Check 'config.log' for more information. "
  echo "------------------------------------------"
  (exit 1); exit 1;
fi

#####################################################
#  Check For Type-Related Compiler Characteristics  #
#####################################################

AC_C_CONST
AC_HEADER_STDBOOL
AC_TYPE_INT32_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_TYPE_UINT8_T

###############################
#  Generate Configure Script  #
###############################

AC_OUTPUT

Ответы [ 3 ]

4 голосов
/ 31 июля 2010

Вы не можете вызывать любые макросы с непустым расширением до AC_INIT.Если вы переместите вызов AC_CANONICAL_SYSTEM после AC_INIT, ваша проблема должна исчезнуть.

1 голос
/ 10 декабря 2011

У меня была проблема с подобием, которая сводила меня с ума и в конце концов обнаружила проблему: Я попытался скомпилировать старый проект, который предоставил свои собственные m4-макросы. Во включенных m4-файлах (в подкаталоге config) были вызовы AC_DEFFUN, которые предоставили третий аргумент. Я не понимал, почему это вызвало эту проблему, но снятие третьего аргумента помогло.

0 голосов
/ 23 июля 2010

Возможно, у вас установлен другой autoconf.Я думаю, что функция происходит из макроса m4: m4sugar/m4sh.m4.Вы можете проверить этот файл, чтобы увидеть, имеет ли он функцию.

Это должно выглядеть примерно так:

[AS_REQUIRE_SHELL_FN([as_fn_set_status],
  [AS_FUNCTION_DESCRIBE([as_fn_set_status], [STATUS],
    [Set $? to STATUS, without forking.])], [  return $[]1])]dnl
...