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も同様だった。