pluggable storage engine関係のautoconfマクロ
config/ac-macros/plugins.m4参照。
pluggable storage engineのplug.inを書く上で関係しそうなものをピックアップ。
MYSQL_STORAGE_ENGINE
利用方法
dnl Macro: MYSQL_STORAGE_ENGINE dnl dnl SYNOPSIS dnl MYSQL_STORAGE_ENGINE([name],[legacy-option],[Storage engine name], dnl [Storage engine description],[group,group...]) dnl dnl DESCRIPTION dnl Short cut for storage engine declarations
定義
AC_DEFUN([MYSQL_STORAGE_ENGINE],[ MYSQL_PLUGIN([$1], [$3], [$4], [[$5]]) MYSQL_PLUGIN_DEFINE([$1], [WITH_]AS_TR_CPP([$1])[_STORAGE_ENGINE]) ifelse([$2],[no],[],[ _MYSQL_LEGACY_STORAGE_ENGINE( m4_bpatsubst([$1], -, _), m4_bpatsubst(m4_default([$2], [$1-storage-engine]), -, _)) ]) ])
MYSQL_PLUGINマクロの詳細はとりあえず置いておこう。
利用例
MYSQL_STORAGE_ENGINE(skeleton,,[Skeleton Storage Engine], [Skeleton Engine for writing engines], [max,max-no-ndb])
ここで第5引数に[max,max-no-ndb]を定義しているけれども、これはconfigure時の--with-pluginsで、グループ名が指定されたときにこのエンジンが対象となるかどうかの判別に使われているっぽい。
--with-plugins=PLUGIN[,PLUGIN..] Plugins to include in mysqld. (default is: none) Must be a configuration name or a comma separated list of plugins. Available configurations are: none max max-no-ndb all. Available plugins are: partition daemon_example ftexample archive blackhole csv example federated heap innobase myisam myisammrg ndbcluster.
他のエンジンのplug.inを見ても同じように書いてるし、とりあえず真似して書いておけばよさげ。
MYSQL_PLUGIN_STATIC
利用方法
dnl Macro: MYSQL_PLUGIN_STATIC dnl dnl SYNOPSIS dnl MYSQL_PLUGIN_STATIC([name],[libmyplugin.a]) dnl dnl DESCRIPTION dnl Declare the name for the static library
定義
AC_DEFUN([MYSQL_PLUGIN_STATIC],[ MYSQL_REQUIRE_PLUGIN([$1]) m4_define([MYSQL_PLUGIN_STATIC_]AS_TR_CPP([$1]), [$2]) ])
利用例
MYSQL_PLUGIN_STATIC(skeleton, [libskeleton.a])
MYSQL_PLUGIN_DYNAMIC
利用方法
dnl Macro: MYSQL_PLUGIN_DYNAMIC dnl dnl SYNOPSIS dnl MYSQL_PLUGIN_DYNAMIC([name],[myplugin.la]) dnl dnl DESCRIPTION dnl Declare the name for the shared library
定義
AC_DEFUN([MYSQL_PLUGIN_DYNAMIC],[ MYSQL_REQUIRE_PLUGIN([$1]) m4_define([MYSQL_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]), [$2]) ])
利用例
MYSQL_PLUGIN_DYNAMIC(skeleton, [ha_skeleton.la])
skeleton engineで使ってたのはこんなところ。Tokyo engineも同様だった。