1
dnl ===========================================================================
2
dnl Support for mysql server plugins
3
dnl ===========================================================================
7
dnl Framework for pluggable static and dynamic plugins for mysql
9
dnl ---------------------------------------------------------------------------
10
dnl Macro: MYSQL_PLUGIN
13
dnl MYSQL_PLUGIN([name],[Plugin name],
14
dnl [Plugin description],
18
dnl First declaration for a plugin (mandatory).
19
dnl Adds plugin as member to configuration groups (if specified)
21
dnl ---------------------------------------------------------------------------
23
AC_DEFUN([MYSQL_PLUGIN],[
26
[__MYSQL_PLUGIN_]AS_TR_CPP([$1])[__],
27
m4_default([$2], [$1 plugin]),
28
m4_default([$3], [plugin for $1]),
33
AC_DEFUN([_MYSQL_PLUGIN],[
35
AC_FATAL([Duplicate MYSQL_PLUGIN declaration for $3])
38
_MYSQL_PLUGAPPEND([__mysql_plugin_list__],[$1])
39
m4_define([MYSQL_PLUGIN_NAME_]AS_TR_CPP([$1]), [$3])
40
m4_define([MYSQL_PLUGIN_DESC_]AS_TR_CPP([$1]), [$4])
41
_MYSQL_PLUGAPPEND_META([$1], $5)
42
ifelse(m4_bregexp(__mysql_include__,[/plug\.in$]),-1,[],[
43
MYSQL_PLUGIN_DIRECTORY([$1],
44
m4_bregexp(__mysql_include__,[^\(.*\)/plug\.in$],[\1]))
50
dnl ---------------------------------------------------------------------------
51
dnl Macro: MYSQL_STORAGE_ENGINE
54
dnl MYSQL_STORAGE_ENGINE([name],[legacy-option],[Storage engine name],
55
dnl [Storage engine description],[group,group...])
58
dnl Short cut for storage engine declarations
60
dnl ---------------------------------------------------------------------------
62
AC_DEFUN([MYSQL_STORAGE_ENGINE],[
63
MYSQL_PLUGIN([$1], [$3], [$4], [[$5]])
64
MYSQL_PLUGIN_DEFINE([$1], [WITH_]AS_TR_CPP([$1])[_STORAGE_ENGINE])
66
_MYSQL_LEGACY_STORAGE_ENGINE(
67
m4_bpatsubst([$1], -, _),
68
m4_bpatsubst(m4_default([$2], [$1-storage-engine]), -, _))
72
AC_DEFUN([_MYSQL_LEGACY_STORAGE_ENGINE],[
73
if test "[${with_]$2[+set}]" = set; then
74
[with_plugin_]$1="[$with_]$2"
79
dnl ---------------------------------------------------------------------------
80
dnl Macro: MYSQL_PLUGIN_DEFINE
83
dnl MYSQL_PLUGIN_DEFINE([name],[MYSQL_CPP_DEFINE])
86
dnl When a plugin is to be statically linked, define the C macro
88
dnl ---------------------------------------------------------------------------
90
AC_DEFUN([MYSQL_PLUGIN_DEFINE],[
91
MYSQL_REQUIRE_PLUGIN([$1])
92
m4_define([MYSQL_PLUGIN_DEFINE_]AS_TR_CPP([$1]), [$2])
96
dnl ---------------------------------------------------------------------------
97
dnl Macro: MYSQL_PLUGIN_DIRECTORY
100
dnl MYSQL_PLUGIN_DIRECTORY([name],[plugin/dir])
103
dnl Adds a directory to the build process
104
dnl if it contains 'configure' it will be picked up automatically
106
dnl ---------------------------------------------------------------------------
108
AC_DEFUN([MYSQL_PLUGIN_DIRECTORY],[
109
MYSQL_REQUIRE_PLUGIN([$1])
110
m4_define([MYSQL_PLUGIN_DIRECTORY_]AS_TR_CPP([$1]), [$2])
114
dnl ---------------------------------------------------------------------------
115
dnl Macro: MYSQL_PLUGIN_STATIC
118
dnl MYSQL_PLUGIN_STATIC([name],[libmyplugin.a])
121
dnl Declare the name for the static library
123
dnl ---------------------------------------------------------------------------
125
AC_DEFUN([MYSQL_PLUGIN_STATIC],[
126
MYSQL_REQUIRE_PLUGIN([$1])
127
m4_define([MYSQL_PLUGIN_STATIC_]AS_TR_CPP([$1]), [$2])
131
dnl ---------------------------------------------------------------------------
132
dnl Macro: MYSQL_PLUGIN_DYNAMIC
135
dnl MYSQL_PLUGIN_DYNAMIC([name],[myplugin.la])
138
dnl Declare the name for the shared library
140
dnl ---------------------------------------------------------------------------
142
AC_DEFUN([MYSQL_PLUGIN_DYNAMIC],[
143
MYSQL_REQUIRE_PLUGIN([$1])
144
m4_define([MYSQL_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]), [$2])
148
dnl ---------------------------------------------------------------------------
149
dnl Macro: MYSQL_PLUGIN_MANDATORY
152
dnl MYSQL_PLUGIN_MANDATORY([name])
155
dnl Marks the specified plugin as a mandatory plugin
157
dnl ---------------------------------------------------------------------------
159
AC_DEFUN([MYSQL_PLUGIN_MANDATORY],[
160
MYSQL_REQUIRE_PLUGIN([$1])
161
_MYSQL_PLUGIN_MANDATORY([$1],
162
[MYSQL_PLUGIN_MANDATORY_]AS_TR_CPP([$1]),
163
[MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1])
167
AC_DEFUN([_MYSQL_PLUGIN_MANDATORY],[
168
m4_define([$2], [yes])
170
AC_FATAL([mandatory plugin $1 has been disabled])
176
dnl ---------------------------------------------------------------------------
177
dnl Macro: MYSQL_PLUGIN_DISABLED
180
dnl MYSQL_PLUGIN_DISABLED([name])
183
dnl Marks the specified plugin as a disabled plugin
185
dnl ---------------------------------------------------------------------------
187
AC_DEFUN([MYSQL_PLUGIN_DISABLED],[
188
MYSQL_REQUIRE_PLUGIN([$1])
189
_MYSQL_PLUGIN_DISABLED([$1],
190
[MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]),
191
[MYSQL_PLUGIN_MANDATORY_]AS_TR_CPP([$1])
195
AC_DEFUN([_MYSQL_PLUGIN_DISABLED],[
196
m4_define([$2], [yes])
198
AC_FATAL([attempt to disable mandatory plugin $1])
204
dnl ---------------------------------------------------------------------------
205
dnl Macro: MYSQL_PLUGIN_DEPENDS
208
dnl MYSQL_PLUGIN_DEPENDS([name],[prereq,prereq...])
211
dnl Enables other plugins neccessary for the named plugin
212
dnl Dependency checking is not recursive so if any
213
dnl required plugin requires further plugins, list them
216
dnl ---------------------------------------------------------------------------
218
AC_DEFUN([MYSQL_PLUGIN_DEPENDS],[
219
MYSQL_REQUIRE_PLUGIN([$1])
221
_MYSQL_PLUGIN_DEPEND([$1], $2)
223
AC_FATAL([bad number of arguments])
227
AC_DEFUN([_MYSQL_PLUGIN_DEPEND],[
228
ifelse($#, 1, [], [$#:$2], [2:], [], [
229
MYSQL_REQUIRE_PLUGIN([$2])
230
_MYSQL_PLUGAPPEND([__mysql_plugdepends_$1__],[$2])
231
_MYSQL_PLUGIN_DEPEND([$1], m4_shift(m4_shift($@)))
236
dnl ---------------------------------------------------------------------------
237
dnl Macro: MYSQL_PLUGIN_ACTIONS
240
dnl MYSQL_PLUGIN_ACTIONS([name],[PLUGIN_CONFIGURE_STUFF])
243
dnl Declares additional autoconf actions required to configure the plugin
245
dnl ---------------------------------------------------------------------------
247
AC_DEFUN([MYSQL_PLUGIN_ACTIONS],[
248
MYSQL_REQUIRE_PLUGIN([$1])
250
m4_define([MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1]),m4_defn([$2]))
252
m4_define([MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1]), [$2])
256
dnl ---------------------------------------------------------------------------
257
dnl Macro: MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS
260
dnl MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS([name],[file name])
263
dnl Some modules in plugins keep dependance on structures
264
dnl declared in sql/ (THD class usually)
265
dnl That has to be fixed in the future, but until then
266
dnl we have to recompile these modules when we want to
267
dnl to compile server parts with the different #defines
268
dnl Normally it happens when we compile the embedded server
269
dnl Thus one should mark such files in his handler using this macro
270
dnl (currently only one such a file per plugin is supported)
272
dnl ---------------------------------------------------------------------------
274
AC_DEFUN([MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS],[
275
MYSQL_REQUIRE_PLUGIN([$1])
276
m4_define([MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS_]AS_TR_CPP([$1]), [$2])
279
dnl ---------------------------------------------------------------------------
280
dnl Macro: MYSQL_CONFIGURE_PLUGINS
283
dnl MYSQL_PLUGIN_DEPENDS([name,name...])
286
dnl Used last, emits all required shell code to configure the plugins
287
dnl Argument is a list of default plugins or meta-plugin
289
dnl ---------------------------------------------------------------------------
291
AC_DEFUN([MYSQL_CONFIGURE_PLUGINS],[
292
m4_ifdef([__mysql_plugin_configured__],[
293
AC_FATAL([cannot use [MYSQL_CONFIGURE_PLUGINS] multiple times])
295
m4_define([__mysql_plugin_configured__],[done])
297
m4_bpatsubst(m4_esyscmd([ls plugin/*/plug.in storage/*/plug.in 2>/dev/null]),
300
m4_ifdef([__mysql_plugin_list__],[
301
_MYSQL_CHECK_PLUGIN_ARGS([$1])
302
_MYSQL_CONFIGURE_PLUGINS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
303
_MYSQL_EMIT_PLUGIN_ACTIONS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
304
AC_SUBST([mysql_se_dirs])
305
AC_SUBST([mysql_pg_dirs])
306
AC_SUBST([mysql_se_unittest_dirs])
307
AC_SUBST([mysql_pg_unittest_dirs])
308
AC_SUBST([condition_dependent_plugin_modules])
309
AC_SUBST([condition_dependent_plugin_objects])
310
AC_SUBST([condition_dependent_plugin_links])
311
AC_SUBST([condition_dependent_plugin_includes])
316
AC_DEFUN([_MYSQL_CONFIGURE_PLUGINS],[
317
ifelse($#, 0, [], $#, 1, [
318
_MYSQL_EMIT_CHECK_PLUGIN([$1])
320
_MYSQL_EMIT_CHECK_PLUGIN([$1])
321
_MYSQL_CONFIGURE_PLUGINS(m4_shift($@))
325
AC_DEFUN([_MYSQL_EMIT_CHECK_PLUGIN],[
326
__MYSQL_EMIT_CHECK_PLUGIN(
328
m4_bpatsubst([$1], -, _),
329
[MYSQL_PLUGIN_NAME_]AS_TR_CPP([$1]),
330
[MYSQL_PLUGIN_DESC_]AS_TR_CPP([$1]),
331
[MYSQL_PLUGIN_DEFINE_]AS_TR_CPP([$1]),
332
[MYSQL_PLUGIN_DIRECTORY_]AS_TR_CPP([$1]),
333
[MYSQL_PLUGIN_STATIC_]AS_TR_CPP([$1]),
334
[MYSQL_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]),
335
[MYSQL_PLUGIN_MANDATORY_]AS_TR_CPP([$1]),
336
[MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]),
337
[MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS_]AS_TR_CPP([$1]),
338
[MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1])
342
AC_DEFUN([__MYSQL_EMIT_CHECK_PLUGIN],[
344
AH_TEMPLATE($5, [Include ]$4[ into mysqld])
346
AC_MSG_CHECKING([whether to use ]$3)
347
mysql_use_plugin_dir=""
349
if test "X[$mysql_plugin_]$2" = Xyes -a \
350
"X[$with_plugin_]$2" != Xno -o \
351
"X[$with_plugin_]$2" = Xyes; then
352
AC_MSG_RESULT([error])
353
AC_MSG_ERROR([disabled])
358
if test "X[$with_plugin_]$2" = Xno; then
359
AC_MSG_RESULT([error])
360
AC_MSG_ERROR([cannot disable mandatory plugin])
362
[mysql_plugin_]$2=yes
364
case "$with_mysqld_ldflags " in
366
# No need to build shared plugins when mysqld is linked with
367
# -all-static as it won't be able to load them.
368
if test "X[$mysql_plugin_]$2" != Xyes -a \
369
"X[$with_plugin_]$2" != Xyes; then
375
if test "X[$with_plugin_]$2" = Xno; then
378
m4_ifdef([$8],m4_ifdef([$7],[],[[with_plugin_]$2='']))
379
if test "X[$mysql_plugin_]$2" != Xyes -a \
380
"X[$with_plugin_]$2" != Xyes; then
383
if test -d "$srcdir/$6" ; then
384
mysql_use_plugin_dir="$6"
386
AC_SUBST([plugin_]$2[_shared_target], "$8")
387
AC_SUBST([plugin_]$2[_static_target], [""])
389
AC_MSG_RESULT([plugin])
402
ifelse(m4_bregexp($7, [^lib[^.]+\.a$]), -2, [
403
dnl change above "-2" to "0" to enable this section
404
dnl Although this is "pretty", it breaks libmysqld build
406
mysql_use_plugin_dir="$6"
407
mysql_plugin_libs="$mysql_plugin_libs -L[\$(top_builddir)]/$6"
409
mysql_plugin_libs="$mysql_plugin_libs dnl
410
[-l]m4_bregexp($7, [^lib\([^.]+\)], [\1])"
411
], m4_bregexp($7, [^\\\$]), 0, [
413
mysql_use_plugin_dir="$6"
415
mysql_plugin_libs="$mysql_plugin_libs $7"
418
mysql_use_plugin_dir="$6"
419
mysql_plugin_libs="$mysql_plugin_libs \$(top_builddir)/$6/$7"
421
mysql_plugin_libs="$mysql_plugin_libs $7"
427
AC_SUBST([plugin_]$2[_static_target], "$7")
428
AC_SUBST([plugin_]$2[_shared_target], [""])
431
AC_MSG_RESULT([error])
432
AC_MSG_ERROR([Plugin $1 does not support static linking])
436
AC_SUBST([plugin_]$2[_static_target], ["yes"])
437
AC_SUBST([plugin_]$2[_shared_target], [""])
441
mysql_plugin_defs="$mysql_plugin_defs, [builtin_]$2[_plugin]"
445
condition_dependent_plugin_modules="$condition_dependent_plugin_modules m4_bregexp($11, [[^/]+$], [\&])"
446
condition_dependent_plugin_objects="$condition_dependent_plugin_objects m4_bregexp($11, [[^/]+\.], [\&o])"
447
condition_dependent_plugin_links="$condition_dependent_plugin_links $6/$11"
448
condition_dependent_plugin_includes="$condition_dependent_plugin_includes -I[\$(top_srcdir)]/$6/m4_bregexp($11, [^.+[/$]], [\&])"
452
if test -n "$mysql_use_plugin_dir" ; then
453
mysql_plugin_dirs="$mysql_plugin_dirs $6"
454
m4_syscmd(test -f "$6/configure")
456
[AC_CONFIG_SUBDIRS($6)],
457
[AC_CONFIG_FILES($6/Makefile)]
459
ifelse(m4_substr($6, 0, 8), [storage/],
461
[mysql_se_dirs="$mysql_se_dirs ]m4_substr($6, 8)"
462
mysql_se_unittest_dirs="$mysql_se_unittest_dirs ../$6"
464
m4_substr($6, 0, 7), [plugin/],
466
[mysql_pg_dirs="$mysql_pg_dirs ]m4_substr($6, 7)"
467
mysql_pg_unittest_dirs="$mysql_pg_unittest_dirs ../$6"
469
[AC_FATAL([don't know how to handle plugin dir ]$6)])
476
AC_DEFUN([_MYSQL_EMIT_PLUGIN_ACTIONS],[
477
ifelse($#, 0, [], $#, 1, [
478
_MYSQL_EMIT_PLUGIN_ACTION([$1])
480
_MYSQL_EMIT_PLUGIN_ACTION([$1])
481
_MYSQL_EMIT_PLUGIN_ACTIONS(m4_shift($@))
485
AC_DEFUN([_MYSQL_EMIT_PLUGIN_ACTION],[
486
__MYSQL_EMIT_PLUGIN_ACTION(
488
m4_bpatsubst([$1], -, _),
489
[MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]),
490
[MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1])
495
AC_DEFUN([__MYSQL_EMIT_PLUGIN_ACTION],[
497
if test "X[$with_plugin_]$2" = Xyes; then
498
if test "X[$plugin_]$2[_static_target]" = X -a \
499
"X[$plugin_]$2[_shared_target]" = X; then
500
AC_MSG_ERROR([that's strange, $1 failed sanity check])
509
dnl ===========================================================================
510
dnl Private helper macros
511
dnl ===========================================================================
515
dnl MYSQL_REQUIRE_PLUGIN([name])
518
dnl Checks that the specified plugin does exist
520
AC_DEFUN([MYSQL_REQUIRE_PLUGIN],[
521
_MYSQL_REQUIRE_PLUGIN([$1], [__MYSQL_PLUGIN_]AS_TR_CPP([$1])[__])
524
define([_MYSQL_REQUIRE_PLUGIN],[
526
ifelse($2, [$1], [], [
527
AC_FATAL([Misspelt MYSQL_PLUGIN declaration for $1])
530
AC_FATAL([Missing MYSQL_PLUGIN declaration for $1])
535
dnl ---------------------------------------------------------------------------
539
dnl _MYSQL_EMIT_METAPLUGINS([name,name...])
542
dnl Emits shell code for metaplugins
544
AC_DEFUN([_MYSQL_EMIT_METAPLUGINS], [ifelse($#, 0, [], $#, 1,
545
[_MYSQL_EMIT_METAPLUGIN([$1], [__mysql_]m4_bpatsubst($1, -, _)[_plugins__])
547
[_MYSQL_EMIT_METAPLUGIN([$1], [__mysql_]m4_bpatsubst($1, -, _)[_plugins__])
548
_MYSQL_EMIT_METAPLUGINS(m4_shift($@))])
551
AC_DEFUN([_MYSQL_EMIT_METAPLUGIN], [
554
mysql_plugins='m4_bpatsubst($2, :, [ ])'
562
dnl ---------------------------------------------------------------------------
566
dnl _MYSQL_PLUGAPPEND([name],[to-append])
569
dnl Helper macro for appending to colon-delimited lists
570
dnl Optinal 3rd argument is for actions only required when defining
571
dnl macro named for the first time.
573
AC_DEFUN([_MYSQL_PLUGAPPEND],[
575
m4_define([__plugin_append_tmp__], m4_defn([$1]))
577
m4_define([$1], __plugin_append_tmp__[:$2])
578
m4_undefine([__plugin_append_tmp__])
580
m4_define([$1], [$2])
587
dnl _MYSQL_PLUGAPPEND_META([name],[meta,meta...])
590
dnl Helper macro for adding plugins to meta plugins
592
AC_DEFUN([_MYSQL_PLUGAPPEND_META],[
593
ifelse($#, 1, [], [$#:$2], [2:], [], [$2], [all], [
594
AC_FATAL([protected plugin group: all])
596
AC_FATAL([protected plugin group: none])
598
_MYSQL_PLUGAPPEND([__mysql_$1_configs__],[$2])
599
_MYSQL_PLUGAPPEND([__mysql_]m4_bpatsubst($2, -, _)[_plugins__],[$1], [
600
_MYSQL_PLUGAPPEND([__mysql_metaplugin_list__],[$2])
602
_MYSQL_PLUGAPPEND_META([$1], m4_shift(m4_shift($@)))
607
dnl ---------------------------------------------------------------------------
611
dnl MYSQL_LIST_PLUGINS
614
dnl Emits formatted list of declared plugins
616
AC_DEFUN([MYSQL_LIST_PLUGINS],[dnl
617
m4_ifdef([__mysql_plugin_list__],[dnl
618
_MYSQL_LIST_PLUGINS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))dnl
622
AC_DEFUN([_MYSQL_LIST_PLUGINS],[dnl
623
ifelse($#, 0, [], $#, 1, [dnl
624
MYSQL_SHOW_PLUGIN([$1])dnl
626
MYSQL_SHOW_PLUGIN([$1])dnl
627
_MYSQL_LIST_PLUGINS(m4_shift($@))dnl
631
AC_DEFUN([MYSQL_SHOW_PLUGIN],[
635
[MYSQL_PLUGIN_NAME_]AS_TR_CPP([$1]),
636
[MYSQL_PLUGIN_DESC_]AS_TR_CPP([$1]),
637
[MYSQL_PLUGIN_DEFINE_]AS_TR_CPP([$1]),
638
[MYSQL_PLUGIN_DIRECTORY_]AS_TR_CPP([$1]),
639
[MYSQL_PLUGIN_STATIC_]AS_TR_CPP([$1]),
640
[MYSQL_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]),
641
[MYSQL_PLUGIN_MANDATORY_]AS_TR_CPP([$1]),
642
[MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]),
643
[MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1]),
644
__mysql_[$1]_configs__,
648
AC_DEFUN([_MYSQL_SHOW_PLUGIN],[dnl
652
Supports build: _PLUGIN_BUILD_TYPE([$7],[$8])[]dnl
654
Configurations: m4_bpatsubst($12, :, [, ])])[]dnl
656
Status: disabled])[]dnl
658
Status: mandatory])[]dnl
661
AC_DEFUN([_PLUGIN_BUILD_TYPE],
662
[m4_ifdef([$1],[static ]m4_ifdef([$2],[and dnl
663
]))[]m4_ifdef([$2],[dynamic],[m4_ifdef([$1],[],[static])])])
666
dnl ---------------------------------------------------------------------------
669
AC_DEFUN([_MYSQL_EMIT_PLUGINS],[
670
ifelse($#, 0, [], [$#:$1], [1:], [], [
671
m4_ifdef([MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1]), [], [
672
m4_define([MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1]),[ ])
675
m4_ifdef([MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]),[
676
AC_MSG_ERROR([plugin $1 is disabled])
678
_MYSQL_EMIT_PLUGIN_ENABLE([$1], m4_bpatsubst([$1], -, _),
679
[MYSQL_PLUGIN_NAME_]AS_TR_CPP([$1]),
680
[MYSQL_PLUGIN_STATIC_]AS_TR_CPP([$1]),
681
[MYSQL_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]))
684
_MYSQL_EMIT_PLUGINS(m4_shift($@))
688
AC_DEFUN([_MYSQL_EMIT_PLUGIN_ENABLE],[
689
m4_ifdef([$5],m4_ifdef([$4],[
690
[mysql_plugin_]$2=yes
692
AC_MSG_WARN([$3 can only be built as a plugin])
694
[mysql_plugin_]$2=yes
698
AC_DEFUN([_MYSQL_EMIT_PLUGIN_DEPENDS], [
699
ifelse($#, 0, [], [$#:$1], [1:], [], [
700
_MYSQL_EMIT_CHECK_DEPENDS(m4_bpatsubst([$1], -, _),
701
[__mysql_plugdepends_$1__])
702
_MYSQL_EMIT_PLUGIN_DEPENDS(m4_shift($@))
706
AC_DEFUN([_MYSQL_EMIT_CHECK_DEPENDS], [
708
if test "X[$mysql_plugin_]$1" = Xyes -a \
709
"X[$with_plugin_]$1" != Xno -o \
710
"X[$with_plugin_]$1" = Xyes; then
711
_MYSQL_EMIT_PLUGIN_DEPENDENCIES(m4_bpatsubst($2, :, [,]))
716
AC_DEFUN([_MYSQL_EMIT_PLUGIN_DEPENDENCIES], [
717
ifelse([$1], [], [], [
718
m4_ifdef([MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]),[
719
AC_MSG_ERROR([depends upon disabled plugin $1])
721
[mysql_plugin_]m4_bpatsubst([$1], -, _)=yes
722
if test "X[$with_plugin_]m4_bpatsubst([$1], -, _)" = Xno; then
723
AC_MSG_ERROR([depends upon disabled plugin $1])
726
_MYSQL_EMIT_PLUGIN_DEPENDENCIES(m4_shift($@))
731
dnl _MYSQL_CHECK_PLUGIN_ARGS([plugin],[plugin]...)
734
dnl Emits shell script for checking configure arguments
735
dnl Arguments to this macro is default value for selected plugins
737
AC_DEFUN([_MYSQL_CHECK_PLUGIN_ARGS],[
738
__MYSQL_CHECK_PLUGIN_ARGS(m4_default([$1], [none]))
741
AC_DEFUN([__MYSQL_CHECK_PLUGIN_ARGS],[
742
AC_ARG_WITH([plugins],
743
AS_HELP_STRING([--with-plugins=PLUGIN[[[[[,PLUGIN..]]]]]],
744
[Plugins to include in mysqld. (default is: $1) Must be a
745
configuration name or a comma separated list of plugins.])
747
[Available configurations are:] dnl
748
m4_bpatsubst([none:]m4_ifdef([__mysql_metaplugin_list__],
749
__mysql_metaplugin_list__:)[all], :, [ ])[.])
751
[Available plugins are:] dnl
752
m4_bpatsubst(__mysql_plugin_list__, :, [ ])[.])
753
AS_HELP_STRING([--without-plugin-PLUGIN],
754
[Disable the named plugin from being built. Otherwise, for
755
plugins which are not selected for inclusion in mysqld will be
756
built dynamically (if supported)])
757
AS_HELP_STRING([--with-plugin-PLUGIN],
758
[Forces the named plugin to be linked into mysqld statically.]),
759
[mysql_plugins="`echo $withval | tr ',.:;*[]' ' '`"],
760
[mysql_plugins=['$1']])
762
m4_divert_once([HELP_VAR_END],[
763
Description of plugins:
766
case "$mysql_plugins" in
768
mysql_plugins='m4_bpatsubst(__mysql_plugin_list__, :, [ ])'
773
m4_ifdef([__mysql_metaplugin_list__],[
774
_MYSQL_EMIT_METAPLUGINS(m4_bpatsubst(__mysql_metaplugin_list__, :, [,]))
778
for plugin in $mysql_plugins; do
781
AC_MSG_ERROR([bad plugin name: $plugin])
783
_MYSQL_EMIT_PLUGINS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
785
AC_MSG_ERROR([unknown plugin: $plugin])
790
_MYSQL_EMIT_PLUGIN_DEPENDS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
793
dnl ---------------------------------------------------------------------------
794
dnl Macro: _MYSQL_INCLUDE_LIST
797
dnl _MYSQL_INCLUDE_LIST([filename,filename...])
800
dnl includes all files from the list
802
dnl ---------------------------------------------------------------------------
803
AC_DEFUN([_MYSQL_INCLUDE_LIST],[
804
ifelse([$1], [], [], [
805
m4_define([__mysql_include__],[$1])
806
dnl We have to use builtin(), because sinclude would generate an error
807
dnl "file $1 does not exists" in aclocal-1.8 - which is a bug, clearly
808
dnl violating m4 specs, and which is fixed in aclocal-1.9
809
builtin([include],$1)
810
m4_undefine([__mysql_include__])
811
_MYSQL_INCLUDE_LIST(m4_shift($@))
815
dnl ===========================================================================