~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
dnl -*- ksh -*-
2
dnl Process this file with autoconf to produce a configure script.
3
28.1.33 by Monty Taylor
Added -Wall
4
AC_PREREQ(2.61)dnl		Minimum Autoconf version required.
1 by brian
clean slate
5
28.1.33 by Monty Taylor
Added -Wall
6
AC_INIT
7
AC_CONFIG_SRCDIR([sql/mysqld.cc])
39 by Brian Aker
Move build helper files into config
8
AC_CONFIG_AUX_DIR(config)
28.1.33 by Monty Taylor
Added -Wall
9
AC_CONFIG_HEADERS([include/config.h:config.h.in])
10
AC_CANONICAL_TARGET
91 by Brian Aker
Main binary now named drizzled
11
AM_INIT_AUTOMAKE(drizzle, 7.0.0, no-define)
1 by brian
clean slate
12
13
PROTOCOL_VERSION=10
14
DOT_FRM_VERSION=6
15
# See the libtool docs for information on how to do shared lib versions.
16
SHARED_LIB_MAJOR_VERSION=16
17
SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0
18
19
20
21
# Set all version vars based on $VERSION. How do we do this more elegant ?
22
# Remember that regexps needs to quote [ and ] since this is run through m4
23
# We take some made up examples
24
#
25
#  VERSION                  5.1.40sp1-alpha     5.0.34a
26
#  MYSQL_NO_DASH_VERSION    5.1.40sp1           5.0.34a
27
#  MYSQL_NUMERIC_VERSION    5.1.40              5.0.34
28
#  MYSQL_BASE_VERSION       5.1                 5.0
29
#  MYSQL_VERSION_ID         50140               50034
30
#
31
MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|-.*$||"`
32
MYSQL_NUMERIC_VERSION=`echo $MYSQL_NO_DASH_VERSION | sed -e "s|[[a-z]][[a-z0-9]]*$||"`
33
MYSQL_BASE_VERSION=`echo $MYSQL_NUMERIC_VERSION | sed -e "s|\.[[^.]]*$||"`
34
MYSQL_VERSION_ID=`echo $MYSQL_NUMERIC_VERSION | \
35
    awk -F. '{printf "%d%0.2d%0.2d", $1, $2, $3}'`
36
37
# The port should be constant for a LONG time
38
MYSQL_TCP_PORT_DEFAULT=3306
39
40
dnl Include m4 
41
sinclude(config/ac-macros/alloca.m4)
42
sinclude(config/ac-macros/check_cpu.m4)
43
sinclude(config/ac-macros/character_sets.m4)
44
sinclude(config/ac-macros/compiler_flag.m4)
45
sinclude(config/ac-macros/dtrace.m4)
46
sinclude(config/ac-macros/plugins.m4)
47
sinclude(config/ac-macros/large_file.m4)
48
sinclude(config/ac-macros/misc.m4)
49
sinclude(config/ac-macros/readline.m4)
50
sinclude(config/ac-macros/ssl.m4)
51
52
# Remember to add a directory sql/share/LANGUAGE
53
AVAILABLE_LANGUAGES="\
54
czech danish dutch english estonian french german greek hungarian \
55
italian japanese korean norwegian norwegian-ny polish portuguese \
56
romanian russian serbian slovak spanish swedish ukrainian"
57
58
#####
59
#####
60
61
AC_SUBST(MYSQL_NO_DASH_VERSION)
62
AC_SUBST(MYSQL_BASE_VERSION)
63
AC_SUBST(MYSQL_VERSION_ID)
64
AC_SUBST(MYSQL_PREVIOUS_BASE_VERSION)
65
AC_SUBST(PROTOCOL_VERSION)
66
AC_DEFINE_UNQUOTED([PROTOCOL_VERSION], [$PROTOCOL_VERSION],
67
                   [mysql client protocol version])
68
AC_SUBST(DOT_FRM_VERSION)
69
AC_DEFINE_UNQUOTED([DOT_FRM_VERSION], [$DOT_FRM_VERSION],
70
                   [Version of .frm files])
71
AC_SUBST(SHARED_LIB_MAJOR_VERSION)
72
AC_SUBST(SHARED_LIB_VERSION)
73
AC_SUBST(AVAILABLE_LANGUAGES)
74
75
76
# Canonicalize the configuration name.
77
78
# Check whether --with-system-type or --without-system-type was given.
28.1.33 by Monty Taylor
Added -Wall
79
AC_ARG_WITH([system-type],
80
    [AS_HELP_STRING([--with-system-type],
81
       [Set the system type, like "sun-solaris10"])],
1 by brian
clean slate
82
    [SYSTEM_TYPE="$withval"],
83
    [SYSTEM_TYPE="$host_vendor-$host_os"])
28.1.33 by Monty Taylor
Added -Wall
84
AC_ARG_WITH([machine-type],
85
    [AS_HELP_STRING([--with-machine-type],
86
       [Set the machine type, like "powerpc"])],
1 by brian
clean slate
87
    [MACHINE_TYPE="$withval"],
88
    [MACHINE_TYPE="$host_cpu"])
89
AC_SUBST(SYSTEM_TYPE)
90
AC_DEFINE_UNQUOTED([SYSTEM_TYPE], ["$SYSTEM_TYPE"],
91
                   [Name of system, eg sun-solaris])
92
AC_SUBST(MACHINE_TYPE)
93
AC_DEFINE_UNQUOTED([MACHINE_TYPE], ["$MACHINE_TYPE"],
94
                   [Machine type name, eg sparc])
95
96
# Detect intel x86 like processor
97
BASE_MACHINE_TYPE=$MACHINE_TYPE
98
case $MACHINE_TYPE in
99
  i?86) BASE_MACHINE_TYPE=i386 ;;
100
esac
101
102
# Save some variables and the command line options for mysqlbug
103
SAVE_CC="$CC"
104
SAVE_CXX="$CXX"
105
SAVE_ASFLAGS="$ASFLAGS"
106
SAVE_CFLAGS="$CFLAGS"
107
SAVE_CXXFLAGS="$CXXFLAGS"
108
SAVE_LDFLAGS="$LDFLAGS"
109
SAVE_CXXLDFLAGS="$CXXLDFLAGS"
110
CONF_COMMAND="$0 $ac_configure_args"
111
AC_SUBST(CONF_COMMAND)
112
AC_SUBST(SAVE_CC)
113
AC_SUBST(SAVE_CXX)
114
AC_SUBST(SAVE_ASFLAGS)
115
AC_SUBST(SAVE_CFLAGS)
116
AC_SUBST(SAVE_CXXFLAGS)
117
AC_SUBST(SAVE_LDFLAGS)
118
AC_SUBST(SAVE_CXXLDFLAGS)
119
AC_SUBST(CXXLDFLAGS)
120
121
AM_SANITY_CHECK
122
# This is needed is SUBDIRS is set
123
AC_PROG_MAKE_SET
124
125
##############################################################################
126
# The below section needs to be done before AC_PROG_CC
127
##############################################################################
128
129
if test "x${CFLAGS-}" = x ; then
130
  cflags_is_set=no
131
else
132
  cflags_is_set=yes
133
fi
134
135
if test "x${CPPFLAGS-}" = x ; then
136
  cppflags_is_set=no
137
else
138
  cppflags_is_set=yes
139
fi
140
141
if test "x${LDFLAGS-}" = x ; then
142
  ldflags_is_set=no
143
else
144
  ldflags_is_set=yes
145
fi
146
147
################ End of section to be done before AC_PROG_CC #################
148
149
# The following hack should ensure that configure doesn't add optimizing
150
# or debugging flags to CFLAGS or CXXFLAGS
151
# C_EXTRA_FLAGS are flags that are automaticly added to both
152
# CFLAGS and CXXFLAGS
153
CFLAGS="$CFLAGS $C_EXTRA_FLAGS "
154
CXXFLAGS="$CXXFLAGS $C_EXTRA_FLAGS "
155
156
dnl Checks for programs.
157
AC_PROG_AWK
158
AC_PROG_CC
159
AC_PROG_CXX
160
AC_PROG_CPP
161
AM_PROG_CC_C_O
162
163
# Print version of CC and CXX compiler (if they support --version)
164
case $SYSTEM_TYPE in
165
  *netware*)
166
CC_VERSION=`$CC -version | grep -i version`
167
    ;;
