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: DRIZZLE_PLUGIN
13
dnl DRIZZLE_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([DRIZZLE_PLUGIN],[
26
[__DRIZZLE_PLUGIN_]AS_TR_CPP([$1])[__],
27
m4_default([$2], [$1 plugin]),
28
m4_default([$3], [plugin for $1]),
33
AC_DEFUN([_DRIZZLE_PLUGIN],[
35
AC_FATAL([Duplicate DRIZZLE_PLUGIN declaration for $3])
38
_DRIZZLE_PLUGAPPEND([__mysql_plugin_list__],[$1])
39
m4_define([DRIZZLE_PLUGIN_NAME_]AS_TR_CPP([$1]), [$3])
40
m4_define([DRIZZLE_PLUGIN_DESC_]AS_TR_CPP([$1]), [$4])
41
_DRIZZLE_PLUGAPPEND_META([$1], $5)
42
ifelse(m4_bregexp(__mysql_include__,[/plug\.in$]),-1,[],[
43
DRIZZLE_PLUGIN_DIRECTORY([$1],
44
m4_bregexp(__mysql_include__,[^\(.*\)/plug\.in$],[\1]))
50
dnl ---------------------------------------------------------------------------
51
dnl Macro: DRIZZLE_STORAGE_ENGINE
54
dnl DRIZZLE_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([DRIZZLE_STORAGE_ENGINE],[
63
DRIZZLE_PLUGIN([$1], [$3], [$4], [[$5]])
64
DRIZZLE_PLUGIN_DEFINE([$1], [WITH_]AS_TR_CPP([$1])[_STORAGE_ENGINE])
66
_DRIZZLE_LEGACY_STORAGE_ENGINE(
67
m4_bpatsubst([$1], -, _),
68
m4_bpatsubst(m4_default([$2], [$1-storage-engine]), -, _))
72
AC_DEFUN([_DRIZZLE_LEGACY_STORAGE_ENGINE],[
73
if test "[${with_]$2[+set}]" = set; then
74
[with_plugin_]$1="[$with_]$2"
79
dnl ---------------------------------------------------------------------------
80
dnl Macro: DRIZZLE_PLUGIN_DEFINE
83
dnl DRIZZLE_PLUGIN_DEFINE([name],[DRIZZLE_CPP_DEFINE])
86
dnl When a plugin is to be statically linked, define the C macro
88
dnl ---------------------------------------------------------------------------
90
AC_DEFUN([DRIZZLE_PLUGIN_DEFINE],[
91
DRIZZLE_REQUIRE_PLUGIN([$1])
92
m4_define([DRIZZLE_PLUGIN_DEFINE_]AS_TR_CPP([$1]), [$2])
96
dnl ---------------------------------------------------------------------------
97
dnl Macro: DRIZZLE_PLUGIN_DIRECTORY
100
dnl DRIZZLE_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([DRIZZLE_PLUGIN_DIRECTORY],[
109
DRIZZLE_REQUIRE_PLUGIN([$1])
110
m4_define([DRIZZLE_PLUGIN_DIRECTORY_]AS_TR_CPP([$1]), [$2])
114
dnl ---------------------------------------------------------------------------
115
dnl Macro: DRIZZLE_PLUGIN_STATIC
118
dnl DRIZZLE_PLUGIN_STATIC([name],[libmyplugin.a])
121
dnl Declare the name for the static library
123
dnl ---------------------------------------------------------------------------
125
AC_DEFUN([DRIZZLE_PLUGIN_STATIC],[
126
DRIZZLE_REQUIRE_PLUGIN([$1])
127
m4_define([DRIZZLE_PLUGIN_STATIC_]AS_TR_CPP([$1]), [$2])
131
dnl ---------------------------------------------------------------------------
132
dnl Macro: DRIZZLE_PLUGIN_DYNAMIC
135
dnl DRIZZLE_PLUGIN_DYNAMIC([name],[myplugin.la])
138
dnl Declare the name for the shared library
140
dnl ---------------------------------------------------------------------------
142
AC_DEFUN([DRIZZLE_PLUGIN_DYNAMIC],[
143
DRIZZLE_REQUIRE_PLUGIN([$1])
144
m4_define([DRIZZLE_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]), [$2])
148
dnl ---------------------------------------------------------------------------
149
dnl Macro: DRIZZLE_PLUGIN_MANDATORY
152
dnl DRIZZLE_PLUGIN_MANDATORY([name])
155
dnl Marks the specified plugin as a mandatory plugin
157
dnl ---------------------------------------------------------------------------
159
AC_DEFUN([DRIZZLE_PLUGIN_MANDATORY],[
160
DRIZZLE_REQUIRE_PLUGIN([$1])
161
_DRIZZLE_PLUGIN_MANDATORY([$1],
162
[DRIZZLE_PLUGIN_MANDATORY_]AS_TR_CPP([$1]),
163
[DRIZZLE_PLUGIN_DISABLED_]AS_TR_CPP([$1])
167
AC_DEFUN([_DRIZZLE_PLUGIN_MANDATORY],[
168
m4_define([$2], [yes])
170
AC_FATAL([mandatory plugin $1 has been disabled])
176
dnl ---------------------------------------------------------------------------
177
dnl Macro: DRIZZLE_PLUGIN_DISABLED
180
dnl DRIZZLE_PLUGIN_DISABLED([name])
183
dnl Marks the specified plugin as a disabled plugin
185
dnl ---------------------------------------------------------------------------
187
AC_DEFUN([DRIZZLE_PLUGIN_DISABLED],[
188
DRIZZLE_REQUIRE_PLUGIN([$1])
189
_DRIZZLE_PLUGIN_DISABLED([$1],
190
[DRIZZLE_PLUGIN_DISABLED_]AS_TR_CPP([$1]),
191
[DRIZZLE_PLUGIN_MANDATORY_]AS_TR_CPP([$1])
195
AC_DEFUN([_DRIZZLE_PLUGIN_DISABLED],[
196
m4_define([$2], [yes])
198
AC_FATAL([attempt to disable mandatory plugin $1])
204
dnl ---------------------------------------------------------------------------
205
dnl Macro: DRIZZLE_PLUGIN_DEPENDS
208
dnl DRIZZLE_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([DRIZZLE_PLUGIN_DEPENDS],[
219
DRIZZLE_REQUIRE_PLUGIN([$1])
221
_DRIZZLE_PLUGIN_DEPEND([$1], $2)
223
AC_FATAL([bad number of arguments])
227
AC_DEFUN([_DRIZZLE_PLUGIN_DEPEND],[
228
ifelse($#, 1, [], [$#:$2], [2:], [], [
229
DRIZZLE_REQUIRE_PLUGIN([$2])
230
_DRIZZLE_PLUGAPPEND([__mysql_plugdepends_$1__],[$2])
231
_DRIZZLE_PLUGIN_DEPEND([$1], m4_shift(m4_shift($@)))
236
dnl ---------------------------------------------------------------------------
237
dnl Macro: DRIZZLE_PLUGIN_ACTIONS
240
dnl DRIZZLE_PLUGIN_ACTIONS([name],[PLUGIN_CONFIGURE_STUFF])
243
dnl Declares additional autoconf actions required to configure the plugin
245
dnl ---------------------------------------------------------------------------
247
AC_DEFUN([DRIZZLE_PLUGIN_ACTIONS],[
248
DRIZZLE_REQUIRE_PLUGIN([$1])
250
m4_define([DRIZZLE_PLUGIN_ACTIONS_]AS_TR_CPP([$1]),m4_defn([$2]))
252
m4_define([DRIZZLE_PLUGIN_ACTIONS_]AS_TR_CPP([$1]), [$2])
256
dnl ---------------------------------------------------------------------------
257
dnl Macro: DRIZZLE_PLUGIN_DEPENDS_ON_DRIZZLE_INTERNALS
260
dnl DRIZZLE_PLUGIN_DEPENDS_ON_DRIZZLE_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([DRIZZLE_PLUGIN_DEPENDS_ON_DRIZZLE_INTERNALS],[
275
DRIZZLE_REQUIRE_PLUGIN([$1])
276
m4_define([DRIZZLE_PLUGIN_DEPENDS_ON_DRIZZLE_INTERNALS_]AS_TR_CPP([$1]), [$2])
279
dnl ---------------------------------------------------------------------------
280
dnl Macro: DRIZZLE_CONFIGURE_PLUGINS
283
dnl DRIZZLE_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([DRIZZLE_CONFIGURE_PLUGINS],[
292
m4_ifdef([__mysql_plugin_configured__],[
293
AC_FATAL([cannot use [DRIZZLE_CONFIGURE_PLUGINS] multiple times])
295
m4_define([__mysql_plugin_configured__],[done])
296
_DRIZZLE_INCLUDE_LIST(
297
m4_bpatsubst(m4_esyscmd([ls plugin/*/plug.in storage/*/plug.in 2>/dev/null]),
300
m4_ifdef([__mysql_plugin_list__],[
301
_DRIZZLE_CHECK_PLUGIN_ARGS([$1])
302
_DRIZZLE_CONFIGURE_PLUGINS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
303
_DRIZZLE_EMIT_PLUGIN_ACTIONS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
304
AC_SUBST([drizzle_plugin_files])
305
AC_SUBST([mysql_se_dirs])
306
AC_SUBST([mysql_pg_dirs])
307
AC_SUBST([mysql_se_unittest_dirs])
308
AC_SUBST([mysql_pg_unittest_dirs])
309
AC_SUBST([condition_dependent_plugin_modules])
310
AC_SUBST([condition_dependent_plugin_objects])
311
AC_SUBST([condition_dependent_plugin_links])
312
AC_SUBST([condition_dependent_plugin_includes])
317
AC_DEFUN([_DRIZZLE_CONFIGURE_PLUGINS],[
318
ifelse($#, 0, [], $#, 1, [
319
_DRIZZLE_EMIT_CHECK_PLUGIN([$1])
321
_DRIZZLE_EMIT_CHECK_PLUGIN([$1])
322
_DRIZZLE_CONFIGURE_PLUGINS(m4_shift($@))
326
AC_DEFUN([_DRIZZLE_EMIT_CHECK_PLUGIN],[
327
__DRIZZLE_EMIT_CHECK_PLUGIN(
329
m4_bpatsubst([$1], -, _),
330
[DRIZZLE_PLUGIN_NAME_]AS_TR_CPP([$1]),
331
[DRIZZLE_PLUGIN_DESC_]AS_TR_CPP([$1]),
332
[DRIZZLE_PLUGIN_DEFINE_]AS_TR_CPP([$1]),
333
[DRIZZLE_PLUGIN_DIRECTORY_]AS_TR_CPP([$1]),
334
[DRIZZLE_PLUGIN_STATIC_]AS_TR_CPP([$1]),
335
[DRIZZLE_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]),
336
[DRIZZLE_PLUGIN_MANDATORY_]AS_TR_CPP([$1]),
337
[DRIZZLE_PLUGIN_DISABLED_]AS_TR_CPP([$1]),
338
[DRIZZLE_PLUGIN_DEPENDS_ON_DRIZZLE_INTERNALS_]AS_TR_CPP([$1]),
339
[DRIZZLE_PLUGIN_ACTIONS_]AS_TR_CPP([$1])
343
AC_DEFUN([__DRIZZLE_EMIT_CHECK_PLUGIN],[
345
AH_TEMPLATE($5, [Include ]$4[ into drizzled])
347
AC_MSG_CHECKING([whether to use ]$3)
348
mysql_use_plugin_dir=""
350
if test "X[$mysql_plugin_]$2" = Xyes -a \
351
"X[$with_plugin_]$2" != Xno -o \
352
"X[$with_plugin_]$2" = Xyes; then
353
AC_MSG_RESULT([error])
354
AC_MSG_ERROR([disabled])
359
if test "X[$with_plugin_]$2" = Xno; then
360
AC_MSG_RESULT([error])
361
AC_MSG_ERROR([cannot disable mandatory plugin])
363
[mysql_plugin_]$2=yes
365
case "$with_mysqld_ldflags " in
367
# No need to build shared plugins when drizzled is linked with
368
# -all-static as it won't be able to load them.
369
if test "X[$mysql_plugin_]$2" != Xyes -a \
370
"X[$with_plugin_]$2" != Xyes; then
376
if test "X[$with_plugin_]$2" = Xno; then
379
m4_ifdef([$8],m4_ifdef([$7],[],[[with_plugin_]$2='']))
380
if test "X[$mysql_plugin_]$2" != Xyes -a \
381
"X[$with_plugin_]$2" != Xyes; then
384
if test -d "$srcdir/$6" ; then
385
mysql_use_plugin_dir="$6"
387
AC_SUBST([plugin_]$2[_shared_target], "$8")
388
AC_SUBST([plugin_]$2[_static_target], [""])
390
AC_MSG_RESULT([plugin])
403
ifelse(m4_bregexp($7, [^lib[^.]+\.a$]), -2, [
404
dnl change above "-2" to "0" to enable this section
405
dnl Although this is "pretty", it breaks libdrizzled build
407
mysql_use_plugin_dir="$6"
408
mysql_plugin_libs="$mysql_plugin_libs -L[\$(top_builddir)]/$6"
410
mysql_plugin_libs="$mysql_plugin_libs dnl
411
[-l]m4_bregexp($7, [^lib\([^.]+\)], [\1])"
412
], m4_bregexp($7, [^\\\$]), 0, [
414
mysql_use_plugin_dir="$6"
416
mysql_plugin_libs="$mysql_plugin_libs $7"
419
mysql_use_plugin_dir="$6"
420
mysql_plugin_libs="$mysql_plugin_libs \$(top_builddir)/$6/$7"
422
mysql_plugin_libs="$mysql_plugin_libs $7"
428
AC_SUBST([plugin_]$2[_static_target], "$7")
429
AC_SUBST([plugin_]$2[_shared_target], [""])
432
AC_MSG_RESULT([error])
433
AC_MSG_ERROR([Plugin $1 does not support static linking])
437
AC_SUBST([plugin_]$2[_static_target], ["yes"])
438
AC_SUBST([plugin_]$2[_shared_target], [""])
442
drizzled_plugin_defs="[builtin_]$2[_plugin], $drizzled_plugin_defs"
446
condition_dependent_plugin_modules="$condition_dependent_plugin_modules m4_bregexp($11, [[^/]+$], [\&])"
447
condition_dependent_plugin_objects="$condition_dependent_plugin_objects m4_bregexp($11, [[^/]+\.], [\&o])"
448
condition_dependent_plugin_links="$condition_dependent_plugin_links $6/$11"
449
condition_dependent_plugin_includes="$condition_dependent_plugin_includes -I[\$(top_srcdir)]/$6/m4_bregexp($11, [^.+[/$]], [\&])"
453
if test -n "$mysql_use_plugin_dir" ; then
454
mysql_plugin_dirs="$mysql_plugin_dirs $6"
455
m4_syscmd(test -f "$6/configure")
457
[AC_CONFIG_SUBDIRS($6)],
458
[AC_CONFIG_FILES($6/Makefile)]
460
ifelse(m4_substr($6, 0, 8), [storage/],
462
[mysql_se_dirs="$mysql_se_dirs ]m4_substr($6, 8)"
463
mysql_se_unittest_dirs="$mysql_se_unittest_dirs ../$6"
465
m4_substr($6, 0, 7), [plugin/],
467
[mysql_pg_dirs="$mysql_pg_dirs ]m4_substr($6, 7)"
468
mysql_pg_unittest_dirs="$mysql_pg_unittest_dirs ../$6"
470
[AC_FATAL([don't know how to handle plugin dir ]$6)])
477
AC_DEFUN([_DRIZZLE_EMIT_PLUGIN_ACTIONS],[
478
ifelse($#, 0, [], $#, 1, [
479
_DRIZZLE_EMIT_PLUGIN_ACTION([$1])
481
_DRIZZLE_EMIT_PLUGIN_ACTION([$1])
482
_DRIZZLE_EMIT_PLUGIN_ACTIONS(m4_shift($@))
486
AC_DEFUN([_DRIZZLE_EMIT_PLUGIN_ACTION],[
487
__DRIZZLE_EMIT_PLUGIN_ACTION(
489
m4_bpatsubst([$1], -, _),
490
[DRIZZLE_PLUGIN_DISABLED_]AS_TR_CPP([$1]),
491
[DRIZZLE_PLUGIN_ACTIONS_]AS_TR_CPP([$1])
496
AC_DEFUN([__DRIZZLE_EMIT_PLUGIN_ACTION],[
498
if test "X[$with_plugin_]$2" = Xyes; then
499
if test "X[$plugin_]$2[_static_target]" = X -a \
500
"X[$plugin_]$2[_shared_target]" = X; then
501
AC_MSG_ERROR([that's strange, $1 failed sanity check])
510
dnl ===========================================================================
511
dnl Private helper macros
512
dnl ===========================================================================
516
dnl DRIZZLE_REQUIRE_PLUGIN([name])
519
dnl Checks that the specified plugin does exist
521
AC_DEFUN([DRIZZLE_REQUIRE_PLUGIN],[
522
_DRIZZLE_REQUIRE_PLUGIN([$1], [__DRIZZLE_PLUGIN_]AS_TR_CPP([$1])[__])
525
define([_DRIZZLE_REQUIRE_PLUGIN],[
527
ifelse($2, [$1], [], [
528
AC_FATAL([Misspelt DRIZZLE_PLUGIN declaration for $1])
531
AC_FATAL([Missing DRIZZLE_PLUGIN declaration for $1])
536
dnl ---------------------------------------------------------------------------
540
dnl _DRIZZLE_EMIT_METAPLUGINS([name,name...])
543
dnl Emits shell code for metaplugins
545
AC_DEFUN([_DRIZZLE_EMIT_METAPLUGINS], [ifelse($#, 0, [], $#, 1,
546
[_DRIZZLE_EMIT_METAPLUGIN([$1], [__mysql_]m4_bpatsubst($1, -, _)[_plugins__])
548
[_DRIZZLE_EMIT_METAPLUGIN([$1], [__mysql_]m4_bpatsubst($1, -, _)[_plugins__])
549
_DRIZZLE_EMIT_METAPLUGINS(m4_shift($@))])
552
AC_DEFUN([_DRIZZLE_EMIT_METAPLUGIN], [
555
mysql_plugins='m4_bpatsubst($2, :, [ ])'
563
dnl ---------------------------------------------------------------------------
567
dnl _DRIZZLE_PLUGAPPEND([name],[to-append])
570
dnl Helper macro for appending to colon-delimited lists
571
dnl Optinal 3rd argument is for actions only required when defining
572
dnl macro named for the first time.
574
AC_DEFUN([_DRIZZLE_PLUGAPPEND],[
576
m4_define([__plugin_append_tmp__], m4_defn([$1]))
578
m4_define([$1], __plugin_append_tmp__[:$2])
579
m4_undefine([__plugin_append_tmp__])
581
m4_define([$1], [$2])
588
dnl _DRIZZLE_PLUGAPPEND_META([name],[meta,meta...])
591
dnl Helper macro for adding plugins to meta plugins
593
AC_DEFUN([_DRIZZLE_PLUGAPPEND_META],[
594
ifelse($#, 1, [], [$#:$2], [2:], [], [$2], [all], [
595
AC_FATAL([protected plugin group: all])
597
AC_FATAL([protected plugin group: none])
599
_DRIZZLE_PLUGAPPEND([__mysql_$1_configs__],[$2])
600
_DRIZZLE_PLUGAPPEND([__mysql_]m4_bpatsubst($2, -, _)[_plugins__],[$1], [
601
_DRIZZLE_PLUGAPPEND([__mysql_metaplugin_list__],[$2])
603
_DRIZZLE_PLUGAPPEND_META([$1], m4_shift(m4_shift($@)))
608
dnl ---------------------------------------------------------------------------
612
dnl DRIZZLE_LIST_PLUGINS
615
dnl Emits formatted list of declared plugins
617
AC_DEFUN([DRIZZLE_LIST_PLUGINS],[dnl
618
m4_ifdef([__mysql_plugin_list__],[dnl
619
_DRIZZLE_LIST_PLUGINS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))dnl
623
AC_DEFUN([_DRIZZLE_LIST_PLUGINS],[dnl
624
ifelse($#, 0, [], $#, 1, [dnl
625
DRIZZLE_SHOW_PLUGIN([$1])dnl
627
DRIZZLE_SHOW_PLUGIN([$1])dnl
628
_DRIZZLE_LIST_PLUGINS(m4_shift($@))dnl
632
AC_DEFUN([DRIZZLE_SHOW_PLUGIN],[
633
_DRIZZLE_SHOW_PLUGIN(
636
[DRIZZLE_PLUGIN_NAME_]AS_TR_CPP([$1]),
637
[DRIZZLE_PLUGIN_DESC_]AS_TR_CPP([$1]),
638
[DRIZZLE_PLUGIN_DEFINE_]AS_TR_CPP([$1]),
639
[DRIZZLE_PLUGIN_DIRECTORY_]AS_TR_CPP([$1]),
640
[DRIZZLE_PLUGIN_STATIC_]AS_TR_CPP([$1]),
641
[DRIZZLE_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]),
642
[DRIZZLE_PLUGIN_MANDATORY_]AS_TR_CPP([$1]),
643
[DRIZZLE_PLUGIN_DISABLED_]AS_TR_CPP([$1]),
644
[DRIZZLE_PLUGIN_ACTIONS_]AS_TR_CPP([$1]),
645
__mysql_[$1]_configs__,
649
AC_DEFUN([_DRIZZLE_SHOW_PLUGIN],[dnl
653
Supports build: _PLUGIN_BUILD_TYPE([$7],[$8])[]dnl
655
Configurations: m4_bpatsubst($12, :, [, ])])[]dnl
657
Status: disabled])[]dnl
659
Status: mandatory])[]dnl
662
AC_DEFUN([_PLUGIN_BUILD_TYPE],
663
[m4_ifdef([$1],[static ]m4_ifdef([$2],[and dnl
664
]))[]m4_ifdef([$2],[dynamic],[m4_ifdef([$1],[],[static])])])
667
dnl ---------------------------------------------------------------------------
670
AC_DEFUN([_DRIZZLE_EMIT_PLUGINS],[
671
ifelse($#, 0, [], [$#:$1], [1:], [], [
672
m4_ifdef([DRIZZLE_PLUGIN_ACTIONS_]AS_TR_CPP([$1]), [], [
673
m4_define([DRIZZLE_PLUGIN_ACTIONS_]AS_TR_CPP([$1]),[ ])
676
m4_ifdef([DRIZZLE_PLUGIN_DISABLED_]AS_TR_CPP([$1]),[
677
AC_MSG_ERROR([plugin $1 is disabled])
679
_DRIZZLE_EMIT_PLUGIN_ENABLE([$1], m4_bpatsubst([$1], -, _),
680
[DRIZZLE_PLUGIN_NAME_]AS_TR_CPP([$1]),
681
[DRIZZLE_PLUGIN_STATIC_]AS_TR_CPP([$1]),
682
[DRIZZLE_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]))
685
_DRIZZLE_EMIT_PLUGINS(m4_shift($@))
689
AC_DEFUN([_DRIZZLE_EMIT_PLUGIN_ENABLE],[
690
m4_ifdef([$5],m4_ifdef([$4],[
691
[mysql_plugin_]$2=yes
693
AC_MSG_WARN([$3 can only be built as a plugin])
695
[mysql_plugin_]$2=yes
699
AC_DEFUN([_DRIZZLE_EMIT_PLUGIN_DEPENDS], [
700
ifelse($#, 0, [], [$#:$1], [1:], [], [
701
_DRIZZLE_EMIT_CHECK_DEPENDS(m4_bpatsubst([$1], -, _),
702
[__mysql_plugdepends_$1__])
703
_DRIZZLE_EMIT_PLUGIN_DEPENDS(m4_shift($@))
707
AC_DEFUN([_DRIZZLE_EMIT_CHECK_DEPENDS], [
709
if test "X[$mysql_plugin_]$1" = Xyes -a \
710
"X[$with_plugin_]$1" != Xno -o \
711
"X[$with_plugin_]$1" = Xyes; then
712
_DRIZZLE_EMIT_PLUGIN_DEPENDENCIES(m4_bpatsubst($2, :, [,]))
717
AC_DEFUN([_DRIZZLE_EMIT_PLUGIN_DEPENDENCIES], [
718
ifelse([$1], [], [], [
719
m4_ifdef([DRIZZLE_PLUGIN_DISABLED_]AS_TR_CPP([$1]),[
720
AC_MSG_ERROR([depends upon disabled plugin $1])
722
[mysql_plugin_]m4_bpatsubst([$1], -, _)=yes
723
if test "X[$with_plugin_]m4_bpatsubst([$1], -, _)" = Xno; then
724
AC_MSG_ERROR([depends upon disabled plugin $1])
727
_DRIZZLE_EMIT_PLUGIN_DEPENDENCIES(m4_shift($@))
732
dnl _DRIZZLE_CHECK_PLUGIN_ARGS([plugin],[plugin]...)
735
dnl Emits shell script for checking configure arguments
736
dnl Arguments to this macro is default value for selected plugins
738
AC_DEFUN([_DRIZZLE_CHECK_PLUGIN_ARGS],[
739
__DRIZZLE_CHECK_PLUGIN_ARGS(m4_default([$1], [none]))
742
AC_DEFUN([__DRIZZLE_CHECK_PLUGIN_ARGS],[
743
AC_ARG_WITH([plugins],
744
AS_HELP_STRING([--with-plugins=PLUGIN[[[[[,PLUGIN..]]]]]],
745
[Plugins to include in drizzled. (default is: $1) Must be a
746
configuration name or a comma separated list of plugins.])
748
[Available configurations are:] dnl
749
m4_bpatsubst([none:]m4_ifdef([__mysql_metaplugin_list__],
750
__mysql_metaplugin_list__:)[all], :, [ ])[.])
752
[Available plugins are:] dnl
753
m4_bpatsubst(__mysql_plugin_list__, :, [ ])[.])
754
AS_HELP_STRING([--without-plugin-PLUGIN],
755
[Disable the named plugin from being built. Otherwise, for
756
plugins which are not selected for inclusion in drizzled will be
757
built dynamically (if supported)])
758
AS_HELP_STRING([--with-plugin-PLUGIN],
759
[Forces the named plugin to be linked into drizzled statically.]),
760
[mysql_plugins="`echo $withval | tr ',.:;*[]' ' '`"],
761
[mysql_plugins=['$1']])
763
m4_divert_once([HELP_VAR_END],[
764
Description of plugins:
765
DRIZZLE_LIST_PLUGINS])
767
case "$mysql_plugins" in
769
mysql_plugins='m4_bpatsubst(__mysql_plugin_list__, :, [ ])'
774
m4_ifdef([__mysql_metaplugin_list__],[
775
_DRIZZLE_EMIT_METAPLUGINS(m4_bpatsubst(__mysql_metaplugin_list__, :, [,]))
779
for plugin in $mysql_plugins; do
782
AC_MSG_ERROR([bad plugin name: $plugin])
784
_DRIZZLE_EMIT_PLUGINS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
786
AC_MSG_ERROR([unknown plugin: $plugin])
791
_DRIZZLE_EMIT_PLUGIN_DEPENDS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
794
dnl ---------------------------------------------------------------------------
795
dnl Macro: _DRIZZLE_INCLUDE_LIST
798
dnl _DRIZZLE_INCLUDE_LIST([filename,filename...])
801
dnl includes all files from the list
803
dnl ---------------------------------------------------------------------------
804
AC_DEFUN([_DRIZZLE_INCLUDE_LIST],[
805
ifelse([$1], [], [], [
806
m4_define([__mysql_include__],[$1])
808
m4_undefine([__mysql_include__])
809
_DRIZZLE_INCLUDE_LIST(m4_shift($@))
810
drizzle_plugin_files="\${top_srcdir}/$1 ${drizzle_plugin_files}"
814
dnl ===========================================================================