MySQL内部手册/插件/ Autotools插件宏

5.4 Autotools插件宏

以下宏在autotools配置文件中启用插件支持。

  • 声明一个插件:

MYSQL_PLUGIN (的名字,长名称,描述(,configlist])

每个插件都需要有MYSQL_PLUGIN ()首先声明。configlist是一个可选参数,它是一个以逗号分隔的配置列表,该模块是其成员。例子:

MYSQL_PLUGIN(ftexample, [Simple Parser], [Simple full-text Parser plugin])
  • 声明一个存储引擎插件:

MYSQL_STORAGE_ENGINE (的名字,legacy-opt,长名称,描述(,configlist])

这是一个简单的实用程序宏调用MYSQL_PLUGIN。它执行声明存储引擎插件所需的基本功能,并为处理遗留文件提供支持配置命令行选项。如果legacy-opt未指定时,将默认为——with-name-storage-engine。设置legacy-opt价值没有如果您不想处理任何遗留选项。这个宏大致相当于:

MYSQL_PLUGIN (的名字长名称,,描述)MYSQL_PLUGIN_DEFINE (的名字,听的名字_STORAGE_ENGINE)

例子:

MYSQL_STORAGE_ENGINE(berkeley, berkeley-db, [BerkeleyDB存储引擎],[BerkeleyDB事务表使用],[max,max-no-ndb])
  • 声明一个C预处理器变量:

MYSQL_PLUGIN_DEFINE (的名字,定义名称)

当一个插件将被包含在静态构建中,这将把一个预处理器变量设置为1。中定义了这些预处理器变量config.h。例子:

MYSQL_PLUGIN_DEFINE (innobase WITH_INNOBASE_STORAGE_ENGINE)
  • 为插件声明一个源目录:

MYSQL_PLUGIN_DIRECTORY (的名字,dir-name)

将指定的目录包含到构建中。如果一个名为配置在目录中检测到,它将作为配置否则,假定存在Makefile在该目录中构建。属性中指定的插件目录目前只支持存储/插件/子目录。例子:

MYSQL_PLUGIN_DIRECTORY(归档,存储/存档)
  • 为插件声明一个静态库名称:

MYSQL_PLUGIN_STATIC (的名字,dir-name)

设置配置替换@plugin_name_static_target@如果插件是静态构建,则使用提供的库名。它还将库添加到要链接到的库列表中mysqld。它可以只是库的名称(如果指定了一个目录,则该目录将作为链接的前缀),也可以是其他的使变量或替换(在这种情况下,它将按原样传递)。例子:

MYSQL_PLUGIN_STATIC(berkeley, [[\$(bdb_libs_with_path)]])
  • 为插件声明一个动态库名称:

MYSQL_PLUGIN_DYNAMIC (的名字,dso-name)

设置配置替换@plugin_name_shared_target@如果模块是动态构建的,则设置为所提供的动态共享对象库名称。例子:

[ha_archive.la] MYSQL_PLUGIN_DYNAMIC(归档)
  • 将插件声明为强制模块:

MYSQL_PLUGIN_MANDATORY (的名字)

强制插件不能被禁用。例子:

MYSQL_PLUGIN_MANDATORY (myisam)
  • 声明一个插件为disabled:

MYSQL_PLUGIN_DISABLED (的名字)

被禁用的插件将不会包含在任何构建中。如果插件被标记为强制性的,它将导致一个autoconf错误。

  • 宣布额外的插件配置行动:

MYSQL_PLUGIN_ACTIONS (的名字,configure-actions)

如果有额外的,这是有用的配置插件所需的操作。的configure-actions参数可以是autoconf宏或更多autoconf脚本。例子:

MYSQL_PLUGIN_ACTIONS (ndbcluster [MYSQL_SETUP_NDBCLUSTER])
  • 宣布插件依赖关系:

MYSQL_PLUGIN_DEPENDS (的名字,依赖关系)

以逗号分隔的列表声明构建指定插件所需的所有插件。如果指定的插件被选中,它将启用它的所有依赖项。所有被列为依赖项的插件必须已经被声明过MYSQL_PLUGIN ()。例子:

MYSQL_PLUGIN_DEPENDS (ndbcluster(分区))
  • 表演魔术:

MYSQL_CONFIGURE_PLUGINS (缺省名称)

执行生成shell脚本的任务配置根据以前所作的声明。它会发出必要的shell代码来检查选项并相应地设置变量。例子:

MYSQL_CONFIGURE_PLUGINS([所有])

Plugin-related配置错误:

  • 在任何插件宏被调用之前MYSQL_PLUGIN ()为该插件声明,配置以错误终止。

  • 当依赖项列表中指定的任何插件都不存在时,配置以错误终止。

  • 中指定一个强制插件时——without-plugin-PLUGIN,配置以错误终止。

  • 中指定禁用插件时——以模块=…——with-plugin =插件,配置报告一个错误。

  • 中指定了一个只能动态构建的可选插件——使用插件=…——with-plugin-PLUGIN,配置发出警告并继续为动态构建配置插件。

  • 当一个只能静态构建的可选插件被指定时——使用插件=…也不——without-plugin-PLUGIN,配置发出警告,但无论如何都应该继续。

避免configure.in变化:

  • 控件的子目录中存储/插件/目录)包含一个plug.in文件(例如,存储/ / plug.in示例),此文件将作为configure.in。这种方式,configure.in在构建中添加新插件不需要进行修改。

  • 一个plug.in文件可以包含所有内容,特别是所有内容MYSQL_PLUGIN_xxx如刚才描述的宏。的plug.in文件不需要指定MYSQL_PLUGIN_DIRECTORY;的目录plug.in文件。