168
  *)
169
CC_VERSION=`$CC --version | sed 1q`
170
    ;;
171
esac
172
if test $? -eq "0"
173
then
174
  AC_MSG_CHECKING("C Compiler version")
175
  AC_MSG_RESULT("$CC $CC_VERSION")
176
else
177
CC_VERSION=""
178
fi
179
AC_SUBST(CC_VERSION)
180
MYSQL_CHECK_CXX_VERSION
181
28.1.33 by Monty Taylor
Added -Wall
182
if test "$ac_cv_c_compiler_gnu" = "yes"
1 by brian
clean slate
183
then
184
  AS="$CC -c"
185
  AC_SUBST(AS)
186
else
187
  AC_PATH_PROG(AS, as, as)
188
fi
189
190
# Still need ranlib for readline; local static use only so no libtool.
191
AC_PROG_RANLIB
192
# We use libtool
193
#AC_LIBTOOL_WIN32_DLL
194
AC_PROG_LIBTOOL
195
196
# Ensure that we have --preserve-dup-deps defines, otherwise we get link
197
# problems of 'mysql' with CXX=g++
198
LIBTOOL="$LIBTOOL --preserve-dup-deps"
199
AC_SUBST(LIBTOOL)dnl
200
201
AC_SUBST(NM)dnl
202
203
AC_PROG_INSTALL
204
test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
205
206
# Not critical since the generated file is distributed
207
AC_CHECK_PROGS(YACC, ['bison -y -p MYSQL'])
208
209
AC_PATH_PROG(uname_prog, uname, no)
210
211
# We should go through this and put all the explictly system dependent
212
# stuff in one place
213
AC_MSG_CHECKING(operating system)
214
AC_CACHE_VAL(mysql_cv_sys_os,
215
[
216
if test "$uname_prog" != "no"; then
217
  mysql_cv_sys_os="`uname`"
218
else
219
  mysql_cv_sys_os="Not Solaris"
220
fi
221
])
222
AC_MSG_RESULT($mysql_cv_sys_os)
223
224
# This should be rewritten to use $target_os
225
case "$target_os" in
226
  *solaris*)
227
    TARGET_SOLARIS="true"
228
    AC_DEFINE([TARGET_OS_SOLARIS], [1], [Whether we are building for Solaris])
229
    AC_SUBST(TARGET_SOLARIS)
230
  ;;
231
esac
232
233
# The following is required for portable results of floating point calculations
234
# on PowerPC. The same must also be done for IA-64, but this options is missing
235
# in the IA-64 gcc backend.
236
237
if test "$GCC" = "yes"
238
then
239
  case "$host_cpu" in
240
    *ppc* | *powerpc*)
241
      CFLAGS="$CFLAGS -mno-fused-madd"
242
      CXXFLAGS="$CXXFLAGS -mno-fused-madd"
243
    ;;
244
  esac
245
fi
246
247
AC_SUBST(CC)
248
AC_SUBST(CFLAGS)
249
AC_SUBST(CXX)
250
AC_SUBST(CXXFLAGS)
251
AC_SUBST(ASFLAGS)
252
AC_SUBST(LD)
253
AC_SUBST(INSTALL_SCRIPT)
254
53.2.1 by Monty Taylor
Added --disable-pedantic-warnings and --enable-fail.
255
1 by brian
clean slate
256
export CC CXX CFLAGS LD LDFLAGS AR ARFLAGS
257
258
if test "$GCC" = "yes"
259
then
260
  # mysqld requires -fno-implicit-templates.
261
  # Disable exceptions as they seams to create problems with gcc and threads.
262
  # mysqld doesn't use run-time-type-checking, so we disable it.
263
  # We should use -Wno-invalid-offsetof flag to disable some warnings from gcc
264
  # regarding offset() usage in C++ which are done in a safe manner in the
265
  # server
53.2.1 by Monty Taylor
Added --disable-pedantic-warnings and --enable-fail.
266
  CXXFLAGS="$CXXFLAGS ${GCC_WARNINGS} -fno-implicit-templates -fno-exceptions -fno-rtti"
267
  CFLAGS="$CFLAGS ${GCC_WARNINGS} "
1 by brian
clean slate
268
  AC_DEFINE([HAVE_EXPLICIT_TEMPLATE_INSTANTIATION],
269
    [1], [Defined by configure. Use explicit template instantiation.])
270
fi
271
272
MYSQL_PROG_AR
273
274
# libmysqlclient versioning when linked with GNU ld.
275
if $LD --version 2>/dev/null|grep -q GNU; then
276
  LD_VERSION_SCRIPT="-Wl,--version-script=\$(top_builddir)/libmysql/libmysql.ver"
277
  AC_CONFIG_FILES(libmysql/libmysql.ver)
278
fi
279
AC_SUBST(LD_VERSION_SCRIPT)
280
281
282
# Avoid bug in fcntl on some versions of linux
283
AC_MSG_CHECKING([if we should use 'skip-external-locking' as default for $target_os])
284
# Any variation of Linux
285
if expr "$target_os" : "[[Ll]]inux.*" > /dev/null
286
then
287
  MYSQLD_DEFAULT_SWITCHES="--skip-external-locking"
288
  TARGET_LINUX="true"
289
  AC_MSG_RESULT([yes])
290
  AC_DEFINE([TARGET_OS_LINUX], [1], [Whether we build for Linux])
291
else
292
  MYSQLD_DEFAULT_SWITCHES=""
293
  TARGET_LINUX="false"
294
  AC_MSG_RESULT([no])
295
fi
296
AC_SUBST(MYSQLD_DEFAULT_SWITCHES)
297
AC_SUBST(TARGET_LINUX)
298
299
dnl Find paths to some shell programs
300
AC_PATH_PROG(LN, ln, ln)
301
# This must be able to take a -f flag like normal unix ln.
302
AC_PATH_PROG(LN_CP_F, ln, ln)
303
304
AC_PATH_PROG(MV, mv, mv)
305
AC_PATH_PROG(RM, rm, rm)
306
AC_PATH_PROG(CP, cp, cp)
307
AC_PATH_PROG(SED, sed, sed)
308
AC_PATH_PROG(CMP, cmp, cmp)
309
AC_PATH_PROG(CHMOD, chmod, chmod)
310
AC_PATH_PROG(HOSTNAME, hostname, hostname)
311
# Check for a GNU tar named 'gtar', or 'gnutar' (MacOS X) and
312
# fall back to 'tar' otherwise and hope that it's a GNU tar as well
313
AC_CHECK_PROGS(TAR, gnutar gtar tar)
314
315
dnl We use a path for perl so the script startup works
316
dnl We make sure to use perl, not perl5, in hopes that the RPMs will
317
dnl not depend on the perl5 binary being installed (probably a bug in RPM)
318
AC_PATH_PROG(PERL, perl, no)
319
if test "$PERL" != "no" && $PERL -e 'require 5' > /dev/null 2>&1
320
then
321
  PERL5=$PERL
322
else
323
  AC_PATH_PROG(PERL5, perl5, no)
324
  if test "$PERL5" != no
325
  then
326
    PERL=$PERL5
327
    ac_cv_path_PERL=$ac_cv_path_PERL5
328
  fi
329
fi
330
331
AC_SUBST(HOSTNAME)
332
AC_SUBST(PERL)
333
AC_SUBST(PERL5)
334
335
# icheck, used for ABI check
336
AC_PATH_PROG(ICHECK, icheck, no)
337
# "icheck" is also the name of a file system check program on Tru64.
338
# Verify the program found is really the interface checker.
339
if test "x$ICHECK" != "xno"
340
then
341
  AC_MSG_CHECKING(if $ICHECK works as expected)
342
  echo "int foo;" > conftest.h
343
  $ICHECK --canonify -o conftest.ic conftest.h 2>/dev/null
344
  if test -f "conftest.ic"
345
  then
346
    AC_MSG_RESULT(yes)
347
  else
348
    AC_MSG_RESULT(no)
349
    ICHECK=no
350
  fi
351
  rm -f conftest.ic conftest.h
352
fi
353
AC_SUBST(ICHECK)
354
355
# Lock for PS
356
AC_PATH_PROG(PS, ps, ps)
357
AC_MSG_CHECKING("how to check if pid exists")
358
PS=$ac_cv_path_PS
359
# Linux style
360
if $PS p $$ 2> /dev/null | grep `echo $0 | sed s/\-//` > /dev/null
361
then
362
  FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null"
