mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
e2ac9dda83
post-merge fixes
683 lines
20 KiB
Text
683 lines
20 KiB
Text
dnl ===========================================================================
|
|
dnl Support for plugable mysql server modules
|
|
dnl ===========================================================================
|
|
dnl
|
|
dnl WorkLog#3201
|
|
dnl
|
|
dnl Framework for pluggable static and dynamic modules for mysql
|
|
dnl
|
|
dnl ---------------------------------------------------------------------------
|
|
dnl Macro: MYSQL_MODULE
|
|
dnl
|
|
dnl Syntax:
|
|
dnl MYSQL_MODULE([name],[Plugin module name],
|
|
dnl [Plugin module description],
|
|
dnl [group,group...])
|
|
dnl
|
|
dnl What it does:
|
|
dnl First declaration for a plugin module (mandatory).
|
|
dnl Adds module as member to configuration groups (if specified)
|
|
dnl
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
AC_DEFUN([MYSQL_MODULE],[ dnl
|
|
_MYSQL_MODULE(
|
|
[$1],
|
|
[__MYSQL_MODULE_]AS_TR_CPP([$1])[__],
|
|
m4_default([$2], [$1 plugin]),
|
|
m4_default([$3], [plugin for $1]),
|
|
m4_default([$4], []),
|
|
) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_MODULE],[ dnl
|
|
m4_ifdef([$2], [ dnl
|
|
AC_FATAL([[Duplicate MYSQL_MODULE declaration for ]][$3]) dnl
|
|
],[ dnl
|
|
m4_define([$2], [$1]) dnl
|
|
_MYSQL_PLUGAPPEND([__mysql_plugin_list__],[$1]) dnl
|
|
m4_define([MYSQL_MODULE_NAME_]AS_TR_CPP([$1]), [$3]) dnl
|
|
m4_define([MYSQL_MODULE_DESC_]AS_TR_CPP([$1]), [$4]) dnl
|
|
ifelse([$5], [], [], [ dnl
|
|
_MYSQL_PLUGAPPEND_OPTS([$1], $5) dnl
|
|
]) dnl
|
|
]) dnl
|
|
])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
dnl Macro: MYSQL_STORAGE_ENGINE
|
|
dnl
|
|
dnl What it does:
|
|
dnl Short cut for storage engine declarations
|
|
dnl
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
AC_DEFUN([MYSQL_STORAGE_ENGINE],[ dnl
|
|
MYSQL_MODULE([$1], [$3], [$4], [[$5]]) dnl
|
|
MYSQL_MODULE_DEFINE([$1], [WITH_]AS_TR_CPP([$1])[_STORAGE_ENGINE]) dnl
|
|
ifelse([$2],[no],[],[ dnl
|
|
_MYSQL_LEGACY_STORAGE_ENGINE([$1],m4_default([$2], [$1-storage-engine])) dnl
|
|
]) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_LEGACY_STORAGE_ENGINE],[
|
|
if test "[${with_]m4_bpatsubst($2, -, _)[+set}]" = set; then
|
|
[with_module_]m4_bpatsubst($1, -, _)="[$with_]m4_bpatsubst($2, -, _)"
|
|
fi dnl
|
|
])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
dnl Macro: MYSQL_MODULE_DEFINE
|
|
dnl
|
|
dnl What it does:
|
|
dnl When a plugin module is to be statically linked, define the C macro
|
|
dnl
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
AC_DEFUN([MYSQL_MODULE_DEFINE],[ dnl
|
|
REQUIRE_PLUGIN([$1]) dnl
|
|
m4_define([MYSQL_MODULE_DEFINE_]AS_TR_CPP([$1]), [$2]) dnl
|
|
])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
dnl Macro: MYSQL_MODULE_DIRECTORY
|
|
dnl
|
|
dnl What it does:
|
|
dnl Adds a directory to the build process
|
|
dnl
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
AC_DEFUN([MYSQL_MODULE_DIRECTORY],[ dnl
|
|
REQUIRE_PLUGIN([$1]) dnl
|
|
m4_define([MYSQL_MODULE_DIRECTORY_]AS_TR_CPP([$1]), [$2]) dnl
|
|
])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
dnl Macro: MYSQL_MODULE_STATIC
|
|
dnl
|
|
dnl What it does:
|
|
dnl Declare the name for the static library
|
|
dnl
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
AC_DEFUN([MYSQL_MODULE_STATIC],[ dnl
|
|
REQUIRE_PLUGIN([$1]) dnl
|
|
m4_define([MYSQL_MODULE_STATIC_]AS_TR_CPP([$1]), [$2]) dnl
|
|
])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
dnl Macro: MYSQL_MODULE_DYNAMIC
|
|
dnl
|
|
dnl What it does:
|
|
dnl Declare the name for the shared library
|
|
dnl
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
AC_DEFUN([MYSQL_MODULE_DYNAMIC],[ dnl
|
|
REQUIRE_PLUGIN([$1]) dnl
|
|
m4_define([MYSQL_MODULE_DYNAMIC_]AS_TR_CPP([$1]), [$2]) dnl
|
|
])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
dnl Macro: MYSQL_MODULE_MANDATORY
|
|
dnl
|
|
dnl What it does:
|
|
dnl Marks the specified plugin as a mandatory module
|
|
dnl
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
AC_DEFUN([MYSQL_MODULE_MANDATORY],[ dnl
|
|
REQUIRE_PLUGIN([$1]) dnl
|
|
_MYSQL_MODULE_MANDATORY([$1],
|
|
[MYSQL_MODULE_MANDATORY_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1])
|
|
) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_MODULE_MANDATORY],[ dnl
|
|
m4_define([$2], [yes]) dnl
|
|
m4_ifdef([$3], [ dnl
|
|
AC_WARNING([syntax],[Mandatory plugin $1 has been disabled]) dnl
|
|
m4_undefine([$2]) dnl
|
|
]) dnl
|
|
])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
dnl Macro: MYSQL_MODULE_DISABLED
|
|
dnl
|
|
dnl What it does:
|
|
dnl Marks the specified plugin as a disabled module
|
|
dnl
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
AC_DEFUN([MYSQL_MODULE_DISABLED],[ dnl
|
|
REQUIRE_PLUGIN([$1]) dnl
|
|
_MYSQL_MODULE_DISABLED([$1],
|
|
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_MANDATORY_]AS_TR_CPP([$1])
|
|
) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_MODULE_DISABLED],[ dnl
|
|
m4_define([$2], [yes]) dnl
|
|
m4_ifdef([$3], [ dnl
|
|
AC_FATAL([attempt to disable mandatory plugin $1]) dnl
|
|
m4_undefine([$2]) dnl
|
|
]) dnl
|
|
])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
dnl Macro: MYSQL_MODULE_DEPENDS
|
|
dnl
|
|
dnl What it does:
|
|
dnl Enables other modules neccessary for this module
|
|
dnl Dependency checking is not recursive so if any
|
|
dnl required module requires further modules, list them
|
|
dnl here too!
|
|
dnl
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
AC_DEFUN([MYSQL_MODULE_DEPENDS],[ dnl
|
|
REQUIRE_PLUGIN([$1]) dnl
|
|
ifelse($#, 0, [], $#, 1, [ dnl
|
|
AC_FATAL([[bad number of arguments]]) dnl
|
|
], $#, 2, [ dnl
|
|
_MYSQL_MODULE_DEPEND([$1],[$2]) dnl
|
|
],[ dnl
|
|
_MYSQL_MODULE_DEPEND([$1],[$2]) dnl
|
|
MYSQL_MODULE_DEPENDS([$1], m4_shift(m4_shift($@))) dnl
|
|
])
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_MODULE_DEPEND],[ dnl
|
|
REQUIRE_PLUGIN([$2]) dnl
|
|
_MYSQL_PLUGAPPEND([__mysql_plugdepends_$1__],[$2]) dnl
|
|
])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
dnl Macro: MYSQL_MODULE_ACTIONS
|
|
dnl
|
|
dnl What it does:
|
|
dnl Declares additional actions required to configure the module
|
|
dnl
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
AC_DEFUN([MYSQL_MODULE_ACTIONS],[ dnl
|
|
REQUIRE_PLUGIN([$1]) dnl
|
|
m4_ifdef([$2],[ dnl
|
|
m4_define([MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1]),m4_defn([$2])) dnl
|
|
],[ dnl
|
|
m4_define([MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1]), [$2]) dnl
|
|
])
|
|
])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
dnl Macro: MYSQL_CONFIGURE_PLUGINS
|
|
dnl
|
|
dnl What it does:
|
|
dnl Called last, emits all required shell code to configure the modules
|
|
dnl
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
AC_DEFUN([MYSQL_CONFIGURE_PLUGINS],[ dnl
|
|
m4_ifdef([__mysql_plugin_configured__],[ dnl
|
|
AC_FATAL([cannot call [MYSQL_CONFIGURE_PLUGINS] multiple times]) dnl
|
|
],[ dnl
|
|
m4_define([__mysql_plugin_configured__],[done]) dnl
|
|
m4_ifdef([__mysql_plugin_list__],[ dnl
|
|
_MYSQL_CHECK_PLUGIN_ARGS([$1])
|
|
_MYSQL_CONFIGURE_PLUGINS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
|
|
_MYSQL_DO_PLUGIN_ACTIONS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
|
|
_MYSQL_POST_PLUGIN_FIXUP()
|
|
]) dnl
|
|
]) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_CONFIGURE_PLUGINS],[ dnl
|
|
ifelse($#, 0, [], $#, 1, [ dnl
|
|
_MYSQL_CHECK_PLUGIN([$1]) dnl
|
|
],[ dnl
|
|
_MYSQL_CHECK_PLUGIN([$1]) dnl
|
|
_MYSQL_CONFIGURE_PLUGINS(m4_shift($@)) dnl
|
|
])
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_CHECK_PLUGIN],[ dnl
|
|
_DO_MYSQL_CHECK_PLUGIN(
|
|
[$1],
|
|
[$1-plugin],
|
|
[MYSQL_MODULE_NAME_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DESC_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DEFINE_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DIRECTORY_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_STATIC_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DYNAMIC_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_MANDATORY_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1])
|
|
) dnl
|
|
])
|
|
|
|
AC_DEFUN([_DO_MYSQL_CHECK_PLUGIN],[ dnl
|
|
m4_ifdef([$5],[ dnl
|
|
AH_TEMPLATE($5, [Include ]$4[ into mysqld])
|
|
])
|
|
AC_MSG_CHECKING([whether to use ]$3) dnl
|
|
m4_ifdef([$10],[
|
|
if test "[$mysql_module_]m4_bpatsubst([$1], -, _)" = yes -a \
|
|
"[$with_module_]m4_bpatsubst([$1], -, _)" != no -o \
|
|
"[$with_module_]m4_bpatsubst([$1], -, _)" = yes; then
|
|
AC_MSG_ERROR([disabled])
|
|
fi
|
|
AC_MSG_RESULT([no]) dnl
|
|
],[ dnl
|
|
m4_ifdef([$9],[
|
|
if test "[$with_module_]m4_bpatsubst([$1], -, _)" = no; then
|
|
AC_MSG_ERROR([cannot disable mandatory module])
|
|
fi
|
|
[mysql_module_]m4_bpatsubst([$1], -, _)=yes dnl
|
|
])
|
|
if test "[$with_module_]m4_bpatsubst([$1], -, _)" != no; then
|
|
if test "[$mysql_module_]m4_bpatsubst([$1], -, _)" != yes -a \
|
|
"[$with_module_]m4_bpatsubst([$1], -, _)" != yes; then dnl
|
|
m4_ifdef([$8],[ dnl
|
|
m4_ifdef([$6],[
|
|
mysql_plugin_dirs="$mysql_plugin_dirs $6" dnl
|
|
])
|
|
AC_SUBST([plugin_]m4_bpatsubst([$1], -, _)[_shared_target], "$8")
|
|
AC_SUBST([plugin_]m4_bpatsubst([$1], -, _)[_static_target], [""])
|
|
[with_module_]m4_bpatsubst([$1], -, _)=yes
|
|
AC_MSG_RESULT([plugin]) dnl
|
|
],[
|
|
[with_module_]m4_bpatsubst([$1], -, _)=no
|
|
AC_MSG_RESULT([no]) dnl
|
|
])
|
|
else dnl
|
|
m4_ifdef([$7],[
|
|
ifelse(m4_bregexp($7, [^lib[^.]+\.a$]), -2, [ dnl
|
|
m4_ifdef([$6],[
|
|
mysql_plugin_dirs="$mysql_plugin_dirs $6"
|
|
mysql_plugin_libs="$mysql_plugin_libs -L[\$(top_builddir)]/$6" dnl
|
|
])
|
|
mysql_plugin_libs="$mysql_plugin_libs dnl
|
|
[-l]m4_bregexp($7, [^lib\([^.]+\)], [\1])" dnl
|
|
], m4_bregexp($7, [^\\\$]), 0, [ dnl
|
|
m4_ifdef([$6],[
|
|
mysql_plugin_dirs="$mysql_plugin_dirs $6" dnl
|
|
])
|
|
mysql_plugin_libs="$mysql_plugin_libs $7" dnl
|
|
], [ dnl
|
|
m4_ifdef([$6],[
|
|
mysql_plugin_dirs="$mysql_plugin_dirs $6"
|
|
mysql_plugin_libs="$mysql_plugin_libs \$(top_builddir)/$6/$7" dnl
|
|
],[
|
|
mysql_plugin_libs="$mysql_plugin_libs $7" dnl
|
|
]) dnl
|
|
]) dnl
|
|
m4_ifdef([$5],[
|
|
AC_DEFINE($5) dnl
|
|
])
|
|
AC_SUBST([plugin_]m4_bpatsubst([$1], -, _)[_static_target], "$7")
|
|
AC_SUBST([plugin_]m4_bpatsubst([$1], -, _)[_shared_target], [""]) dnl
|
|
],[ dnl
|
|
m4_ifdef([$6],[
|
|
AC_FATAL([plugin directory specified without library for ]$3) dnl
|
|
],[ dnl
|
|
m4_ifdef([$5],[
|
|
AC_DEFINE($5)
|
|
AC_SUBST([plugin_]m4_bpatsubst([$1], -, _)[_static_target], ["yes"])
|
|
AC_SUBST([plugin_]m4_bpatsubst([$1], -, _)[_shared_target], [""]) dnl
|
|
]) dnl
|
|
]) dnl
|
|
])
|
|
mysql_plugin_defs="$mysql_plugin_defs, [builtin_]m4_bpatsubst([$2], -, _)"
|
|
[with_module_]m4_bpatsubst([$1], -, _)=yes
|
|
AC_MSG_RESULT([yes])
|
|
fi
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi dnl
|
|
]) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_DO_PLUGIN_ACTIONS],[ dnl
|
|
ifelse($#, 0, [], $#, 1, [ dnl
|
|
_MYSQL_PLUGIN_ACTIONS([$1]) dnl
|
|
],[ dnl
|
|
_MYSQL_PLUGIN_ACTIONS([$1]) dnl
|
|
_MYSQL_DO_PLUGIN_ACTIONS(m4_shift($@)) dnl
|
|
])
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_PLUGIN_ACTIONS],[ dnl
|
|
_DO_MYSQL_PLUGIN_ACTIONS(
|
|
[$1],
|
|
[$1-plugin],
|
|
[MYSQL_MODULE_NAME_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DESC_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DEFINE_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DIRECTORY_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_STATIC_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DYNAMIC_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_MANDATORY_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1])
|
|
) dnl
|
|
])
|
|
|
|
|
|
AC_DEFUN([_DO_MYSQL_PLUGIN_ACTIONS],[ dnl
|
|
m4_ifdef([$10], [], [
|
|
if test "[$with_module_]m4_bpatsubst([$1], -, _)" = yes; then
|
|
if test -z "[$plugin_]m4_bpatsubst([$1], -, _)[_static_target]" -a \
|
|
-z "[$plugin_]m4_bpatsubst([$1], -, _)[_shared_target]"; then
|
|
AC_MSG_ERROR([thats strange, $1 failed sanity check])
|
|
fi
|
|
$11
|
|
fi dnl
|
|
]) dnl
|
|
])
|
|
|
|
|
|
|
|
dnl ===========================================================================
|
|
dnl Private helper macros
|
|
dnl ===========================================================================
|
|
|
|
|
|
AC_DEFUN([REQUIRE_PLUGIN],[ dnl
|
|
_REQUIRE_PLUGIN([$1], [__MYSQL_MODULE_]AS_TR_CPP([$1])[__]) dnl
|
|
])
|
|
|
|
define([_REQUIRE_PLUGIN],[ dnl
|
|
ifdef([$2],[ dnl
|
|
ifelse($2, [$1], [], [ dnl
|
|
AC_FATAL([[Misspelt MYSQL_MODULE declaration for ]][$1]) dnl
|
|
]) dnl
|
|
],[ dnl
|
|
AC_FATAL([[Missing MYSQL_MODULE declaration for ]][$1]) dnl
|
|
])
|
|
])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
|
|
AC_DEFUN([_MYSQL_MODULE_META_CHECK], [ifelse($#, 0, [], $#, 1, dnl
|
|
[_MYSQL_CHECK_PLUGIN_META([$1], [__mysql_]m4_bpatsubst($1, -, _)[_plugins__]) dnl
|
|
], dnl
|
|
[_MYSQL_CHECK_PLUGIN_META([$1], [__mysql_]m4_bpatsubst($1, -, _)[_plugins__]) dnl
|
|
_MYSQL_MODULE_META_CHECK(m4_shift($@))]) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_CHECK_PLUGIN_META], [
|
|
[$1] ) dnl
|
|
m4_ifdef([$2], [
|
|
mysql_modules='m4_bpatsubst($2, :, [ ])' dnl
|
|
],[
|
|
mysql_modules='' dnl
|
|
])
|
|
;; dnl
|
|
])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
|
|
AC_DEFUN([_MYSQL_PLUGAPPEND],[ dnl
|
|
m4_ifdef([$1],[ dnl
|
|
m4_define([__plugin_append_tmp__], m4_defn([$1])) dnl
|
|
m4_undefine([$1]) dnl
|
|
m4_define([$1], __plugin_append_tmp__[:$2]) dnl
|
|
m4_undefine([__plugin_append_tmp__]) dnl
|
|
],[ dnl
|
|
m4_define([$1], [$2]) dnl
|
|
$3 dnl
|
|
]) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_PLUGAPPEND_OPTS],[ dnl
|
|
ifelse($#, 0, [], $#, 1, [ dnl
|
|
AC_FATAL([[bad number of args]])
|
|
], $#, 2, [ dnl
|
|
_MYSQL_PLUGAPPEND_OPTONE([$1],[$2]) dnl
|
|
],[ dnl
|
|
_MYSQL_PLUGAPPEND_OPTONE([$1],[$2]) dnl
|
|
_MYSQL_PLUGAPPEND_OPTS([$1], m4_shift(m4_shift($@)))
|
|
])
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_PLUGAPPEND_OPTONE],[ dnl
|
|
ifelse([$2], [all], [ dnl
|
|
AC_FATAL([[protected plugin group: all]]) dnl
|
|
],[ dnl
|
|
ifelse([$2], [none], [ dnl
|
|
AC_FATAL([[protected plugin group: none]]) dnl
|
|
],[ dnl
|
|
_MYSQL_PLUGAPPEND([__mysql_$1_configs__],[$2]) dnl
|
|
_MYSQL_PLUGAPPEND([__mysql_]m4_bpatsubst($2, -, _)[_plugins__],[$1], [ dnl
|
|
_MYSQL_PLUGAPPEND([__mysql_metaplugin_list__],[$2]) dnl
|
|
]) dnl
|
|
]) dnl
|
|
]) dnl
|
|
])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
|
|
AC_DEFUN([MYSQL_LIST_PLUGINS],[ dnl
|
|
m4_ifdef([__mysql_plugin_list__],[ dnl
|
|
_MYSQL_LIST_PLUGINS(m4_bpatsubst(__mysql_plugin_list__, :, [,])) dnl
|
|
]) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_LIST_PLUGINS],[ dnl
|
|
ifelse($#, 0, [], $#, 1, [ dnl
|
|
MYSQL_SHOW_PLUGIN([$1]) dnl
|
|
],[ dnl
|
|
MYSQL_SHOW_PLUGIN([$1]) dnl
|
|
_MYSQL_LIST_PLUGINS(m4_shift($@)) dnl
|
|
]) dnl
|
|
])
|
|
|
|
AC_DEFUN([MYSQL_SHOW_PLUGIN],[ dnl
|
|
_MYSQL_SHOW_PLUGIN(
|
|
[$1],
|
|
[$1-plugin],
|
|
[MYSQL_MODULE_NAME_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DESC_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DEFINE_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DIRECTORY_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_STATIC_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DYNAMIC_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_MANDATORY_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1]),
|
|
__mysql_[$1]_configs__,
|
|
)
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_SHOW_PLUGIN],[
|
|
=== Plug-in: $3 ===
|
|
Module Name: [$1]
|
|
Description: $4
|
|
Supports build: _PLUGIN_BUILD_TYPE([$7],[$8]) dnl
|
|
m4_ifdef([$12],[
|
|
Configurations: m4_bpatsubst($12, :, [, ])]) dnl
|
|
m4_ifdef([$10],[
|
|
Status: disabled], [ dnl
|
|
m4_ifdef([$9],[
|
|
Status: mandatory])])])
|
|
|
|
AC_DEFUN([_PLUGIN_BUILD_TYPE], dnl
|
|
[m4_ifdef([$1],[ifelse($1,[no],[],[static ]m4_ifdef([$2],[and dnl
|
|
]))])[]m4_ifdef([$2],[dynamic],[m4_ifdef([$1],[],[static])])])
|
|
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
|
|
|
|
AC_DEFUN([_MYSQL_MODULE_ARGS_CHECK],[ dnl
|
|
ifelse($#, 0, [], $#, 1, [ dnl
|
|
_MYSQL_CHECK_PLUGIN_ARG([$1],
|
|
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1])) dnl
|
|
],[ dnl
|
|
_MYSQL_CHECK_PLUGIN_ARG([$1],
|
|
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),
|
|
[MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1])) dnl
|
|
_MYSQL_MODULE_ARGS_CHECK(m4_shift($@)) dnl
|
|
]) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_CHECK_PLUGIN_ARG],[ dnl
|
|
m4_ifdef([$3], [], [m4_define([$3],[ ])])
|
|
[$1] ) dnl
|
|
m4_ifdef([$2],[
|
|
AC_MSG_ERROR([plugin $1 is disabled]) dnl
|
|
],[
|
|
[mysql_module_]m4_bpatsubst([$1], -, _)=yes dnl
|
|
])
|
|
;; dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_SANE_VARS], [ dnl
|
|
ifelse($#, 0, [], $#, 1, [ dnl
|
|
_MYSQL_SANEVAR([$1]) dnl
|
|
],[ dnl
|
|
_MYSQL_SANEVAR([$1]) dnl
|
|
_MYSQL_SANE_VARS(m4_shift($@)) dnl
|
|
]) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_SANEVAR], [
|
|
test -z "[$mysql_module_]m4_bpatsubst([$1], -, _)" && dnl
|
|
[mysql_module_]m4_bpatsubst([$1], -, _)='.'
|
|
test -z "[$with_module_]m4_bpatsubst([$1], -, _)" && dnl
|
|
[with_module_]m4_bpatsubst([$1], -, _)='.' dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_CHECK_DEPENDENCIES], [ dnl
|
|
ifelse($#, 0, [], $#, 1, [ dnl
|
|
_MYSQL_CHECK_DEPENDS([$1],[__mysql_plugdepends_$1__]) dnl
|
|
],[ dnl
|
|
_MYSQL_CHECK_DEPENDS([$1],[__mysql_plugdepends_$1__]) dnl
|
|
_MYSQL_CHECK_DEPENDENCIES(m4_shift($@)) dnl
|
|
]) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_CHECK_DEPENDS], [ dnl
|
|
m4_ifdef([$2], [
|
|
if test "[$mysql_module_]m4_bpatsubst([$1], -, _)" = yes -a \
|
|
"[$with_module_]m4_bpatsubst([$1], -, _)" != no -o \
|
|
"[$with_module_]m4_bpatsubst([$1], -, _)" = yes; then dnl
|
|
_MYSQL_GEN_DEPENDS(m4_bpatsubst($2, :, [,]))
|
|
fi dnl
|
|
]) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_GEN_DEPENDS], [ dnl
|
|
ifelse($#, 0, [], $#, 1, [ dnl
|
|
_MYSQL_GEN_DEPEND([$1]) dnl
|
|
],[ dnl
|
|
_MYSQL_GEN_DEPEND([$1]) dnl
|
|
_MYSQL_GEN_DEPENDS(m4_shift($@)) dnl
|
|
]) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_GEN_DEPEND], [ dnl
|
|
m4_ifdef([MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),[
|
|
AC_MSG_ERROR([depends upon disabled module $1]) dnl
|
|
],[
|
|
[mysql_module_]m4_bpatsubst([$1], -, _)=yes
|
|
if test "[$with_module_]m4_bpatsubst([$1], -, _)" = no; then
|
|
AC_MSG_ERROR([depends upon disabled module $1])
|
|
fi dnl
|
|
]) dnl
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_CHECK_PLUGIN_ARGS],[
|
|
AC_ARG_WITH([modules], [
|
|
--with-modules=PLUGIN[[,PLUGIN..]]
|
|
m4_text_wrap([Plugin modules to include in mysqld. (default is: $1)
|
|
Must be configuration name or a comma seperated list of modules.],
|
|
[ ])
|
|
m4_text_wrap([Available configurations are: ]
|
|
m4_bpatsubst(m4_ifdef([__mysql_metaplugin_list__], dnl
|
|
none:all:__mysql_metaplugin_list__,none:all), :, [ ])[.],
|
|
[ ])
|
|
m4_text_wrap([Available plugin modules are: ] dnl
|
|
m4_bpatsubst(__mysql_plugin_list__, :, [ ])[.], [ ])
|
|
--without-module-PLUGIN
|
|
m4_text_wrap([Disable the named module from being built. Otherwise,
|
|
for modules which are not selected for inclusion in mysqld will be
|
|
built dynamically (if supported)],[ ])
|
|
],[mysql_modules="`echo $withval | tr ',.:;*[]' ' '`"],
|
|
[mysql_modules=['$1']])
|
|
|
|
m4_divert_once([HELP_VAR_END],[
|
|
Description of plugin modules:
|
|
m4_indir([MYSQL_LIST_PLUGINS])
|
|
])
|
|
|
|
case "$mysql_modules" in
|
|
all )
|
|
mysql_modules='m4_bpatsubst(__mysql_plugin_list__, :, [ ])'
|
|
;;
|
|
none )
|
|
mysql_modules=''
|
|
;; dnl
|
|
m4_ifdef([__mysql_metaplugin_list__],[ dnl
|
|
_MYSQL_MODULE_META_CHECK(m4_bpatsubst(__mysql_metaplugin_list__, :, [,])) dnl
|
|
])
|
|
esac
|
|
|
|
for plugin in $mysql_modules; do
|
|
case "$plugin" in
|
|
all )
|
|
AC_MSG_ERROR([bad module name: $plugin])
|
|
;;
|
|
none )
|
|
AC_MSG_ERROR([bad module name: $plugin])
|
|
;; dnl
|
|
_MYSQL_MODULE_ARGS_CHECK(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
|
|
* )
|
|
AC_MSG_ERROR([unknown plugin module: $plugin])
|
|
;;
|
|
esac
|
|
done
|
|
|
|
_MYSQL_SANE_VARS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
|
|
_MYSQL_CHECK_DEPENDENCIES(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
|
|
])
|
|
|
|
AC_DEFUN([_MYSQL_POST_PLUGIN_FIXUP],[
|
|
for plugdir in $mysql_plugin_dirs; do
|
|
case "$plugdir" in
|
|
storage/* )
|
|
mysql_se_dirs="$mysql_se_dirs `echo $plugdir | sed -e 's@^storage/@@'`"
|
|
;;
|
|
plugin/* )
|
|
mysql_pg_dirs="$mysql_pg_dirs `echo $plugdir | sed -e 's@^plugin/@@'`"
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR([don't know how to handle plugin dir $plugdir])
|
|
;;
|
|
esac
|
|
done
|
|
AC_SUBST(mysql_se_dirs)
|
|
AC_SUBST(mysql_pg_dirs)
|
|
])
|
|
|
|
dnl ===========================================================================
|