diff options
Diffstat (limited to 'config/ac-macros/plugins.m4')
-rw-r--r-- | config/ac-macros/plugins.m4 | 862 |
1 files changed, 0 insertions, 862 deletions
diff --git a/config/ac-macros/plugins.m4 b/config/ac-macros/plugins.m4 deleted file mode 100644 index 2aed1267fe6..00000000000 --- a/config/ac-macros/plugins.m4 +++ /dev/null @@ -1,862 +0,0 @@ -dnl =========================================================================== -dnl Support for mysql server plugins -dnl =========================================================================== -dnl -dnl WorkLog#3201 -dnl -dnl Framework for pluggable static and dynamic plugins for mysql -dnl -dnl --------------------------------------------------------------------------- -dnl Macro: MYSQL_PLUGIN -dnl -dnl SYNOPSIS -dnl MYSQL_PLUGIN([name],[Plugin name], -dnl [Plugin description], -dnl [group,group...]) -dnl -dnl DESCRIPTION -dnl First declaration for a plugin (mandatory). -dnl Adds plugin as member to configuration groups (if specified) -dnl -dnl --------------------------------------------------------------------------- - -AC_DEFUN([MYSQL_PLUGIN],[ - _MYSQL_PLUGIN( - [$1], - [__MYSQL_PLUGIN_]AS_TR_CPP([$1])[__], - m4_default([$2], [$1 plugin]), - m4_default([$3], [plugin for $1]), - m4_default([$4], []), - ) -]) - -AC_DEFUN([_MYSQL_PLUGIN],[ - m4_ifdef([$2], [ - AC_FATAL([Duplicate MYSQL_PLUGIN declaration for $3]) - ],[ - m4_define([$2], [$1]) - _MYSQL_PLUGAPPEND([__mysql_plugin_list__],[$1]) - m4_define([MYSQL_PLUGIN_NAME_]AS_TR_CPP([$1]), [$3]) - m4_define([MYSQL_PLUGIN_DESC_]AS_TR_CPP([$1]), [$4]) - _MYSQL_PLUGAPPEND_META([$1], $5) - ifelse(m4_bregexp(__mysql_include__,[/plug\.in$]),-1,[],[ - MYSQL_PLUGIN_DIRECTORY([$1], - m4_bregexp(__mysql_include__,[^\(.*\)/plug\.in$],[\1])) - ]) - ]) -]) - - -dnl --------------------------------------------------------------------------- -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 -dnl -dnl --------------------------------------------------------------------------- - -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]), -, _)) - ]) -]) - -AC_DEFUN([_MYSQL_LEGACY_STORAGE_ENGINE],[ -if test "[${with_]$2[+set}]" = set; then - [with_plugin_]$1="[$with_]$2" -fi -]) - - -dnl --------------------------------------------------------------------------- -dnl Macro: MYSQL_PLUGIN_DEFINE -dnl -dnl SYNOPSIS -dnl MYSQL_PLUGIN_DEFINE([name],[MYSQL_CPP_DEFINE]) -dnl -dnl DESCRIPTION -dnl When a plugin is to be statically linked, define the C macro -dnl -dnl --------------------------------------------------------------------------- - -AC_DEFUN([MYSQL_PLUGIN_DEFINE],[ - MYSQL_REQUIRE_PLUGIN([$1]) - m4_define([MYSQL_PLUGIN_DEFINE_]AS_TR_CPP([$1]), [$2]) -]) - - -dnl --------------------------------------------------------------------------- -dnl Macro: MYSQL_PLUGIN_DIRECTORY -dnl -dnl SYNOPSIS -dnl MYSQL_PLUGIN_DIRECTORY([name],[plugin/dir]) -dnl -dnl DESCRIPTION -dnl Adds a directory to the build process -dnl if it contains 'configure' it will be picked up automatically -dnl -dnl --------------------------------------------------------------------------- - -AC_DEFUN([MYSQL_PLUGIN_DIRECTORY],[ - MYSQL_REQUIRE_PLUGIN([$1]) - m4_define([MYSQL_PLUGIN_DIRECTORY_]AS_TR_CPP([$1]), [$2]) -]) - - -dnl --------------------------------------------------------------------------- -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 -dnl -dnl --------------------------------------------------------------------------- - -AC_DEFUN([MYSQL_PLUGIN_STATIC],[ - MYSQL_REQUIRE_PLUGIN([$1]) - m4_define([MYSQL_PLUGIN_STATIC_]AS_TR_CPP([$1]), [$2]) -]) - - -dnl --------------------------------------------------------------------------- -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 -dnl -dnl --------------------------------------------------------------------------- - -AC_DEFUN([MYSQL_PLUGIN_DYNAMIC],[ - MYSQL_REQUIRE_PLUGIN([$1]) - m4_define([MYSQL_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]), [$2]) -]) - - -dnl --------------------------------------------------------------------------- -dnl Macro: MYSQL_PLUGIN_MANDATORY -dnl -dnl SYNOPSIS -dnl MYSQL_PLUGIN_MANDATORY([name]) -dnl -dnl DESCRIPTION -dnl Marks the specified plugin as a mandatory plugin -dnl -dnl --------------------------------------------------------------------------- - -AC_DEFUN([MYSQL_PLUGIN_MANDATORY],[ - MYSQL_REQUIRE_PLUGIN([$1]) - _MYSQL_PLUGIN_MANDATORY([$1], - [MYSQL_PLUGIN_MANDATORY_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]) - ) -]) - -AC_DEFUN([_MYSQL_PLUGIN_MANDATORY],[ - m4_define([$2], [yes]) - m4_ifdef([$3], [ - AC_FATAL([mandatory plugin $1 has been disabled]) - m4_undefine([$2]) - ]) -]) - - -dnl --------------------------------------------------------------------------- -dnl Macro: MYSQL_PLUGIN_DISABLED -dnl -dnl SYNOPSIS -dnl MYSQL_PLUGIN_DISABLED([name]) -dnl -dnl DESCRIPTION -dnl Marks the specified plugin as a disabled plugin -dnl -dnl --------------------------------------------------------------------------- - -AC_DEFUN([MYSQL_PLUGIN_DISABLED],[ - MYSQL_REQUIRE_PLUGIN([$1]) - _MYSQL_PLUGIN_DISABLED([$1], - [MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_MANDATORY_]AS_TR_CPP([$1]) - ) -]) - -AC_DEFUN([_MYSQL_PLUGIN_DISABLED],[ - m4_define([$2], [yes]) - m4_ifdef([$3], [ - AC_FATAL([attempt to disable mandatory plugin $1]) - m4_undefine([$2]) - ]) -]) - - -dnl --------------------------------------------------------------------------- -dnl Macro: MYSQL_PLUGIN_DEPENDS -dnl -dnl SYNOPSIS -dnl MYSQL_PLUGIN_DEPENDS([name],[prereq,prereq...]) -dnl -dnl DESCRIPTION -dnl Enables other plugins neccessary for the named plugin -dnl Dependency checking is not recursive so if any -dnl required plugin requires further plugins, list them -dnl here too! -dnl -dnl --------------------------------------------------------------------------- - -AC_DEFUN([MYSQL_PLUGIN_DEPENDS],[ - MYSQL_REQUIRE_PLUGIN([$1]) - ifelse($#, 2, [ - _MYSQL_PLUGIN_DEPEND([$1], $2) - ], [ - AC_FATAL([bad number of arguments]) - ]) -]) - -AC_DEFUN([_MYSQL_PLUGIN_DEPEND],[ - ifelse($#, 1, [], [$#:$2], [2:], [], [ - MYSQL_REQUIRE_PLUGIN([$2]) - _MYSQL_PLUGAPPEND([__mysql_plugdepends_$1__],[$2]) - _MYSQL_PLUGIN_DEPEND([$1], m4_shift(m4_shift($@))) - ]) -]) - - -dnl --------------------------------------------------------------------------- -dnl Macro: MYSQL_PLUGIN_ACTIONS -dnl -dnl SYNOPSIS -dnl MYSQL_PLUGIN_ACTIONS([name],[PLUGIN_CONFIGURE_STUFF]) -dnl -dnl DESCRIPTION -dnl Declares additional autoconf actions required to configure the plugin -dnl -dnl --------------------------------------------------------------------------- - -AC_DEFUN([MYSQL_PLUGIN_ACTIONS],[ - MYSQL_REQUIRE_PLUGIN([$1]) - m4_ifdef([$2],[ - m4_define([MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1]),m4_defn([$2])) - ],[ - m4_define([MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1]), [$2]) - ]) -]) - -dnl --------------------------------------------------------------------------- -dnl Macro: MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS -dnl -dnl SYNOPSIS -dnl MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS([name],[file name]) -dnl -dnl DESCRIPTION -dnl Some modules in plugins keep dependance on structures -dnl declared in sql/ (THD class usually) -dnl That has to be fixed in the future, but until then -dnl we have to recompile these modules when we want to -dnl to compile server parts with the different #defines -dnl Normally it happens when we compile the embedded server -dnl Thus one should mark such files in his handler using this macro -dnl (currently only one such a file per plugin is supported) -dnl -dnl --------------------------------------------------------------------------- - -AC_DEFUN([MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS],[ - MYSQL_REQUIRE_PLUGIN([$1]) - m4_define([MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS_]AS_TR_CPP([$1]), [$2]) -]) - -dnl --------------------------------------------------------------------------- -dnl Macro: MYSQL_CONFIGURE_PLUGINS -dnl -dnl SYNOPSIS -dnl MYSQL_PLUGIN_DEPENDS([name,name...]) -dnl -dnl DESCRIPTION -dnl Used last, emits all required shell code to configure the plugins -dnl Argument is a list of default plugins or meta-plugin -dnl -dnl --------------------------------------------------------------------------- - -AC_DEFUN([MYSQL_CONFIGURE_PLUGINS],[ - m4_ifdef([__mysql_plugin_configured__],[ - AC_FATAL([cannot use [MYSQL_CONFIGURE_PLUGINS] multiple times]) - ],[ - m4_define([__mysql_plugin_configured__],[done]) - _MYSQL_INCLUDE_LIST( - m4_bpatsubst(m4_esyscmd([ls plugin/*/plug.in storage/*/plug.in 2>/dev/null]), -[[ -]],[,])) - m4_ifdef([__mysql_plugin_list__],[ - _MYSQL_CHECK_PLUGIN_ARGS([$1]) - _MYSQL_CONFIGURE_PLUGINS(m4_bpatsubst(__mysql_plugin_list__, :, [,])) - _MYSQL_EMIT_PLUGIN_ACTIONS(m4_bpatsubst(__mysql_plugin_list__, :, [,])) - AC_SUBST([mysql_se_dirs]) - AC_SUBST([mysql_se_distdirs]) - AC_SUBST([mysql_pg_dirs]) - AC_SUBST([mysql_pg_distdirs]) - AC_SUBST([mysql_se_unittest_dirs]) - AC_SUBST([mysql_pg_unittest_dirs]) - AC_SUBST([condition_dependent_plugin_modules]) - AC_SUBST([condition_dependent_plugin_objects]) - AC_SUBST([condition_dependent_plugin_links]) - AC_SUBST([condition_dependent_plugin_includes]) - ]) - ]) -]) - -AC_DEFUN([_MYSQL_CONFIGURE_PLUGINS],[ - ifelse($#, 0, [], $#, 1, [ - _MYSQL_EMIT_CHECK_PLUGIN([$1]) - ],[ - _MYSQL_EMIT_CHECK_PLUGIN([$1]) - _MYSQL_CONFIGURE_PLUGINS(m4_shift($@)) - ]) -]) - -AC_DEFUN([_MYSQL_EMIT_CHECK_PLUGIN],[ - __MYSQL_EMIT_CHECK_PLUGIN( - [$1], - m4_bpatsubst([$1], -, _), - [MYSQL_PLUGIN_NAME_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_DESC_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_DEFINE_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_DIRECTORY_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_STATIC_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_MANDATORY_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1]) - ) -]) - -AC_DEFUN([__MYSQL_EMIT_CHECK_PLUGIN],[ - m4_ifdef([$5],[ - AH_TEMPLATE($5, [Include ]$4[ into mysqld]) - ]) - AC_MSG_CHECKING([whether to use ]$3) - mysql_use_plugin_dir="" - m4_ifdef([$10],[ - if test "X[$mysql_plugin_]$2" = Xyes -a \ - "X[$with_plugin_]$2" != Xno -o \ - "X[$with_plugin_]$2" = Xyes; then - AC_MSG_RESULT([error]) - AC_MSG_ERROR([disabled]) - fi - AC_MSG_RESULT([no]) - ],[ - - # Plugin is not disabled, determine if it should be built, - # or only distributed - - m4_ifdef([$6], [ - if test ! -d "$srcdir/$6"; then - # Plugin directory was removed after autoconf was run; treat - # this as a disabled plugin - if test "X[$with_plugin_]$2" = Xyes; then - AC_MSG_RESULT([error]) - AC_MSG_ERROR([disabled]) - fi - - # The result message will be printed below - [with_plugin_]$2=no - fi - ]) - - m4_ifdef([$9],[ - if test "X[$with_plugin_]$2" = Xno; then - AC_MSG_RESULT([error]) - AC_MSG_ERROR([cannot disable mandatory plugin]) - fi - [mysql_plugin_]$2=yes - ],[ - case "$with_mysqld_ldflags " in - *"-all-static "*) - # No need to build shared plugins when mysqld is linked with - # -all-static as it won't be able to load them. - if test "X[$mysql_plugin_]$2" != Xyes -a \ - "X[$with_plugin_]$2" != Xyes; then - [with_plugin_]$2=no - fi - ;; - esac - ]) - - - if test "X[$with_plugin_]$2" = Xno; then - AC_MSG_RESULT([no]) - else - m4_ifdef([$8],m4_ifdef([$7],[],[[with_plugin_]$2=''])) - if test "X[$mysql_plugin_]$2" != Xyes -a \ - "X[$with_plugin_]$2" != Xyes; then - m4_ifdef([$8],[ - m4_ifdef([$6],[ - if test -d "$srcdir/$6" ; then - mysql_use_plugin_dir="$6" - ]) - AC_SUBST([plugin_]$2[_shared_target], "$8") - AC_SUBST([plugin_]$2[_static_target], [""]) - [with_plugin_]$2=yes - AC_MSG_RESULT([plugin]) - m4_ifdef([$6],[ - else - [mysql_plugin_]$2=no - AC_MSG_RESULT([no]) - fi - ]) - ],[ - [with_plugin_]$2=no - AC_MSG_RESULT([no]) - ]) - else - m4_ifdef([$7],[ - ifelse(m4_bregexp($7, [^lib[^.]+\.a$]), -2, [ -dnl change above "-2" to "0" to enable this section -dnl Although this is "pretty", it breaks libmysqld build - m4_ifdef([$6],[ - mysql_use_plugin_dir="$6" - mysql_plugin_libs="$mysql_plugin_libs -L[\$(top_builddir)]/$6" - ]) - mysql_plugin_libs="$mysql_plugin_libs dnl -[-l]m4_bregexp($7, [^lib\([^.]+\)], [\1])" - ], m4_bregexp($7, [^\\\$]), 0, [ - m4_ifdef([$6],[ - mysql_use_plugin_dir="$6" - ]) - mysql_plugin_libs="$mysql_plugin_libs $7" - ], [ - m4_ifdef([$6],[ - mysql_use_plugin_dir="$6" - mysql_plugin_libs="$mysql_plugin_libs \$(top_builddir)/$6/$7" - ],[ - mysql_plugin_libs="$mysql_plugin_libs $7" - ]) - ]) - m4_ifdef([$5],[ - AC_DEFINE($5) - ]) - AC_SUBST([plugin_]$2[_static_target], "$7") - AC_SUBST([plugin_]$2[_shared_target], [""]) - ],[ - m4_ifdef([$6],[ - AC_MSG_RESULT([error]) - AC_MSG_ERROR([Plugin $1 does not support static linking]) - ],[ - m4_ifdef([$5],[ - AC_DEFINE($5) - AC_SUBST([plugin_]$2[_static_target], ["yes"]) - AC_SUBST([plugin_]$2[_shared_target], [""]) - ]) - ]) - ]) - m4_ifdef([$9],[ - mysql_mandatory_plugins="$mysql_mandatory_plugins [builtin_]$2[_plugin]," - ],[ - mysql_optional_plugins="$mysql_optional_plugins [builtin_]$2[_plugin]," - ]) - [with_plugin_]$2=yes - AC_MSG_RESULT([yes]) - m4_ifdef([$11],[ - condition_dependent_plugin_modules="$condition_dependent_plugin_modules m4_bregexp($11, [[^/]+$], [\&])" - condition_dependent_plugin_objects="$condition_dependent_plugin_objects m4_bregexp($11, [[^/]+\.], [\&o])" - condition_dependent_plugin_links="$condition_dependent_plugin_links $6/$11" - condition_dependent_plugin_includes="$condition_dependent_plugin_includes -I[\$(top_srcdir)]/$6/m4_bregexp($11, [^.+[/$]], [\&])" - ]) - fi - fi - - m4_ifdef([$6], [ - if test -d "$srcdir/$6"; then - # Even if we don't build a plugin, we bundle its source into the dist - # file. So its Makefile (and Makefiles for any subdirs) must be - # generated for 'make dist' to work. - m4_syscmd([test -f "]$6[/configure"]) - ifelse(m4_sysval, 0, - [AC_CONFIG_SUBDIRS($6)], - [ - # autoconf doesn't provide an automatic way to configure DIST_SUBDIRS of - # a subdir; for our purposes, it's enough to just check for existing - # Makefile.am files and add them in here -dnl -dnl Warning, don't try to quote the m4_esyscmd() macro, it doesn't -dnl work. Quoting here is tricky. -dnl -dnl The $FIND or $SED variable can be set by the user when calling autoconf itself -dnl to if they need to pass a specific path. This is *NOT* used when calling -dnl running configure! -dnl - AC_CONFIG_FILES(m4_esyscmd([${FIND-find} "]$6[" -name Makefile.am -print | ${SED-sed} 's,\.am$,,'])) - ] - ) - - ifelse( - m4_substr($6, 0, 8), [storage/], [ - mysql_se_distdirs="$mysql_se_distdirs m4_substr($6, 8)" - if test -n "$mysql_use_plugin_dir" ; then - mysql_se_dirs="$mysql_se_dirs m4_substr($6, 8)" - mysql_se_unittest_dirs="$mysql_se_unittest_dirs ../$6" - fi], - - m4_substr($6, 0, 7), [plugin/], [ - mysql_pg_distdirs="$mysql_pg_distdirs m4_substr($6, 7)" - if test -n "$mysql_use_plugin_dir" ; then - mysql_pg_dirs="$mysql_pg_dirs m4_substr($6, 7)" - mysql_pg_unittest_dirs="$mysql_pg_unittest_dirs ../$6" - fi], - [AC_FATAL([don't know how to handle plugin dir ]$6)]) - fi - ]) - ]) -]) - -AC_DEFUN([_MYSQL_EMIT_PLUGIN_ACTIONS],[ - ifelse($#, 0, [], $#, 1, [ - _MYSQL_EMIT_PLUGIN_ACTION([$1]) - ],[ - _MYSQL_EMIT_PLUGIN_ACTION([$1]) - _MYSQL_EMIT_PLUGIN_ACTIONS(m4_shift($@)) - ]) -]) - -AC_DEFUN([_MYSQL_EMIT_PLUGIN_ACTION],[ - __MYSQL_EMIT_PLUGIN_ACTION( - [$1], - m4_bpatsubst([$1], -, _), - [MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1]) - ) -]) - - -AC_DEFUN([__MYSQL_EMIT_PLUGIN_ACTION],[ - m4_ifdef([$3], [], [ - if test "X[$with_plugin_]$2" = Xyes; then - if test "X[$plugin_]$2[_static_target]" = X -a \ - "X[$plugin_]$2[_shared_target]" = X; then - AC_MSG_ERROR([that's strange, $1 failed sanity check]) - fi - $4 - fi - ]) -]) - - - -dnl =========================================================================== -dnl Private helper macros -dnl =========================================================================== - - -dnl SYNOPSIS -dnl MYSQL_REQUIRE_PLUGIN([name]) -dnl -dnl DESCRIPTION -dnl Checks that the specified plugin does exist - -AC_DEFUN([MYSQL_REQUIRE_PLUGIN],[ - _MYSQL_REQUIRE_PLUGIN([$1], [__MYSQL_PLUGIN_]AS_TR_CPP([$1])[__]) -]) - -define([_MYSQL_REQUIRE_PLUGIN],[ - ifdef([$2],[ - ifelse($2, [$1], [], [ - AC_FATAL([Misspelt MYSQL_PLUGIN declaration for $1]) - ]) - ],[ - AC_FATAL([Missing MYSQL_PLUGIN declaration for $1]) - ]) -]) - - -dnl --------------------------------------------------------------------------- - - -dnl SYNOPSIS -dnl _MYSQL_EMIT_METAPLUGINS([name,name...]) -dnl -dnl DESCRIPTION -dnl Emits shell code for metaplugins - -AC_DEFUN([_MYSQL_EMIT_METAPLUGINS], [ifelse($#, 0, [], $#, 1, -[_MYSQL_EMIT_METAPLUGIN([$1], [__mysql_]m4_bpatsubst($1, -, _)[_plugins__]) -], -[_MYSQL_EMIT_METAPLUGIN([$1], [__mysql_]m4_bpatsubst($1, -, _)[_plugins__]) -_MYSQL_EMIT_METAPLUGINS(m4_shift($@))]) -]) - -AC_DEFUN([_MYSQL_EMIT_METAPLUGIN], [ - [$1] ) -m4_ifdef([$2], [ - mysql_plugins='m4_bpatsubst($2, :, [ ])' -],[ - mysql_plugins='' -]) - ;; -]) - - -dnl --------------------------------------------------------------------------- - - -dnl SYNOPSIS -dnl _MYSQL_PLUGAPPEND([name],[to-append]) -dnl -dnl DESCRIPTION -dnl Helper macro for appending to colon-delimited lists -dnl Optinal 3rd argument is for actions only required when defining -dnl macro named for the first time. - -AC_DEFUN([_MYSQL_PLUGAPPEND],[ - m4_ifdef([$1],[ - m4_define([__plugin_append_tmp__], m4_defn([$1])) - m4_undefine([$1]) - m4_define([$1], __plugin_append_tmp__[:$2]) - m4_undefine([__plugin_append_tmp__]) - ],[ - m4_define([$1], [$2]) - $3 - ]) -]) - - -dnl SYNOPSIS -dnl _MYSQL_PLUGAPPEND_META([name],[meta,meta...]) -dnl -dnl DESCRIPTION -dnl Helper macro for adding plugins to meta plugins - -AC_DEFUN([_MYSQL_PLUGAPPEND_META],[ - ifelse($#, 1, [], [$#:$2], [2:], [], [$2], [all], [ - AC_FATAL([protected plugin group: all]) - ], [$2], [none], [ - AC_FATAL([protected plugin group: none]) - ],[ - _MYSQL_PLUGAPPEND([__mysql_$1_configs__],[$2]) - _MYSQL_PLUGAPPEND([__mysql_]m4_bpatsubst($2, -, _)[_plugins__],[$1], [ - _MYSQL_PLUGAPPEND([__mysql_metaplugin_list__],[$2]) - ]) - _MYSQL_PLUGAPPEND_META([$1], m4_shift(m4_shift($@))) - ]) -]) - - -dnl --------------------------------------------------------------------------- - - -dnl SYNOPSIS -dnl MYSQL_LIST_PLUGINS -dnl -dnl DESCRIPTION -dnl Emits formatted list of declared plugins - -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],[ - _MYSQL_SHOW_PLUGIN( - [$1], - [$1-plugin], - [MYSQL_PLUGIN_NAME_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_DESC_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_DEFINE_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_DIRECTORY_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_STATIC_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_MANDATORY_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1]), - __mysql_[$1]_configs__, - ) -]) - -AC_DEFUN([_MYSQL_SHOW_PLUGIN],[dnl - === $3 === - Plugin 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])[]dnl -]) - -AC_DEFUN([_PLUGIN_BUILD_TYPE], -[m4_ifdef([$1],[static ]m4_ifdef([$2],[and dnl -]))[]m4_ifdef([$2],[dynamic],[m4_ifdef([$1],[],[static])])]) - - -dnl --------------------------------------------------------------------------- - - -AC_DEFUN([_MYSQL_EMIT_PLUGINS],[ - ifelse($#, 0, [], [$#:$1], [1:], [], [ - m4_ifdef([MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1]), [], [ - m4_define([MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1]),[ ]) - ]) - [$1] ) - m4_ifdef([MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]),[ - AC_MSG_ERROR([plugin $1 is disabled]) - ],[ - _MYSQL_EMIT_PLUGIN_ENABLE([$1], m4_bpatsubst([$1], -, _), - [MYSQL_PLUGIN_NAME_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_STATIC_]AS_TR_CPP([$1]), - [MYSQL_PLUGIN_DYNAMIC_]AS_TR_CPP([$1])) - ]) - ;; - _MYSQL_EMIT_PLUGINS(m4_shift($@)) - ]) -]) - -AC_DEFUN([_MYSQL_EMIT_PLUGIN_ENABLE],[ - m4_ifdef([$5],m4_ifdef([$4],[ - [mysql_plugin_]$2=yes - ],[ - AC_MSG_WARN([$3 can only be built as a plugin]) - ]),[ - [mysql_plugin_]$2=yes - ]) -]) - -AC_DEFUN([_MYSQL_EMIT_PLUGIN_DEPENDS], [ - ifelse($#, 0, [], [$#:$1], [1:], [], [ - _MYSQL_EMIT_CHECK_DEPENDS(m4_bpatsubst([$1], -, _), - [__mysql_plugdepends_$1__]) - _MYSQL_EMIT_PLUGIN_DEPENDS(m4_shift($@)) - ]) -]) - -AC_DEFUN([_MYSQL_EMIT_CHECK_DEPENDS], [ - m4_ifdef([$2], [ - if test "X[$mysql_plugin_]$1" = Xyes -a \ - "X[$with_plugin_]$1" != Xno -o \ - "X[$with_plugin_]$1" = Xyes; then - _MYSQL_EMIT_PLUGIN_DEPENDENCIES(m4_bpatsubst($2, :, [,])) - fi - ]) -]) - -AC_DEFUN([_MYSQL_EMIT_PLUGIN_DEPENDENCIES], [ - ifelse([$1], [], [], [ - m4_ifdef([MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]),[ - AC_MSG_ERROR([depends upon disabled plugin $1]) - ],[ - [mysql_plugin_]m4_bpatsubst([$1], -, _)=yes - if test "X[$with_plugin_]m4_bpatsubst([$1], -, _)" = Xno; then - AC_MSG_ERROR([depends upon disabled plugin $1]) - fi - ]) - _MYSQL_EMIT_PLUGIN_DEPENDENCIES(m4_shift($@)) - ]) -]) - -dnl SYNOPSIS -dnl _MYSQL_CHECK_PLUGIN_ARGS([plugin],[plugin]...) -dnl -dnl DESCRIPTION -dnl Emits shell script for checking configure arguments -dnl Arguments to this macro is default value for selected plugins - -AC_DEFUN([_MYSQL_CHECK_PLUGIN_ARGS],[ - __MYSQL_CHECK_PLUGIN_ARGS(m4_default([$1], [default])) -]) - -AC_DEFUN([__MYSQL_CHECK_PLUGIN_ARGS],[ - AC_ARG_WITH([plugins], -AS_HELP_STRING([--with-plugins=PLUGIN[[[[[,PLUGIN..]]]]]], - [Plugins to include in mysqld. (default is: $1) Must be a - configuration name or a comma separated list of plugins.]) -AS_HELP_STRING([], - [Available configurations are:] dnl -m4_bpatsubst([none:]m4_ifdef([__mysql_metaplugin_list__], - __mysql_metaplugin_list__:)[all], :, [ ])[.]) -AS_HELP_STRING([], - [Available plugins are:] dnl -m4_bpatsubst(__mysql_plugin_list__, :, [ ])[.]) -AS_HELP_STRING([--without-plugin-PLUGIN], - [Disable the named plugin from being built. Otherwise, for - plugins which are not selected for inclusion in mysqld will be - built dynamically (if supported)]) -AS_HELP_STRING([--with-plugin-PLUGIN], - [Forces the named plugin to be linked into mysqld statically.]), - [mysql_plugins="`echo $withval | tr ',.:;*[]' ' '`"], - [mysql_plugins=['$1']]) - -m4_divert_once([HELP_VAR_END],[ -Description of plugins: -MYSQL_LIST_PLUGINS]) - - case "$mysql_plugins" in - all ) - mysql_plugins='m4_bpatsubst(__mysql_plugin_list__, :, [ ])' - ;; - none ) - mysql_plugins='' - ;; -m4_ifdef([__mysql_metaplugin_list__],[ -_MYSQL_EMIT_METAPLUGINS(m4_bpatsubst(__mysql_metaplugin_list__, :, [,])) -]) - esac - - for plugin in $mysql_plugins; do - case "$plugin" in - all | none ) - AC_MSG_ERROR([bad plugin name: $plugin]) - ;; -_MYSQL_EMIT_PLUGINS(m4_bpatsubst(__mysql_plugin_list__, :, [,])) - * ) - AC_MSG_ERROR([unknown plugin: $plugin]) - ;; - esac - done - - _MYSQL_EMIT_PLUGIN_DEPENDS(m4_bpatsubst(__mysql_plugin_list__, :, [,])) -]) - -dnl --------------------------------------------------------------------------- -dnl Macro: _MYSQL_INCLUDE_LIST -dnl -dnl SYNOPSIS -dnl _MYSQL_INCLUDE_LIST([filename,filename...]) -dnl -dnl DESCRIPTION -dnl includes all files from the list -dnl -dnl --------------------------------------------------------------------------- -AC_DEFUN([_MYSQL_INCLUDE_LIST],[ - ifelse([$1], [], [], [ - m4_define([__mysql_include__],[$1]) - dnl We have to use builtin(), because sinclude would generate an error - dnl "file $1 does not exists" in aclocal-1.8 - which is a bug, clearly - dnl violating m4 specs, and which is fixed in aclocal-1.9 - builtin([include],$1) - m4_undefine([__mysql_include__]) - _MYSQL_INCLUDE_LIST(m4_shift($@)) - ]) -]) - -dnl =========================================================================== |