363
# Solaris
364
elif $PS -fp $$ 2> /dev/null | grep $0 > /dev/null
365
then
366
  FIND_PROC="$PS -p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null"
367
# BSD style
368
elif $PS -uaxww 2> /dev/null | grep $0 > /dev/null
369
then
370
  FIND_PROC="$PS -uaxww | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null"
371
# SysV style
372
elif $PS -ef 2> /dev/null | grep $0 > /dev/null
373
then
374
  FIND_PROC="$PS -ef | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null"
375
# Do anybody use this?
376
elif $PS $$ 2> /dev/null | grep $0 > /dev/null
377
then
378
  FIND_PROC="$PS \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null"
379
else
380
  case $SYSTEM_TYPE in
381
    *freebsd*|*dragonfly*)
382
      FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null"
383
      ;;
384
    *darwin*)
385
      FIND_PROC="$PS -uaxww | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null"
386
      ;;
387
    *)
388
      AC_MSG_ERROR([Could not find the right ps switches. Which OS is this ?. See the Installation chapter in the Reference Manual.])
389
  esac
390
fi
391
AC_SUBST(FIND_PROC)
392
AC_MSG_RESULT("$FIND_PROC")
393
394
# Check if a pid is valid
395
AC_PATH_PROG(KILL, kill, kill)
396
AC_MSG_CHECKING("for kill switches")
397
if $ac_cv_path_KILL -0 $$
398
then
399
  CHECK_PID="$ac_cv_path_KILL -0 \$\$PID > /dev/null 2> /dev/null"
400
elif kill -s 0 $$
401
then
402
  CHECK_PID="$ac_cv_path_KILL -s 0 \$\$PID > /dev/null 2> /dev/null"
403
else
404
  AC_MSG_WARN([kill -0 to check for pid seems to fail])
405
    CHECK_PID="$ac_cv_path_KILL -s SIGCONT \$\$PID > /dev/null 2> /dev/null"
406
fi
407
AC_SUBST(CHECK_PID)
408
AC_MSG_RESULT("$CHECK_PID")
409
410
# We need an ANSI C compiler
411
AM_PROG_CC_STDC
412
413
# We need an assembler, too
414
AM_PROG_AS
415
CCASFLAGS="$CCASFLAGS $ASFLAGS"
416
417
# Check if we need noexec stack for assembler
418
AC_CHECK_NOEXECSTACK
419
420
if test "$am_cv_prog_cc_stdc" = "no"
421
then
91 by Brian Aker
Main binary now named drizzled
422
  AC_MSG_ERROR([Drizzle requires an ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.])
1 by brian
clean slate
423
fi
424
425
28.1.39 by Monty Taylor
Made everything use AS_HELP_STRING (except for charsets, which are dying anyway)
426
AC_ARG_WITH([server-suffix],
427
    [AS_HELP_STRING([--with-server-suffix],
428
      [Append value to the version string.])],
1 by brian
clean slate
429
    [ MYSQL_SERVER_SUFFIX=`echo "$withval" | sed -e  's/^\(...................................\)..*$/\1/'` ],
430
    [ MYSQL_SERVER_SUFFIX= ]
431
    )
432
AC_SUBST(MYSQL_SERVER_SUFFIX)
433
434
# Force use of a curses libs
28.1.39 by Monty Taylor
Made everything use AS_HELP_STRING (except for charsets, which are dying anyway)
435
AC_ARG_WITH([named-curses-libs],
436
    [AS_HELP_STRING([--with-named-curses-libs=ARG],
437
            [Use specified curses libraries instead of those
438
		automatically found by configure.])],
1 by brian
clean slate
439
    [ with_named_curses=$withval ],
440
    [ with_named_curses=no ]
441
    )
442
443
# compile with strings functions in assembler
28.1.39 by Monty Taylor
Made everything use AS_HELP_STRING (except for charsets, which are dying anyway)
444
AC_ARG_ENABLE([assembler],
445
    [AS_HELP_STRING([--enable-assembler],
446
	    [Use assembler versions of some string functions if available.])],
1 by brian
clean slate
447
    [ ENABLE_ASSEMBLER=$enableval ],
448
    [ ENABLE_ASSEMBLER=no ]
449
    )
450
451
AC_MSG_CHECKING(if we should use assembler functions)
452
# For now we only support assembler on i386 and sparc systems
453
AM_CONDITIONAL(ASSEMBLER_x86, test "$ENABLE_ASSEMBLER" = "yes" -a "$BASE_MACHINE_TYPE" = "i386" && $AS strings/strings-x86.s -o checkassembler >/dev/null 2>&1 && test -f checkassembler && (rm -f checkassembler; exit 0;))
454
AM_CONDITIONAL(ASSEMBLER_sparc32, test "$ENABLE_ASSEMBLER" = "yes" -a "$BASE_MACHINE_TYPE" = "sparc")
455
AM_CONDITIONAL(ASSEMBLER_sparc64, test "$ENABLE_ASSEMBLER" = "yes" -a "$BASE_MACHINE_TYPE" = "sparcv9")
456
AM_CONDITIONAL(ASSEMBLER, test "$ASSEMBLER_x86_TRUE" = "" -o "$ASSEMBLER_sparc32_TRUE" = "")
457
458
if test "$ASSEMBLER_TRUE" = ""
459
then
460
  AC_MSG_RESULT([yes])
461
else
462
  AC_MSG_RESULT([no])
463
fi
464
465
# Add query profiler
466
AC_MSG_CHECKING(if SHOW PROFILE should be enabled.)
28.1.39 by Monty Taylor
Made everything use AS_HELP_STRING (except for charsets, which are dying anyway)
467
AC_ARG_ENABLE([profiling],
468
    [AS_HELP_STRING([--enable-profiling], 
469
	    [Build a version with query profiling code])],
1 by brian
clean slate
470
    [ ENABLED_PROFILING=$enableval ],
471
    [ ENABLED_PROFILING=no ])
472
473
if test "$ENABLED_PROFILING" = "yes"
474
then
475
  AC_DEFINE([ENABLED_PROFILING], [1],
476
            [If SHOW PROFILE should be enabled])
477
  AC_MSG_RESULT([yes]) 
478
else
479
  AC_MSG_RESULT([no])
480
fi
481
28.1.39 by Monty Taylor
Made everything use AS_HELP_STRING (except for charsets, which are dying anyway)
482
AC_ARG_WITH([tcp-port],
483
    [AS_HELP_STRING([--with-tcp-port=port-number],
91 by Brian Aker
Main binary now named drizzled
484
            [Which port to use for Drizzle services @<:@default=3306@:>@])],
1 by brian
clean slate
485
    [ MYSQL_TCP_PORT=$withval ],
486
    [ MYSQL_TCP_PORT=$MYSQL_TCP_PORT_DEFAULT
487
      # if we actually defaulted (as opposed to the pathological case of
488
      # --with-tcp-port=<MYSQL_TCP_PORT_DEFAULT> which might in theory
489
      # happen if whole batch of servers was built from a script), set
490
      # the default to zero to indicate that; we don't lose information
491
      # that way, because 0 obviously indicates that we can get the
492
      # default value from MYSQL_TCP_PORT. this seems really evil, but
493
      # testing for MYSQL_TCP_PORT==MYSQL_TCP_PORT_DEFAULT would make a
494
      # a port of MYSQL_TCP_PORT_DEFAULT magic even if the builder did not
495
      # intend it to mean "use the default, in fact, look up a good default
496
      # from /etc/services if you can", but really, really meant 3306 when
497
      # they passed in 3306. When they pass in a specific value, let them
498
      # have it; don't second guess user and think we know better, this will
499
      # just make people cross.  this makes the the logic work like this
500
      # (which is complicated enough):
501
      #
502
      # - if a port was set during build, use that as a default.
503
      #
504
      # - otherwise, try to look up a port in /etc/services; if that fails,
505
      #   use MYSQL_TCP_PORT_DEFAULT (at the time of this writing 3306)
506
      #
507
      # - allow the MYSQL_TCP_PORT environment variable to override that.
508
      #
509
      # - allow command-line parameters to override all of the above.
510
      #
511
      # the top-most MYSQL_TCP_PORT_DEFAULT is read from win/configure.js,
512
      # so don't mess with that.
513
      MYSQL_TCP_PORT_DEFAULT=0 ]
514
    )
