Autoconf使用Broken函数生成配置(ac_fn_set_status,ac_fn_exit)

时间:2010-07-20 09:16:40

标签: function autoconf configure

我正在尝试为我的项目设置autoconf。除了ac_set_< ...>之外,我还能正常工作。在./configure中找不到函数。如果我直接运行它们,它们在configure.status中工作正常。

具体来说,我遇到了as_fn_set_status和as_fn_exit的问题。

如果我手动编辑配置文件并将两个函数移到配置脚本的顶部,一切正常。

为了达到这一点,我:

  1. 写了configure.ac
  2. 运行autoreconf -i
  3. 跑./configure
  4. 结果行如下:

    ./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 个答案:

答案 0 :(得分:4)

您无法在AC_INIT之前调用任何具有非空扩展的宏。如果将AC_CANONICAL_SYSTEM的调用移到AC_INIT之后,则问题应该消失。

答案 1 :(得分:1)

我有一个类似的问题让我发疯并最终发现了问题: 我试图编译一个提供自己的m4宏的旧项目。在包含的m4文件中(在config子目录中),已经调用了提供第三个参数的AC_DEFFUN。 我不明白为什么这会引起这个问题但是拿走第三个论点有帮助。

答案 2 :(得分:0)

相关问题