515
AC_SUBST(MYSQL_TCP_PORT)
516
# We might want to document the assigned port in the manual.
517
AC_SUBST(MYSQL_TCP_PORT_DEFAULT)
518
519
# Use this to set the place used for unix socket used to local communication.
28.1.39 by Monty Taylor
Made everything use AS_HELP_STRING (except for charsets, which are dying anyway)
520
AC_ARG_WITH([mysqld-user],
521
    [AS_HELP_STRING([--with-mysqld-user=username],
522
            [What user the mysqld daemon shall be run as.
523
		@<:@default=mysql@:>@])],
1 by brian
clean slate
524
    [ MYSQLD_USER=$withval ],
525
    [ MYSQLD_USER=mysql ]
526
    )
527
AC_SUBST(MYSQLD_USER)
528
529
# If we should allow LOAD DATA LOCAL
530
AC_MSG_CHECKING(If we should should enable LOAD DATA LOCAL by default)
531
AC_ARG_ENABLE(local-infile,
532
    [  --enable-local-infile   Enable LOAD DATA LOCAL INFILE (default: disabled)],
533
    [ ENABLED_LOCAL_INFILE=$enableval ],
534
    [ ENABLED_LOCAL_INFILE=no ]
535
    )
536
if test "$ENABLED_LOCAL_INFILE" = "yes"
537
then
538
  AC_MSG_RESULT([yes])
539
  AC_DEFINE([ENABLED_LOCAL_INFILE], [1],
540
            [If LOAD DATA LOCAL INFILE should be enabled by default])
541
else
542
  AC_MSG_RESULT([no])
543
fi
544
545
MYSQL_SYS_LARGEFILE
546
547
# Types that must be checked AFTER large file support is checked
548
AC_TYPE_SIZE_T
549
550
#--------------------------------------------------------------------
551
# Check for system header files
552
#--------------------------------------------------------------------
553
554
AC_HEADER_DIRENT
555
AC_HEADER_STDC
556
AC_HEADER_SYS_WAIT
53.2.2 by Monty Taylor
Updated everything that needs updating to compile with -std=gnu99 -pedantic
557
AC_HEADER_STDBOOL
77.1.22 by Monty Taylor
Removed refs to floatingpoint.h (which we only used for fconvert) and fconvert
558
AC_CHECK_HEADERS(fcntl.h float.h fpu_control.h ieeefp.h)
53.2.29 by Monty Taylor
Cleaned up headers a little more.
559
AC_CHECK_HEADERS(limits.h pwd.h select.h linux/config.h)
560
AC_CHECK_HEADERS(sys/fpu.h utime.h sys/utime.h )
561
AC_CHECK_HEADERS(synch.h sys/mman.h sys/socket.h netinet/in.h arpa/inet.h)
562
AC_CHECK_HEADERS(sys/timeb.h ys/un.h sys/vadvise.h sys/wait.h term.h)
563
AC_CHECK_HEADERS(termio.h termios.h sched.h crypt.h alloca.h)
564
AC_CHECK_HEADERS(sys/ioctl.h malloc.h sys/malloc.h sys/ipc.h sys/shm.h)
565
AC_CHECK_HEADERS(sys/prctl.h sys/resource.h sys/param.h port.h ieeefp.h)
566
AC_CHECK_HEADERS(execinfo.h)
1 by brian
clean slate
567
568
AC_CHECK_HEADERS([xfs/xfs.h])
23 by Brian Aker
Adding back in simple test for libevent
569
#--------------------------------------------------------------------
570
# Check for libevent
571
#--------------------------------------------------------------------
572
573
AC_CHECK_LIB(event, event_loop, [], [AC_MSG_ERROR(could not find libevent)])
1 by brian
clean slate
574
575
#--------------------------------------------------------------------
25 by Brian Aker
Clean up of configure.in
576
# Check for libpthread
577
#--------------------------------------------------------------------
578
579
AC_CHECK_LIB(pthread, pthread_create, [], [AC_MSG_ERROR(could not find libpthread)])
580
581
#--------------------------------------------------------------------
77.1.31 by Monty Taylor
Replaced regex lib with pcre. Reworked mysqltest to use it.
582
# Check for libpcre
583
#--------------------------------------------------------------------
584
585
AC_PATH_PROG(PKG_CONFIG, pkg-config, AC_MSG_ERROR([pkg-config wasn't found.]))
586
PKG_CHECK_MODULES(PCRE, [libpcrecpp >= 3], [
587
  ac_cv_have_libpcre=yes
588
  AC_DEFINE([HAVE_PCRE], [1], [Perl Compatible Regex Lib for mysqltest])
589
  ],[
590
  ac_cv_have_libpcre=no
591
  AC_MSG_WARN([PCRE not found - mysqltest will not be built])
592
  ])
593
AM_CONDITIONAL(BUILD_MYSQLTEST, test "x$ac_cv_have_libpcre" = "xyes")
594
AC_SUBST(PCRE_LIBS)
595
AC_SUBST(PCRE_CFLAGS)
596
597
#--------------------------------------------------------------------
1 by brian
clean slate
598
# Check for system libraries. Adds the library to $LIBS
599
# and defines HAVE_LIBM etc
600
#--------------------------------------------------------------------
601
602
AC_CHECK_LIB(m, floor, [], AC_CHECK_LIB(m, __infinity))
603
AC_CHECK_FUNCS(log2)
604
605
AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt))
606
AC_CHECK_FUNC(yp_get_default_domain, ,
607
  AC_CHECK_LIB(nsl, yp_get_default_domain))
608
AC_CHECK_FUNC(p2open, , AC_CHECK_LIB(gen, p2open))
609
# This may get things to compile even if bind-8 is installed
610
AC_CHECK_FUNC(bind, , AC_CHECK_LIB(bind, bind))
611
# Check if crypt() exists in libc or libcrypt, sets LIBS if needed
612
AC_SEARCH_LIBS(crypt, crypt, AC_DEFINE(HAVE_CRYPT, 1, [crypt]))
613
614
# Check rt for aio_read
615
AC_CHECK_LIB(rt, aio_read)
616
617
# For the sched_yield() function on Solaris
618
AC_CHECK_FUNC(sched_yield, , AC_CHECK_LIB(posix4, sched_yield,
619
[AC_DEFINE(HAVE_SCHED_YIELD) LIBS="$LIBS -lposix4"]))
620
621
if test "$ac_cv_header_termio_h" = "no" -a "$ac_cv_header_termios_h" = "no"
622
then
623
  AC_CHECK_FUNC(gtty, , AC_CHECK_LIB(compat, gtty))
624
fi
625
626
AC_CHECK_TYPES([int8, uint8, int16, uint16, int32, uint32, int64, uint64,
627
                uchar, uint, ulong],[],[], [
628
#include <sys/types.h>
629
])
630
AC_CHECK_TYPES([fp_except], [], [], [
631
#include <sys/types.h>
632
#include <ieeefp.h>
633
])
634
25 by Brian Aker
Clean up of configure.in
635
636
my_save_LIBS="$LIBS"
637
LIBS=""
638
AC_CHECK_LIB(dl,dlopen)
639
LIBDL=$LIBS
640
LIBS="$my_save_LIBS"
641
AC_SUBST(LIBDL)
642
643
my_save_LIBS="$LIBS"
644
LIBS="$LIBS $LIBDL"
645
AC_CHECK_FUNCS(dlopen dlerror)
646
LIBS="$my_save_LIBS"
647
648
AC_CHECK_FUNCS(strtok_r)
1 by brian
clean slate
649
650
# Build optimized or debug version ?
651
# First check for gcc and g++
28.1.33 by Monty Taylor
Added -Wall
652
if test "$ac_cv_c_compiler_gnu" = "yes"
1 by brian
clean slate
653
then
654
  DEBUG_CFLAGS="-g"
655
  DEBUG_OPTIMIZE_CC="-O"
656
  OPTIMIZE_CFLAGS="$MAX_C_OPTIMIZE"
657
else
658
  DEBUG_CFLAGS="-g"
659
  DEBUG_OPTIMIZE_CC=""
660
  OPTIMIZE_CFLAGS="-O"
661
fi
662
if test "$ac_cv_prog_cxx_g" = "yes"
663
then
664
  DEBUG_CXXFLAGS="-g"
665
  DEBUG_OPTIMIZE_CXX="-O"
666
  OPTIMIZE_CXXFLAGS="$MAX_CXX_OPTIMIZE"
667
else
668
  DEBUG_CXXFLAGS="-g"
669
  DEBUG_OPTIMIZE_CXX=""
670
  OPTIMIZE_CXXFLAGS="-O"
671
fi
672
673
# If the user specified CFLAGS, we won't add any optimizations
674
if test -n "$SAVE_CFLAGS"
675
then
676
  OPTIMIZE_CFLAGS=""
677
  DEBUG_OPTIMIZE_CC=""
678
fi
679
# Ditto for CXXFLAGS
680
if test -n "$SAVE_CXXFLAGS"
681
then
682
  OPTIMIZE_CXXFLAGS=""
683
  DEBUG_OPTIMIZE_CXX=""
684
fi
685
28.1.39 by Monty Taylor
Made everything use AS_HELP_STRING (except for charsets, which are dying anyway)
686
AC_ARG_WITH([debug],
687
    [AS_HELP_STRING([--with-debug],
688
            [Add debug code (yes|no|full) @<:@default=no@:>@ 
689
	    Full adds memory checked, very slow.])],
1 by brian
clean slate
690
    [with_debug=$withval],
691
    [with_debug=no])
53.2.24 by Monty Taylor
Added an automake conditional to not build the dbug dir, since I don't want to keep seeing errors for it while cleaning up other parts of the tree.
692
AM_CONDITIONAL(BUILD_DBUG, test "$with_debug" != "no")
1 by brian
clean slate
693
if test "$with_debug" = "yes"
694
then
695
  # Medium debug.
696
  AC_DEFINE([DBUG_ON], [1], [Use libdbug])
7 by Brian Aker
Further cleanup on pthreads.
697
  CFLAGS="$DEBUG_CFLAGS $DEBUG_OPTIMIZE_CC $CFLAGS"
698
  CXXFLAGS="$DEBUG_CXXFLAGS $DEBUG_OPTIMIZE_CXX $CXXFLAGS"
53.2.24 by Monty Taylor
Added an automake conditional to not build the dbug dir, since I don't want to keep seeing errors for it while cleaning up other parts of the tree.
699
  
1 by brian
clean slate
700
elif test "$with_debug" = "full"
701
then
702
  # Full debug. Very slow in some cases
703
  AC_DEFINE([DBUG_ON], [1], [Use libdbug])
7 by Brian Aker
Further cleanup on pthreads.
704
  CFLAGS="$DEBUG_CFLAGS $CFLAGS"
705
  CXXFLAGS="$DEBUG_CXXFLAGS $CXXFLAGS"
1 by brian
clean slate
706
else
707
  # Optimized version. No debug
28.1.39 by Monty Taylor
Made everything use AS_HELP_STRING (except for charsets, which are dying anyway)
708
  AC_DEFINE([DBUG_OFF], [1], [Dont use libdbug])
1 by brian
clean slate
709
  CFLAGS="$OPTIMIZE_CFLAGS $CFLAGS"
710
  CXXFLAGS="$OPTIMIZE_CXXFLAGS $CXXFLAGS"
711
fi
712
713
# If we should allow error injection tests
28.1.39 by Monty Taylor
Made everything use AS_HELP_STRING (except for charsets, which are dying anyway)
714
AC_ARG_WITH([error-inject],
715
    [AS_HELP_STRING([--with-error-inject],
91 by Brian Aker
Main binary now named drizzled
716
	    [Enable error injection in Drizzle Server @<:@default=off@:>@])],
1 by brian
clean slate
717
    [ with_error_inject=$withval ],
718
    [ with_error_inject=no ])
719
720
if test $with_debug != "no"
721
then
722
  if test "$with_error_inject" = "yes"
723
  then
724
    AC_DEFINE([ERROR_INJECT_SUPPORT], [1],
91 by Brian Aker
Main binary now named drizzled
725
              [Enable error injection in Drizzle Server])
1 by brian
clean slate
726
  fi
727
fi
728
729
AC_ARG_WITH([fast-mutexes],
28.1.39 by Monty Taylor
Made everything use AS_HELP_STRING (except for charsets, which are dying anyway)
730
    [AS_HELP_STRING([--with-fast-mutexes],
731
	    [Compile with fast mutexes  @<:@default=off@:>@])],
732
    [with_fast_mutexes=$withval],
733
    [with_fast_mutexes=no])
1 by brian
clean slate
734
735
if test "$with_fast_mutexes" != "no"
736
then
737
  if test "$with_debug" != "no"
738
  then
739
    AC_MSG_WARN(['--with-fast-mutexes' ignored when '--with-debug' is given])
740
  else
741
    AC_DEFINE([MY_PTHREAD_FASTMUTEX], [1], 
742
	      [Define to 1 if you want to use fast mutexes])
743
  fi
744
fi
745
28.1.39 by Monty Taylor
Made everything use AS_HELP_STRING (except for charsets, which are dying anyway)
746
AC_ARG_WITH([comment],
747
    [AS_HELP_STRING([--with-comment],
748
            [Comment about compilation environment. @<:@default=off@:>@])],
1 by brian
clean slate
749
    [with_comment=$withval],
750
    [with_comment=no])
751
if test "$with_comment" != "no"
752
then
753
  COMPILATION_COMMENT=$with_comment
754
else
755
  COMPILATION_COMMENT="Source distribution"
756
fi
757
AC_SUBST(COMPILATION_COMMENT)
758
759
AC_MSG_CHECKING("need of special linking flags")
28.1.33 by Monty Taylor
Added -Wall
760
if test "$TARGET_LINUX" = "true" -a "$ac_cv_c_compiler_gnu" = "yes" -a "$all_is_static" != "yes"
1 by brian
clean slate
761
then
762
  LDFLAGS="$LDFLAGS -rdynamic"
763
  AC_MSG_RESULT("-rdynamic")
764
else
765
  case "$SYSTEM_TYPE$with_mysqld_ldflags " in
766
  *freebsd*"-all-static "*|*dragonfly*"-all-static "*)
767
    AC_MSG_RESULT("none")
768
    ;;
769
  *freebsd*|*dragonfly*)
770
    MYSQLD_EXTRA_LDFLAGS="$MYSQLD_EXTRA_LDFLAGS -export-dynamic"
771
    AC_MSG_RESULT("-export-dynamic")
772
    ;;
773
  *)
774
    AC_MSG_RESULT("none")
775
    ;;
776
  esac
777
fi
778
779
dnl Checks for typedefs, structures, and compiler characteristics.
780
AC_C_CONST
781
AC_C_INLINE
782
AC_TYPE_OFF_T
783
AC_HEADER_TIME
784
AC_STRUCT_TM
785
MYSQL_NEEDS_MYSYS_NEW
786
# AC_CHECK_SIZEOF return 0 when it does not find the size of a
787
# type. We want a error instead.
788
AC_CHECK_SIZEOF(char, 1)
789
if test "$ac_cv_sizeof_char" -eq 0
790
then
77.1.28 by Monty Taylor
Removed a crapload of files I hate.
791
  AC_MSG_ERROR([No size for char type.])
1 by brian
clean slate
792
fi
793
AC_CHECK_SIZEOF(char*, 4)
794
AC_CHECK_SIZEOF(short, 2)
795
AC_CHECK_SIZEOF(int, 4)
796
if test "$ac_cv_sizeof_int" -eq 0
797
then
798
  AC_MSG_ERROR("No size for int type.")
799
fi
800
AC_CHECK_SIZEOF(long, 4)
801
if test "$ac_cv_sizeof_long" -eq 0
802
then
803
  AC_MSG_ERROR("No size for long type.")
804
fi
805
AC_CHECK_SIZEOF(long long, 8)
806
if test "$ac_cv_sizeof_long_long" -eq 0
807
then
91 by Brian Aker
Main binary now named drizzled
808
  AC_MSG_ERROR("Drizzle needs a long long type.")
1 by brian
clean slate
809
fi
810
# off_t is not a builtin type
811
AC_CHECK_SIZEOF(off_t, 4)
812
if test "$ac_cv_sizeof_off_t" -eq 0
813
then
91 by Brian Aker
Main binary now named drizzled
814
  AC_MSG_ERROR("Drizzle needs a off_t type.")
1 by brian
clean slate
815
fi
816
817
dnl
818
dnl check if time_t is unsigned
819
dnl
820
821
MYSQL_CHECK_TIME_T
822
823
824
# do we need #pragma interface/#pragma implementation ?
825
# yes if it's gcc 2.x, and not icc pretending to be gcc, and not cygwin
826
AC_MSG_CHECKING(the need for @%:@pragma interface/implementation)
827
# instead of trying to match SYSTEM_TYPE and CC_VERSION (that doesn't
828
# follow any standard), we'll use well-defined preprocessor macros:
28.1.33 by Monty Taylor
Added -Wall
829
AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
1 by brian
clean slate
830
#if !defined(__CYGWIN__) && !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ < 3)
831
#error USE_PRAGMA_IMPLEMENTATION
832
#endif
28.1.33 by Monty Taylor
Added -Wall
833
]])],[AC_MSG_RESULT(no) ],[AC_MSG_RESULT(yes) ; CXXFLAGS="$CXXFLAGS -DUSE_PRAGMA_IMPLEMENTATION"])
1 by brian
clean slate
834
835
# This always gives a warning. Ignore it unless you are cross compiling
836
AC_C_BIGENDIAN
837
#---START: Used in for client configure
838
# Check base type of last arg to accept
839
MYSQL_TYPE_ACCEPT
840
#---END:
841
# Figure out what type of struct rlimit to use with setrlimit
842
MYSQL_TYPE_STRUCT_RLIMIT
843
# Find where the stack goes
844
MYSQL_STACK_DIRECTION
845
# We want to skip alloca on irix unconditionally. It may work on some version..
846
MYSQL_FUNC_ALLOCA
847
# Do struct timespec have members tv_sec or ts_sec
848
MYSQL_TIMESPEC_TS
849
# Do we have the tzname variable
850
MYSQL_TZNAME
851
# Do the c++ compiler have a bool type
852
MYSQL_CXX_BOOL
853
AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
854
AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
855
AC_CHECK_TYPES([u_int32_t])
856
857
MYSQL_PTHREAD_YIELD
858
859
######################################################################
860
# For readline/libedit (We simply move the mimimum amount of stuff from
861
# the readline/libedit configure.in here)
862
863
dnl Checks for header files.
864
AC_CHECK_HEADERS(malloc.h sys/cdefs.h)
865
866
dnl Checks for library functions.
867
AC_FUNC_ALLOCA
868
AC_PROG_GCC_TRADITIONAL
869
AC_TYPE_SIGNAL
870
AC_CHECK_FUNCS(re_comp regcomp strdup)
871
872
dnl Sun compilers have their own vis.h that is about something
873
dnl totally different. So, not to change the libedit source, we
874
dnl do some additional checks before we define HAVE_VIS_H.
875
AC_CHECK_HEADER(vis.h,
876
  [AC_CHECK_FUNC(strvis,
877
    [AC_DEFINE([HAVE_VIS_H], [1],[Found vis.h and the strvis() function])])])
878
879
AC_CHECK_FUNCS(strlcat strlcpy)
880
AC_CHECK_FUNCS(issetugid)
881
AC_CHECK_FUNCS(getline flockfile)
882
883
# from old readline settting:
884
885
MAKE_SHELL=/bin/sh
886
AC_SUBST(MAKE_SHELL)
887
888
# Already-done: stdlib.h string.h unistd.h termios.h
889
AC_CHECK_HEADERS(varargs.h stdarg.h dirent.h locale.h ndir.h sys/dir.h \
890
 sys/file.h sys/ndir.h sys/ptem.h sys/pte.h sys/select.h sys/stream.h \
891
 sys/mman.h curses.h termcap.h termio.h termbits.h asm/termbits.h grp.h \
892
paths.h semaphore.h)
893
894
# Already-done: strcasecmp
895
AC_CHECK_FUNCS(lstat putenv select setenv setlocale strcoll tcgetattr)
896
28.1.33 by Monty Taylor
Added -Wall
897
AC_HEADER_STAT
1 by brian
clean slate
898
MYSQL_SIGNAL_CHECK
899
MYSQL_CHECK_GETPW_FUNCS
900
MYSQL_HAVE_TIOCGWINSZ
901
MYSQL_HAVE_FIONREAD
902
MYSQL_HAVE_TIOCSTAT
903
MYSQL_STRUCT_DIRENT_D_INO
904
MYSQL_STRUCT_DIRENT_D_NAMLEN
905
MYSQL_TYPE_SIGHANDLER
906
MYSQL_CHECK_MULTIBYTE
907
if test "$with_named_curses" = "no"
908
then
909
  MYSQL_CHECK_LIB_TERMCAP
910
else
911
  TERMCAP_LIB="$with_named_curses"
912
fi
913
AC_SUBST(TERMCAP_LIB)
914
915
# Check if the termcap function 'tgoto' is already declared in
916
# system header files or if it need to be declared locally
917
AC_CHECK_DECLS(tgoto,,,[
918
#ifdef HAVE_CURSES_H
919
# include <curses.h>
920
#elif HAVE_NCURSES_H
921
# include <ncurses.h>
922
#endif
923
#ifdef HAVE_TERM_H
924
# include <term.h>
925
#endif
926
])
927
928
# End of readline/libedit stuff
929
#########################################################################
930
931
dnl Checks for library functions.
932
933
#
934
# The following code disables intrinsic function support while we test for
935
# library functions.  This is to avoid configure problems with Intel ecc
936
# compiler
937
938
ORG_CFLAGS="$CFLAGS"
939
if test "$GCC" != "yes"; then
940
  AC_SYS_COMPILER_FLAG(-nolib_inline,nolib_inline,CFLAGS,[],[])
941
fi
942
943
#AC_FUNC_MMAP
944
AC_TYPE_SIGNAL
945
MYSQL_TYPE_QSORT
946
AC_FUNC_UTIME_NULL
947
AC_FUNC_VPRINTF
948
77.1.24 by Monty Taylor
Removed non-fcntl code and made it a fatal configure error if it's not there.
949
AC_CHECK_FUNCS(fcntl)
950
if test "x$ac_cv_func_fcntl" != "xyes"
951
then
952
  AC_MSG_ERROR("Drizzle requires fcntl.")
953
fi
954
53.2.16 by Monty Taylor
Removed my_alarm. Made my_lock only do the non-alarm version. Moved my_lock to MyISAM where it belongs.
955
AC_CHECK_FUNCS(bcmp bfill bmove bsearch bzero \
77.1.24 by Monty Taylor
Removed non-fcntl code and made it a fatal configure error if it's not there.
956
  cuserid fchmod \
77.1.22 by Monty Taylor
Removed refs to floatingpoint.h (which we only used for fconvert) and fconvert
957
  fdatasync finite fpresetsticky fpsetmask fsync ftruncate \
1 by brian
clean slate
958
  getcwd getpass getpassphrase getpwnam \
959
  getpwuid getrlimit getrusage getwd index initgroups isnan \
960
  localtime_r gethrtime gmtime_r \
961
  locking longjmp lrand48 madvise mallinfo memcpy memmove \
962
  mkstemp mlockall perror poll pread pthread_attr_create mmap mmap64 getpagesize \
963
  pthread_attr_getstacksize pthread_attr_setprio pthread_attr_setschedparam \
964
  pthread_attr_setstacksize pthread_condattr_create pthread_getsequence_np \
965
  pthread_key_delete pthread_rwlock_rdlock pthread_setprio \
966
  pthread_setprio_np pthread_setschedparam pthread_sigmask readlink \
967
  realpath rename rint rwlock_init setupterm \
968
  shmget shmat shmdt shmctl sigaction sigemptyset sigaddset \
969
  sighold sigset sigthreadmask port_create sleep \
970
  snprintf socket stpcpy strcasecmp strerror strsignal strnlen strpbrk strstr \
6 by Brian Aker
Second pass on pthread cleanup
971
  strtol strtoll strtoul strtoull tell tempnam vidattr \
1 by brian
clean slate
972
  posix_fallocate backtrace backtrace_symbols backtrace_symbols_fd)
973
28.1.33 by Monty Taylor
Added -Wall
974
# Check that isinf() is available in math.h and can be used in both C and C++
1 by brian
clean slate
975
# code
28.1.33 by Monty Taylor
Added -Wall
976
AC_MSG_CHECKING(for isinf in math.h)
977
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], [[
978
    float f = 0.0; 
979
    int r = isinf(f); 
980
    return r;
981
  ]])],[
1 by brian
clean slate
982
    AC_MSG_RESULT(yes)
28.1.33 by Monty Taylor
Added -Wall
983
    AC_MSG_CHECKING(whether isinf() can be used in C++ code)
984
    AC_LANG_PUSH([C++])
985
    AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], [[
986
      float f = 0.0;
987
      int r = isinf(f);
988
      return r;
989
    ]])],[
990
      AC_MSG_RESULT(yes)
991
      AC_DEFINE(HAVE_ISINF, [1], [isinf() macro or function])
992
    ],[
993
      AC_MSG_RESULT(no)
994
    ])
995
    AC_LANG_POP([])
996
  ],[
997
  AC_MSG_RESULT(no)])
998
999
1 by brian
clean slate
1000
CFLAGS="$ORG_CFLAGS"
1001
1002
# Sanity check: We chould not have any fseeko symbol unless
1003
# large_file_support=yes
1004
AC_CHECK_FUNC(fseeko,
1005
[if test "$large_file_support" = no -a "$TARGET_LINUX" = "true";
1006
then
1007
  AC_MSG_ERROR("Found fseeko symbol but large_file_support is not enabled!")
1008
fi]
1009
)
1010
1011
# Check definition of pthread_getspecific
1012
AC_CACHE_CHECK("args to pthread_getspecific", mysql_cv_getspecific_args,
28.1.33 by Monty Taylor
Added -Wall
1013
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if !defined(_REENTRANT)
1 by brian
clean slate
1014
#define _REENTRANT
1015
#endif
1016
#define _POSIX_PTHREAD_SEMANTICS 
28.1.33 by Monty Taylor
Added -Wall
1017
#include <pthread.h> ]], [[ void *pthread_getspecific(pthread_key_t key);
1018
pthread_getspecific((pthread_key_t) NULL); ]])],[mysql_cv_getspecific_args=POSIX],[mysql_cv_getspecific_args=other]))
1 by brian
clean slate
1019
  if test "$mysql_cv_getspecific_args" = "other"
1020
  then
1021
    AC_DEFINE([HAVE_NONPOSIX_PTHREAD_GETSPECIFIC], [1],
1022
              [For some non posix threads])
1023
  fi
1024
1025
  # Check definition of pthread_mutex_init
1026
  AC_CACHE_CHECK("args to pthread_mutex_init", mysql_cv_mutex_init_args,
28.1.33 by Monty Taylor
Added -Wall
1027
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#define _REENTRANT
1 by brian
clean slate
1028
#define _POSIX_PTHREAD_SEMANTICS 
28.1.33 by Monty Taylor
Added -Wall
1029
#include <pthread.h> ]], [[ 
1 by brian
clean slate
1030
  pthread_mutexattr_t attr;
1031
  pthread_mutex_t mp;
28.1.33 by Monty Taylor
Added -Wall
1032
  pthread_mutex_init(&mp,&attr); ]])],[mysql_cv_mutex_init_args=POSIX],[mysql_cv_mutex_init_args=other]))
1 by brian
clean slate
1033
  if test "$mysql_cv_mutex_init_args" = "other"
1034
  then
1035
    AC_DEFINE([HAVE_NONPOSIX_PTHREAD_MUTEX_INIT], [1],
1036
              [For some non posix threads])
1037
  fi
1038
#---END:
1039
1040
#---START: Used in for client configure
1041
# Check definition of readdir_r
1042
AC_CACHE_CHECK("args to readdir_r", mysql_cv_readdir_r,
28.1.33 by Monty Taylor
Added -Wall
1043
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define _REENTRANT
1 by brian
clean slate
1044
#define _POSIX_PTHREAD_SEMANTICS 
1045
#include <pthread.h>
28.1.33 by Monty Taylor
Added -Wall
1046
#include <dirent.h>]], [[ int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
1047
readdir_r((DIR *) NULL, (struct dirent *) NULL, (struct dirent **) NULL); ]])],[mysql_cv_readdir_r=POSIX],[mysql_cv_readdir_r=other]))
1 by brian
clean slate
1048
if test "$mysql_cv_readdir_r" = "POSIX"
1049
then
1050
  AC_DEFINE([HAVE_READDIR_R], [1], [POSIX readdir_r])
1051
fi
1052
1053
# Check definition of posix sigwait()
1054
AC_CACHE_CHECK("style of sigwait", mysql_cv_sigwait,
28.1.33 by Monty Taylor
Added -Wall
1055
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define _REENTRANT
1 by brian
clean slate
1056
#define _POSIX_PTHREAD_SEMANTICS 
1057
#include <pthread.h>
28.1.33 by Monty Taylor
Added -Wall
1058
#include <signal.h>]], [[#ifndef _AIX
1 by brian
clean slate
1059
sigset_t set;
1060
int sig;
1061
sigwait(&set,&sig);
28.1.33 by Monty Taylor
Added -Wall
1062
#endif]])],[mysql_cv_sigwait=POSIX],[mysql_cv_sigwait=other]))
1 by brian
clean slate
1063
if test "$mysql_cv_sigwait" = "POSIX"
1064
then
1065
  AC_DEFINE([HAVE_SIGWAIT], [1], [POSIX sigwait])
1066
fi
1067
1068
if test "$mysql_cv_sigwait" != "POSIX"
1069
then
1070
unset mysql_cv_sigwait
1071
# Check definition of posix sigwait()
1072
AC_CACHE_CHECK("style of sigwait", mysql_cv_sigwait,
28.1.33 by Monty Taylor
Added -Wall
1073
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define _REENTRANT
1 by brian
clean slate
1074
#define _POSIX_PTHREAD_SEMANTICS 
1075
#include <pthread.h>
28.1.33 by Monty Taylor
Added -Wall
1076
#include <signal.h>]], [[sigset_t set;
1 by brian
clean slate
1077
int sig;
28.1.33 by Monty Taylor
Added -Wall
1078
sigwait(&set);]])],[mysql_cv_sigwait=NONPOSIX],[mysql_cv_sigwait=other]))
1 by brian
clean slate
1079
if test "$mysql_cv_sigwait" = "NONPOSIX"
1080
then
1081
  AC_DEFINE([HAVE_NONPOSIX_SIGWAIT], [1], [sigwait with one argument])
1082
fi
1083
fi
1084
#---END:
1085
1086
# Check if pthread_attr_setscope() exists
1087
AC_CACHE_CHECK("for pthread_attr_setscope", mysql_cv_pthread_attr_setscope,
28.1.33 by Monty Taylor
Added -Wall
1088
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define _REENTRANT
1 by brian
clean slate
1089
#define _POSIX_PTHREAD_SEMANTICS 
28.1.33 by Monty Taylor
Added -Wall
1090
#include <pthread.h>]], [[pthread_attr_t thr_attr;
1091
pthread_attr_setscope(&thr_attr,0);]])],[mysql_cv_pthread_attr_setscope=yes],[mysql_cv_pthread_attr_setscope=no]))
1 by brian
clean slate
1092
if test "$mysql_cv_pthread_attr_setscope" = "yes"
1093
then
1094
  AC_DEFINE([HAVE_PTHREAD_ATTR_SETSCOPE], [1], [pthread_attr_setscope])
1095
fi
1096
1097
# Check for bad includes
1098
AC_MSG_CHECKING("can netinet files be included")
28.1.33 by Monty Taylor
Added -Wall
1099
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1 by brian
clean slate
1100
#include <sys/socket.h>
1101
#include <netinet/in_systm.h>
1102
#include <netinet/in.h>
1103
#include <netinet/ip.h>
28.1.33 by Monty Taylor
Added -Wall
1104
#include <netinet/tcp.h>]], [[ printf("1\n"); ]])],[netinet_inc=yes],[netinet_inc=no])
1 by brian
clean slate
1105
if test "$netinet_inc" = "no"
1106
then
1107
  AC_DEFINE([HAVE_BROKEN_NETINET_INCLUDES], [1], [Can netinet be included])
1108
fi
1109
AC_MSG_RESULT("$netinet_inc")
1110
28.1.33 by Monty Taylor
Added -Wall
1111
AC_LANG_PUSH([C++])
1 by brian
clean slate
1112
AC_CHECK_HEADERS(cxxabi.h)
1113
AC_CACHE_CHECK([checking for abi::__cxa_demangle], mysql_cv_cxa_demangle,
28.1.33 by Monty Taylor
Added -Wall
1114
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <cxxabi.h>]], [[
1 by brian
clean slate
1115
  char *foo= 0; int bar= 0;
1116
  foo= abi::__cxa_demangle(foo, foo, 0, &bar);
28.1.33 by Monty Taylor
Added -Wall
1117
]])],[mysql_cv_cxa_demangle=yes],[mysql_cv_cxa_demangle=no])])
1118
AC_LANG_POP([])
1 by brian
clean slate
1119
1120
if test "x$mysql_cv_cxa_demangle" = xyes; then
1121
  AC_DEFINE(HAVE_ABI_CXA_DEMANGLE, 1,
1122
            [Define to 1 if you have the `abi::__cxa_demangle' function.])
1123
fi
1124
1125
#--------------------------------------------------------------------
1126
# Check for requested features
1127
#--------------------------------------------------------------------
1128
1129
MYSQL_CHECK_BIG_TABLES
1130
MYSQL_CHECK_MAX_INDEXES
1131
MYSQL_CHECK_VIO
1132
1133
#--------------------------------------------------------------------
1134
# Declare our plugin modules
1135
# Has to be done late, as the plugin may need to check for existence of
1136
# functions tested above
1137
#--------------------------------------------------------------------
1138
1139
MYSQL_CONFIGURE_PLUGINS([none])
1140
1141
AC_SUBST(CLIENT_LIBS)
1142
1143
AC_SUBST(mysql_plugin_dirs)
1144
AC_SUBST(mysql_plugin_libs)
1145
AC_SUBST(mysql_plugin_defs)
1146
53.2.1 by Monty Taylor
Added --disable-pedantic-warnings and --enable-fail.
1147
AC_ARG_ENABLE([pedantic-warnings],
1148
    [AS_HELP_STRING([--disable-pedantic-warnings],
1149
       [Toggle pedanticness @<:@default=on@:>@])],
1150
    [ac_warn_pedantic="$enableval"],
1151
    [ac_warn_pedantic="yes"])
1152
1153
AC_ARG_ENABLE([fail],
1154
    [AS_HELP_STRING([--enable-fail],
1155
       [Turn warnings into failures @<:@default=off@:>@])],
1156
    [ac_warn_fail="$enableval"],
1157
    [ac_warn_fail="no"])
1158
53.2.6 by Monty Taylor
Turned unreachable code warnings into a configure option.
1159
AC_ARG_ENABLE([unreachable],
1160
    [AS_HELP_STRING([--enable-unreachable],
1161
       [Enable warnings about unreachable code @<:@default=off@:>@])],
1162
    [ac_warn_unreachable="$enableval"],
1163
    [ac_warn_unreachable="no"])
1164
53.2.2 by Monty Taylor
Updated everything that needs updating to compile with -std=gnu99 -pedantic
1165
53.2.1 by Monty Taylor
Added --disable-pedantic-warnings and --enable-fail.
1166
if test "$GCC" = "yes"
1167
then
53.2.2 by Monty Taylor
Updated everything that needs updating to compile with -std=gnu99 -pedantic
1168
53.2.1 by Monty Taylor
Added --disable-pedantic-warnings and --enable-fail.
1169
  GCC_WARNINGS="-W -Wall"
53.2.2 by Monty Taylor
Updated everything that needs updating to compile with -std=gnu99 -pedantic
1170
  GXX_WARNINGS="${GCC_WARNINGS}"
53.2.1 by Monty Taylor
Added --disable-pedantic-warnings and --enable-fail.
1171
1172
1173
  if test "$ac_warn_pedantic" = "yes"
1174
  then
53.2.4 by Monty Taylor
Changes so that client/ builds cleanly with no warnings.
1175
    GCC_WARNINGS="${GCC_WARNINGS}  -std=gnu99 -pedantic -Wundef -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls  "
77.1.25 by Monty Taylor
Merged from trunk.
1176
    GXX_WARNINGS="${GXX_WARNINGS}  -std=gnu++98 -pedantic -Wundef -Wredundant-decls -Wno-long-long "
53.2.1 by Monty Taylor
Added --disable-pedantic-warnings and --enable-fail.
1177
  fi
1178
53.2.6 by Monty Taylor
Turned unreachable code warnings into a configure option.
1179
  if test "$ac_warn_unreachable" = "yes"
1180
  then
1181
    GCC_WARNINGS="${GCC_WARNINGS} -Wunreachable-code"
1182
    GXX_WARNINGS="${GXX_WARNINGS} -Wunreachable-code"
1183
  fi
1184
53.2.1 by Monty Taylor
Added --disable-pedantic-warnings and --enable-fail.
1185
  if test "$ac_warn_fail" = "yes"
1186
  then
1187
    GCC_WARNINGS="${GCC_WARNINGS} -Werror"
53.2.2 by Monty Taylor
Updated everything that needs updating to compile with -std=gnu99 -pedantic
1188
    GXX_WARNINGS="${GXX_WARNINGS} -Werror"
53.2.1 by Monty Taylor
Added --disable-pedantic-warnings and --enable-fail.
1189
  fi
1190
53.2.2 by Monty Taylor
Updated everything that needs updating to compile with -std=gnu99 -pedantic
1191
    CXXFLAGS="$CXXFLAGS ${GXX_WARNINGS}"
53.2.1 by Monty Taylor
Added --disable-pedantic-warnings and --enable-fail.
1192
    CFLAGS="$CFLAGS ${GCC_WARNINGS} "
1193
fi
1194
1 by brian
clean slate
1195
# Some usefull subst
1196
AC_SUBST(CC)
1197
AC_SUBST(GXX)
1198
1199
# Set configuration options for make_binary_distribution
1200
case $SYSTEM_TYPE in
1201
  *netware*)
1202
    MAKE_BINARY_DISTRIBUTION_OPTIONS="$MAKE_BINARY_DISTRIBUTION_OPTIONS --no-strip"
1203
    ;;
1204
  *)
1205
    : # no change for other platforms yet
1206
    ;;
1207
esac
1208
AC_SUBST(MAKE_BINARY_DISTRIBUTION_OPTIONS)
1209
28.1.2 by Monty Taylor
First stab at back porting libtool convenience lib patch from telco-6.2
1210
AC_CONFIG_FILES(Makefile extra/Makefile mysys/Makefile mysys/tests/Makefile dnl
77.1.31 by Monty Taylor
Replaced regex lib with pcre. Reworked mysqltest to use it.
1211
 strings/Makefile strings/tests/Makefile storage/Makefile dnl
13 by brian
Incomming patch to clean up build.
1212
 vio/Makefile dnl
12.4.3 by Stewart Smith
remove non-thread safe client library. client lib is now *always* thread safe.
1213
 libmysql/Makefile client/Makefile dnl
1 by brian
clean slate
1214
 sql/Makefile sql/share/Makefile dnl
1215
 sql/sql_builtin.cc sql-common/Makefile dnl
77.1.28 by Monty Taylor
Removed a crapload of files I hate.
1216
 dbug/Makefile include/Makefile dnl
28.1.31 by Monty Taylor
Deleted tons of pointless garbage from scripts.
1217
 support-files/Makefile dnl
77.1.32 by Monty Taylor
Merged from trunk.
1218
 mysql-test/Makefile mysql-test/install_test_db dnl
77.1.28 by Monty Taylor
Removed a crapload of files I hate.
1219
 include/mysql_version.h plugin/Makefile dnl
1220
 sql/mysqld_safe support-files/libmysqlclient.pc dnl
1221
 support-files/mysql.server support-files/mysql-log-rotate)
1 by brian
clean slate
1222
1223
AC_CONFIG_COMMANDS([default], , test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h)
1224
1225
# Ensure that table handlers gets all modifications to CFLAGS/CXXFLAGS
1226
AC_CONFIG_COMMANDS_POST(ac_configure_args="$ac_configure_args CFLAGS='$CFLAGS' CXXFLAGS='$CXXFLAGS'")
1227
1228
AC_OUTPUT