configure.in 96.6 KB
Newer Older
unknown's avatar
unknown committed
1 2 3
dnl -*- ksh -*-
dnl Process this file with autoconf to produce a configure script.

4
# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
5 6 7 8 9 10 11 12 13 14 15 16 17 18
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

19 20
# Minimum Autoconf version required.
AC_PREREQ(2.59)
21

22 23 24 25 26
dnl Various people throughout the community may parse configure.in to
dnl get the MySQL version from the source branch.  If the formatting
dnl of this line is going to be changed, please announce the change to
dnl internals@lists.mysql.com in advance of pushing the change.
dnl
Timothy Smith's avatar
merge  
Timothy Smith committed
27 28 29
dnl When changing the major version number please also check the switch
dnl statement in mysqlbinlog::check_master_version().  You may also need
dnl to update version.c in ndb.
30
AC_INIT([MySQL Server], [5.5.7-m3], [], [mysql])
Timothy Smith's avatar
merge  
Timothy Smith committed
31

32 33 34 35 36 37
AC_CONFIG_SRCDIR([sql/mysqld.cc])
AC_CANONICAL_SYSTEM
# USTAR format gives us the possibility to store longer path names in
# TAR files, the path name is split into two parts, a 155 chacater
# first part and a 100 character second part.
AM_INIT_AUTOMAKE([1.9 tar-ustar])
38
AC_PROG_LIBTOOL
39 40

AM_CONFIG_HEADER([include/config.h])
unknown's avatar
unknown committed
41

42 43
# Request support for automake silent-rules if available.
# Default to verbose output. One can use the configure-time
44
# option --enable-silent-rules or make V=0 to activate
45 46 47
# silent rules.
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([no])])

unknown's avatar
unknown committed
48 49 50
PROTOCOL_VERSION=10
DOT_FRM_VERSION=6
# See the libtool docs for information on how to do shared lib versions.
51
SHARED_LIB_MAJOR_VERSION=16
52
SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0
53 54
NDB_SHARED_LIB_MAJOR_VERSION=3
NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION:0:0
55

unknown's avatar
unknown committed
56 57
# Set all version vars based on $VERSION. How do we do this more elegant ?
# Remember that regexps needs to quote [ and ] since this is run through m4
unknown's avatar
unknown committed
58 59
# We take some made up examples
#
Joerg Bruehe's avatar
Joerg Bruehe committed
60 61 62 63 64 65
#  VERSION                  5.1.40sp1-alpha     5.0.34a  5.5.1-m2
#  MYSQL_U_SCORE_VERSION    5.1.40sp1_alpha     5.0.34a  5.5.1_m2
#  MYSQL_NO_DASH_VERSION    5.1.40sp1           5.0.34a  5.5.1
#  MYSQL_NUMERIC_VERSION    5.1.40              5.0.34   5.5.1
#  MYSQL_BASE_VERSION       5.1                 5.0      5.5
#  MYSQL_VERSION_ID         50140               50034    50501
unknown's avatar
unknown committed
66
#
Joerg Bruehe's avatar
Joerg Bruehe committed
67
MYSQL_U_SCORE_VERSION=`echo $VERSION | sed -e "s|-|_|"`
unknown's avatar
unknown committed
68 69 70 71 72
MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|-.*$||"`
MYSQL_NUMERIC_VERSION=`echo $MYSQL_NO_DASH_VERSION | sed -e "s|[[a-z]][[a-z0-9]]*$||"`
MYSQL_BASE_VERSION=`echo $MYSQL_NUMERIC_VERSION | sed -e "s|\.[[^.]]*$||"`
MYSQL_VERSION_ID=`echo $MYSQL_NUMERIC_VERSION | \
    awk -F. '{printf "%d%0.2d%0.2d", $1, $2, $3}'`
73
MYSQL_COPYRIGHT_YEAR=`date '+%Y'`
unknown's avatar
unknown committed
74

75
# Add previous major version for debian package upgrade path
unknown's avatar
unknown committed
76
MYSQL_PREVIOUS_BASE_VERSION=5.0
77

unknown's avatar
unknown committed
78 79 80 81
# The port should be constant for a LONG time
MYSQL_TCP_PORT_DEFAULT=3306
MYSQL_UNIX_ADDR_DEFAULT="/tmp/mysql.sock"

82
dnl Include m4 
83
sinclude(config/ac-macros/maintainer.m4)
84 85 86 87
sinclude(config/ac-macros/alloca.m4)
sinclude(config/ac-macros/check_cpu.m4)
sinclude(config/ac-macros/character_sets.m4)
sinclude(config/ac-macros/compiler_flag.m4)
unknown's avatar
unknown committed
88
sinclude(config/ac-macros/plugins.m4)
89
sinclude(config/ac-macros/dtrace.m4)
90 91 92 93
sinclude(config/ac-macros/ha_ndbcluster.m4)
sinclude(config/ac-macros/large_file.m4)
sinclude(config/ac-macros/misc.m4)
sinclude(config/ac-macros/readline.m4)
94
sinclude(config/ac-macros/ssl.m4)
95
sinclude(config/ac-macros/zlib.m4)
96

unknown's avatar
unknown committed
97 98
# Remember to add a directory sql/share/LANGUAGE
AVAILABLE_LANGUAGES="\
99
czech danish dutch english estonian french german greek hungarian \
unknown's avatar
unknown committed
100
italian japanese korean norwegian norwegian-ny polish portuguese \
unknown's avatar
unknown committed
101
romanian russian serbian slovak spanish swedish ukrainian"
unknown's avatar
unknown committed
102 103 104 105

#####
#####

Joerg Bruehe's avatar
Joerg Bruehe committed
106
AC_SUBST(MYSQL_U_SCORE_VERSION)
unknown's avatar
unknown committed
107 108 109
AC_SUBST(MYSQL_NO_DASH_VERSION)
AC_SUBST(MYSQL_BASE_VERSION)
AC_SUBST(MYSQL_VERSION_ID)
110
AC_SUBST(MYSQL_PREVIOUS_BASE_VERSION)
111
AC_SUBST(MYSQL_COPYRIGHT_YEAR)
unknown's avatar
unknown committed
112
AC_SUBST(PROTOCOL_VERSION)
113
AC_DEFINE_UNQUOTED([PROTOCOL_VERSION], [$PROTOCOL_VERSION],
114
                   [mysql client protocol version])
unknown's avatar
unknown committed
115
AC_SUBST(DOT_FRM_VERSION)
116 117
AC_DEFINE_UNQUOTED([DOT_FRM_VERSION], [$DOT_FRM_VERSION],
                   [Version of .frm files])
118
AC_SUBST(SHARED_LIB_MAJOR_VERSION)
unknown's avatar
unknown committed
119 120 121
AC_SUBST(SHARED_LIB_VERSION)
AC_SUBST(AVAILABLE_LANGUAGES)

122 123
# Whether the maintainer mode should be enabled.
MY_MAINTAINER_MODE
124

unknown's avatar
unknown committed
125
# Canonicalize the configuration name.
unknown's avatar
unknown committed
126 127 128 129 130 131 132 133 134 135

# Check whether --with-system-type or --without-system-type was given.
AC_ARG_WITH(system-type,
    [  --with-system-type      Set the system type, like "sun-solaris10"],
    [SYSTEM_TYPE="$withval"],
    [SYSTEM_TYPE="$host_vendor-$host_os"])
AC_ARG_WITH(machine-type,
    [  --with-machine-type     Set the machine type, like "powerpc"],
    [MACHINE_TYPE="$withval"],
    [MACHINE_TYPE="$host_cpu"])
unknown's avatar
unknown committed
136
AC_SUBST(SYSTEM_TYPE)
137
AC_DEFINE_UNQUOTED([SYSTEM_TYPE], ["$SYSTEM_TYPE"],
unknown's avatar
unknown committed
138
                   [Name of system, eg sun-solaris])
unknown's avatar
unknown committed
139
AC_SUBST(MACHINE_TYPE)
140
AC_DEFINE_UNQUOTED([MACHINE_TYPE], ["$MACHINE_TYPE"],
unknown's avatar
unknown committed
141
                   [Machine type name, eg sparc])
unknown's avatar
unknown committed
142

143 144 145 146 147 148
# Detect intel x86 like processor
BASE_MACHINE_TYPE=$MACHINE_TYPE
case $MACHINE_TYPE in
  i?86) BASE_MACHINE_TYPE=i386 ;;
esac

unknown's avatar
unknown committed
149
# Save some variables and the command line options for mysqlbug
150 151
SAVE_CC="$CC"
SAVE_CXX="$CXX"
152
SAVE_ASFLAGS="$ASFLAGS"
unknown's avatar
unknown committed
153 154 155 156 157 158
SAVE_CFLAGS="$CFLAGS"
SAVE_CXXFLAGS="$CXXFLAGS"
SAVE_LDFLAGS="$LDFLAGS"
SAVE_CXXLDFLAGS="$CXXLDFLAGS"
CONF_COMMAND="$0 $ac_configure_args"
AC_SUBST(CONF_COMMAND)
159 160
AC_SUBST(SAVE_CC)
AC_SUBST(SAVE_CXX)
161
AC_SUBST(SAVE_ASFLAGS)
unknown's avatar
unknown committed
162 163 164 165 166 167
AC_SUBST(SAVE_CFLAGS)
AC_SUBST(SAVE_CXXFLAGS)
AC_SUBST(SAVE_LDFLAGS)
AC_SUBST(SAVE_CXXLDFLAGS)
AC_SUBST(CXXLDFLAGS)

unknown's avatar
unknown committed
168
#AC_ARG_PROGRAM			# Automaticly invoked by AM_INIT_AUTOMAKE
169

unknown's avatar
unknown committed
170 171 172 173
AM_SANITY_CHECK
# This is needed is SUBDIRS is set
AC_PROG_MAKE_SET

174 175 176 177 178 179 180
##############################################################################
# The below section needs to be done before AC_PROG_CC
##############################################################################

# Hack for OS X/Darwin and Metrowerks CodeWarrior
AC_ARG_WITH(darwin-mwcc,
[  --with-darwin-mwcc      Use Metrowerks CodeWarrior wrappers on OS X/Darwin],[
181
 if [ "with_darwin_mwcc" = yes ] ; then
182 183 184 185 186 187 188 189 190 191 192
  builddir=`pwd`
  ccwrapper="$builddir/support-files/MacOSX/mwcc-wrapper"
  arwrapper="$builddir/support-files/MacOSX/mwar-wrapper"
  CC="$ccwrapper"
  CXX="$ccwrapper"
  LD="$ccwrapper"
  AR="$arwrapper"
  RANLIB=:
  export CC CXX LD AR RANLIB
  AC_SUBST(AR)
  AC_SUBST(RANLIB)
193
 fi
194
])
unknown's avatar
unknown committed
195

unknown's avatar
unknown committed
196 197
AM_CONDITIONAL(DARWIN_MWCC, test x$with_darwin_mwcc = xyes)

unknown's avatar
unknown committed
198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
if test "x${CFLAGS-}" = x ; then
  cflags_is_set=no
else
  cflags_is_set=yes
fi

if test "x${CPPFLAGS-}" = x ; then
  cppflags_is_set=no
else
  cppflags_is_set=yes
fi

if test "x${LDFLAGS-}" = x ; then
  ldflags_is_set=no
else
  ldflags_is_set=yes
fi

216 217
################ End of section to be done before AC_PROG_CC #################

unknown's avatar
unknown committed
218 219
# The following hack should ensure that configure doesn't add optimizing
# or debugging flags to CFLAGS or CXXFLAGS
unknown's avatar
unknown committed
220 221 222 223
# C_EXTRA_FLAGS are flags that are automaticly added to both
# CFLAGS and CXXFLAGS
CFLAGS="$CFLAGS $C_EXTRA_FLAGS "
CXXFLAGS="$CXXFLAGS $C_EXTRA_FLAGS "
unknown's avatar
unknown committed
224 225 226 227 228 229

dnl Checks for programs.
AC_PROG_AWK
AC_PROG_CC
AC_PROG_CXX
AC_PROG_CPP
230

unknown's avatar
unknown committed
231
# Print version of CC and CXX compiler (if they support --version)
232
CC_VERSION=`$CC --version | sed 1q`
unknown's avatar
unknown committed
233 234
if test $? -eq "0"
then
unknown's avatar
unknown committed
235
  AC_MSG_CHECKING("C Compiler version")
unknown's avatar
unknown committed
236
  AC_MSG_RESULT("$CC $CC_VERSION")
237 238
else
CC_VERSION=""
unknown's avatar
unknown committed
239
fi
240
AC_SUBST(CC_VERSION)
241
MYSQL_CHECK_CXX_VERSION
unknown's avatar
unknown committed
242

243 244 245 246 247 248 249 250 251 252
# Fix for sgi gcc / sgiCC which tries to emulate gcc
if test "$CC" = "sgicc"
then
  ac_cv_prog_gcc="no"
fi
if test "$CXX" = "sgi++"
then
  GXX="no"
fi

unknown's avatar
unknown committed
253 254 255 256 257 258 259
if test "$ac_cv_prog_gcc" = "yes"
then
  AS="$CC -c"
  AC_SUBST(AS)
else
  AC_PATH_PROG(AS, as, as)
fi
260

unknown's avatar
unknown committed
261 262 263
# Still need ranlib for readline; local static use only so no libtool.
AC_PROG_RANLIB
# We use libtool
264
#AC_LIBTOOL_WIN32_DLL
265
AC_PROG_LIBTOOL
unknown's avatar
unknown committed
266

267 268 269 270 271
# Ensure that we have --preserve-dup-deps defines, otherwise we get link
# problems of 'mysql' with CXX=g++
LIBTOOL="$LIBTOOL --preserve-dup-deps"
AC_SUBST(LIBTOOL)dnl

272 273 274 275 276 277 278
AC_SUBST(NM)dnl

# NM= "$NM -X64"
#archive_expsym_cmds= `echo "$archive_expsym_cmds" | sed -e '/"$(CC)"//'`
#archive_expsym_cmds= "$CC -q64 $archive_expsym_cmds"
#  CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed -e 's/-fbranch-probabilities//; s/-Wall//; s/-ansi//; s/-pedantic//; s/-Wcheck//'`

unknown's avatar
unknown committed
279 280
#AC_LIBTOOL_DLOPEN AC_LIBTOOL_WIN32_DLL AC_DISABLE_FAST_INSTALL AC_DISABLE_SHARED AC_DISABLE_STATIC

unknown's avatar
unknown committed
281
# AC_PROG_INSTALL
unknown's avatar
unknown committed
282
AC_PROG_INSTALL
unknown's avatar
unknown committed
283 284
test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'

unknown's avatar
unknown committed
285
# Not critical since the generated file is distributed
286
AC_CHECK_PROGS(YACC, ['bison -y -p MYSQL'])
unknown's avatar
unknown committed
287
AC_CHECK_PROG(PDFMANUAL, pdftex, manual.pdf)
288
AC_CHECK_PROG(DVIS,      tex,    manual.dvi)
unknown's avatar
unknown committed
289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308

AC_PATH_PROG(uname_prog, uname, no)

# We should go through this and put all the explictly system dependent
# stuff in one place
AC_MSG_CHECKING(operating system)
AC_CACHE_VAL(mysql_cv_sys_os,
[
if test "$uname_prog" != "no"; then
  mysql_cv_sys_os="`uname`"
else
  mysql_cv_sys_os="Not Solaris"
fi
])
AC_MSG_RESULT($mysql_cv_sys_os)

# This should be rewritten to use $target_os
case "$target_os" in
  sco3.2v5*) 
     CFLAGS="$CFLAGS -DSCO"
unknown's avatar
unknown committed
309
     CXXFLAGS="$CXXFLAGS -DSCO"
unknown's avatar
unknown committed
310 311 312 313 314 315
     LD='$(CC) $(CFLAGS)'
     case "$CFLAGS" in
       *-belf*) 
         AC_SYS_COMPILER_FLAG(-belf,sco_belf_option,CFLAGS,[],[
         case "$LDFLAGS" in
           *-belf*) ;;
unknown's avatar
unknown committed
316
           *) AC_MSG_WARN([Adding -belf option to ldflags.])
unknown's avatar
unknown committed
317 318 319 320 321 322 323 324 325 326
              LDFLAGS="$LDFLAGS -belf"
           ;;
         esac
         ])
       ;;
       *)
         AC_SYS_COMPILER_FLAG(-belf,sco_belf_option,CFLAGS,[],[
         case "$LDFLAGS" in
           *-belf*) ;;
           *)
unknown's avatar
unknown committed
327
	     AC_MSG_WARN([Adding -belf option to ldflags.])
unknown's avatar
unknown committed
328 329 330 331 332 333 334
             LDFLAGS="$LDFLAGS -belf"
           ;;
         esac
         ])
       ;;
     esac
  ;;
335
  sysv5UnixWare* | sysv5OpenUNIX8*) 
336
    if test "$GCC" != "yes"; then
337
      # Use the built-in alloca()
338 339
      CFLAGS="$CFLAGS -Kalloca"
    fi
unknown's avatar
unknown committed
340
    CXXFLAGS="$CXXFLAGS -DNO_CPLUSPLUS_ALLOCA"
341
  ;;
342
  sysv5SCO_SV6.0.0*)
unknown's avatar
unknown committed
343
    if test "$GCC" != "yes"; then
344
      # Use the built-in alloca()
unknown's avatar
unknown committed
345
      CFLAGS="$CFLAGS -Kalloca"
346
      CXXFLAGS="$CFLAGS -Kalloca"
347 348 349 350
      # Use no_implicit for templates
      CXXFLAGS="$CXXFLAGS -Tno_implicit"
      AC_DEFINE([HAVE_EXPLICIT_TEMPLATE_INSTANTIATION],
        [1], [Defined by configure. Use explicit template instantiation.])
unknown's avatar
unknown committed
351 352 353
    fi
  ;;
esac
354 355 356 357 358 359 360 361 362 363 364 365 366 367 368

# The following is required for portable results of floating point calculations
# on PowerPC. The same must also be done for IA-64, but this options is missing
# in the IA-64 gcc backend.

if test "$GCC" = "yes"
then
  case "$host_cpu" in
    *ppc* | *powerpc*)
      CFLAGS="$CFLAGS -mno-fused-madd"
      CXXFLAGS="$CXXFLAGS -mno-fused-madd"
    ;;
  esac
fi

unknown's avatar
unknown committed
369 370 371 372
AC_SUBST(CC)
AC_SUBST(CFLAGS)
AC_SUBST(CXX)
AC_SUBST(CXXFLAGS)
373
AC_SUBST(ASFLAGS)
unknown's avatar
unknown committed
374
AC_SUBST(LD)
unknown's avatar
unknown committed
375
AC_SUBST(INSTALL_SCRIPT)
unknown's avatar
unknown committed
376

377
export CC CXX CFLAGS LD LDFLAGS AR ARFLAGS
unknown's avatar
unknown committed
378

unknown's avatar
unknown committed
379 380 381 382 383
if test "$GCC" = "yes"
then
  # mysqld requires -fno-implicit-templates.
  # Disable exceptions as they seams to create problems with gcc and threads.
  # mysqld doesn't use run-time-type-checking, so we disable it.
384 385 386
  # We should use -Wno-invalid-offsetof flag to disable some warnings from gcc
  # regarding offset() usage in C++ which are done in a safe manner in the
  # server
unknown's avatar
unknown committed
387
  CXXFLAGS="$CXXFLAGS -fno-implicit-templates -fno-exceptions -fno-rtti"
388
  AC_DEFINE([HAVE_EXPLICIT_TEMPLATE_INSTANTIATION],
unknown's avatar
unknown committed
389
    [1], [Defined by configure. Use explicit template instantiation.])
unknown's avatar
unknown committed
390 391
fi

unknown's avatar
unknown committed
392
MYSQL_PROG_AR
393

394
# libmysqlclient versioning when linked with GNU ld.
unknown's avatar
unknown committed
395
if $LD --version 2>/dev/null| grep GNU >/dev/null 2>&1; then
unknown's avatar
unknown committed
396
  LD_VERSION_SCRIPT="-Wl,--version-script=\$(top_builddir)/libmysql/libmysql.ver"
397 398 399 400
  AC_CONFIG_FILES(libmysql/libmysql.ver)
fi
AC_SUBST(LD_VERSION_SCRIPT)

401

unknown's avatar
unknown committed
402
# Avoid bug in fcntl on some versions of linux
403
AC_MSG_CHECKING([if we should use 'skip-external-locking' as default for $target_os])
unknown's avatar
unknown committed
404
# Any variation of Linux
unknown's avatar
unknown committed
405 406
if expr "$target_os" : "[[Ll]]inux.*" > /dev/null
then
407
  MYSQLD_DEFAULT_SWITCHES="--skip-external-locking"
408
  TARGET_LINUX="true"
409
  AC_MSG_RESULT([yes])
410
  AC_DEFINE([TARGET_OS_LINUX], [1], [Whether we build for Linux])
unknown's avatar
unknown committed
411 412
else
  MYSQLD_DEFAULT_SWITCHES=""
413
  TARGET_LINUX="false"
414
  AC_MSG_RESULT([no])
unknown's avatar
unknown committed
415 416
fi
AC_SUBST(MYSQLD_DEFAULT_SWITCHES)
417
AC_SUBST(TARGET_LINUX)
unknown's avatar
unknown committed
418 419 420 421 422

dnl Find paths to some shell programs
AC_PATH_PROG(LN, ln, ln)
# This must be able to take a -f flag like normal unix ln.
AC_PATH_PROG(LN_CP_F, ln, ln)
423 424 425 426
# If ln -f does not exists use -s (AFS systems)
if test -n "$LN_CP_F"; then
  LN_CP_F="$LN_CP_F -s"
fi
unknown's avatar
unknown committed
427 428 429 430 431 432 433 434

AC_PATH_PROG(MV, mv, mv)
AC_PATH_PROG(RM, rm, rm)
AC_PATH_PROG(CP, cp, cp)
AC_PATH_PROG(SED, sed, sed)
AC_PATH_PROG(CMP, cmp, cmp)
AC_PATH_PROG(CHMOD, chmod, chmod)
AC_PATH_PROG(HOSTNAME, hostname, hostname)
Narayanan V's avatar
Narayanan V committed
435
AC_PATH_PROG(DIFF, diff, diff)
436 437 438
# Check for a GNU tar named 'gtar', or 'gnutar' (MacOS X) and
# fall back to 'tar' otherwise and hope that it's a GNU tar as well
AC_CHECK_PROGS(TAR, gnutar gtar tar)
439

unknown's avatar
unknown committed
440
dnl We use a path for perl so the script startup works
441 442
dnl We make sure to use perl, not perl5, in hopes that the RPMs will
dnl not depend on the perl5 binary being installed (probably a bug in RPM)
unknown's avatar
unknown committed
443
AC_PATH_PROG(PERL, perl, no)
444
if test "$PERL" != "no" && $PERL -e 'require 5' > /dev/null 2>&1
unknown's avatar
unknown committed
445
then
446 447 448 449 450 451 452 453
  PERL5=$PERL
else
  AC_PATH_PROG(PERL5, perl5, no)
  if test "$PERL5" != no
  then
    PERL=$PERL5
    ac_cv_path_PERL=$ac_cv_path_PERL5
  fi
unknown's avatar
unknown committed
454
fi
455

unknown's avatar
unknown committed
456 457 458 459
AC_SUBST(HOSTNAME)
AC_SUBST(PERL)
AC_SUBST(PERL5)

Narayanan V's avatar
Narayanan V committed
460 461
# Enable the abi_check rule only if gcc is available

unknown's avatar
unknown committed
462
if test "$GCC" != "yes" || expr "$CC" : ".*icc.*"
Narayanan V's avatar
Narayanan V committed
463 464
then
  ABI_CHECK=""
unknown's avatar
unknown committed
465
else
466
  ABI_CHECK="abi_check"
Narayanan V's avatar
Narayanan V committed
467 468 469 470
fi

AC_SUBST(ABI_CHECK)

471 472 473
# Look for PS usage.  We use double dollar-signs in FIND_PROC because this
# value is written to a makefile, which interprets away one level of
# dollar-signs.  So, interpretation stages are  m4 and then shell in autoconf,
474 475
# then Make, then shell.  The autoconf substitution uses single quotes, so 
# no unprotected single quotes should appear in the expression.
unknown's avatar
unknown committed
476 477 478 479
AC_PATH_PROG(PS, ps, ps)
AC_MSG_CHECKING("how to check if pid exists")
PS=$ac_cv_path_PS
# Linux style
480
if $PS wwwp $$ 2> /dev/null | grep -- "$0" > /dev/null
unknown's avatar
unknown committed
481
then
482
  FIND_PROC="$PS wwwp \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null"
unknown's avatar
unknown committed
483
# Solaris
484
elif $PS -fp $$ 2> /dev/null | grep -- $0 > /dev/null
unknown's avatar
unknown committed
485
then
486
  FIND_PROC="$PS -p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null"
unknown's avatar
unknown committed
487
# BSD style
488
elif $PS -uaxww 2> /dev/null | grep -- $0 > /dev/null
unknown's avatar
unknown committed
489
then
490
  FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null"
unknown's avatar
unknown committed
491
# SysV style
492
elif $PS -ef 2> /dev/null | grep -- $0 > /dev/null
unknown's avatar
unknown committed
493
then
494
  FIND_PROC="$PS -ef | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null"
unknown's avatar
unknown committed
495
# Do anybody use this?
496
elif $PS $$ 2> /dev/null | grep -- $0 > /dev/null
unknown's avatar
unknown committed
497
then
498
  FIND_PROC="$PS \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null"
unknown's avatar
unknown committed
499
else
unknown's avatar
unknown committed
500
  case $SYSTEM_TYPE in
501
    *freebsd*|*dragonfly*)
502
      FIND_PROC="$PS p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null"
unknown's avatar
unknown committed
503
      ;;
unknown's avatar
unknown committed
504
    *darwin*)
505
      FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null"
unknown's avatar
unknown committed
506
      ;;
507
    *cygwin*)
508
      FIND_PROC="$PS -e | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null"
509
      ;;
unknown's avatar
unknown committed
510
    *)
511
      AC_MSG_ERROR([Could not find the right ps and/or grep switches. Which OS is this?  See the Installation chapter in the Reference Manual.])
unknown's avatar
unknown committed
512
  esac
unknown's avatar
unknown committed
513 514 515 516 517 518 519 520 521
fi
AC_SUBST(FIND_PROC)
AC_MSG_RESULT("$FIND_PROC")

# Check if a pid is valid
AC_PATH_PROG(KILL, kill, kill)
AC_MSG_CHECKING("for kill switches")
if $ac_cv_path_KILL -0 $$
then
522
  CHECK_PID="$ac_cv_path_KILL -0 \$\$PID > /dev/null 2> /dev/null"
unknown's avatar
unknown committed
523 524
elif kill -s 0 $$
then
525
  CHECK_PID="$ac_cv_path_KILL -s 0 \$\$PID > /dev/null 2> /dev/null"
unknown's avatar
unknown committed
526 527
else
  AC_MSG_WARN([kill -0 to check for pid seems to fail])
528
    CHECK_PID="$ac_cv_path_KILL -s SIGCONT \$\$PID > /dev/null 2> /dev/null"
unknown's avatar
unknown committed
529 530 531 532
fi
AC_SUBST(CHECK_PID)
AC_MSG_RESULT("$CHECK_PID")

unknown's avatar
unknown committed
533
# We need an ANSI C compiler
unknown's avatar
unknown committed
534 535
AM_PROG_CC_STDC

536 537
# We need an assembler, too
AM_PROG_AS
unknown's avatar
unknown committed
538 539 540 541
CCASFLAGS="$CCASFLAGS $ASFLAGS"

# Check if we need noexec stack for assembler
AC_CHECK_NOEXECSTACK
542

unknown's avatar
unknown committed
543 544
if test "$am_cv_prog_cc_stdc" = "no"
then
unknown's avatar
unknown committed
545
  AC_MSG_ERROR([MySQL requires an ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.])
unknown's avatar
unknown committed
546 547
fi

548
NOINST_LDFLAGS="-static"
549

550
static_nss=""
551 552
STATIC_NSS_FLAGS=""
OTHER_LIBC_LIB=""
553
AC_ARG_WITH(other-libc,
554 555 556 557 558
 [  --with-other-libc=DIR   Link against libc and other standard libraries 
                          installed in the specified non-standard location 
                          overriding default. Originally added to be able to
                          link against glibc 2.2 without making the user 
                          upgrade the standard libc installation.],
559 560 561 562 563 564 565
 [
   other_libc_include="$withval/include"
   other_libc_lib="$withval/lib"
   with_other_libc="yes"
   enable_shared="no"
   all_is_static="yes"
   CFLAGS="$CFLAGS -I$other_libc_include"
566 567 568 569 570
   # There seems to be a feature in gcc that treats system and libc headers
   # silently when they violatate ANSI C++ standard, but it is strict otherwise
   # since gcc cannot now recognize that our headers are libc, we work around
   # by telling it to be permissive. Note that this option only works with
   # new versions of gcc (2.95.x and above)
571
   CXXFLAGS="$CXXFLAGS -fpermissive -I$other_libc_include"
unknown's avatar
unknown committed
572 573
   if test -f "$other_libc_lib/libnss_files.a"
   then
574 575
     # libc has been compiled with --enable-static-nss
     # we need special flags, but we will have to add those later
unknown's avatar
unknown committed
576 577
     STATIC_NSS_FLAGS="-lc -lnss_files -lnss_dns -lresolv"
     STATIC_NSS_FLAGS="$STATIC_NSS_FLAGS $STATIC_NSS_FLAGS"
578
     OTHER_LIBC_LIB="-static -L$other_libc_lib"
unknown's avatar
unknown committed
579 580 581 582 583 584 585 586 587 588 589 590 591
     static_nss=1
   else
     # this is a dirty hack. We if we detect static nss glibc in the special
     # location, we do not re-direct the linker to get libraries from there
     # during check. The reason is that if we did, we would have to find a
     # way to append the special static nss flags to LIBS every time we do
     # any check - this is definitely feasible, but not worthwhile the risk
     # of breaking other things. So for our purposes it would be sufficient
     # to assume that whoever is using static NSS knows what he is doing and
     # has sensible libraries in the regular location
     LDFLAGS="$LDFLAGS -static -L$other_libc_lib "
   fi
   
592 593 594
   # When linking against custom libc installed separately, we want to force
   # all binary builds to be static, including the build done by configure
   # itself to test for system features.
595 596 597 598 599 600 601 602 603 604 605 606
   with_mysqld_ldflags="-all-static"
   with_client_ldflags="-all-static"
   NOINST_LDFLAGS="-all-static"
 ],
 [
  other_libc_include=
  other_libc_lib=
  with_other_libc="no"
 ]
)
AC_SUBST(NOINST_LDFLAGS)

607 608 609 610
#
# Check if we are using Linux and a glibc compiled with static nss
# (this is true on the MySQL build machines to avoid NSS problems)
#
611
AC_CHECK_TOOL([NM], [nm]) 
612

613
if test "$TARGET_LINUX" = "true" -a "$static_nss" = ""
614
then
615
  tmp=`$NM ${other_libc_lib:-/usr/lib*}/libc.a | grep _nss_files_getaliasent_r1`
616 617
  if test -n "$tmp"
  then
unknown's avatar
unknown committed
618 619
     STATIC_NSS_FLAGS="-lc -lnss_files -lnss_dns -lresolv"
     STATIC_NSS_FLAGS="$STATIC_NSS_FLAGS $STATIC_NSS_FLAGS"
620 621 622 623
     static_nss=1
  fi
fi

624 625 626 627 628 629 630
AC_ARG_WITH(server-suffix,
    [  --with-server-suffix    Append value to the version string.],
    [ MYSQL_SERVER_SUFFIX=`echo "$withval" | sed -e  's/^\(...................................\)..*$/\1/'` ],
    [ MYSQL_SERVER_SUFFIX= ]
    )
AC_SUBST(MYSQL_SERVER_SUFFIX)

unknown's avatar
unknown committed
631 632
# Set flags if we want to force to use pthreads
AC_ARG_WITH(pthread,
633
    [  --with-pthread          Force use of pthread library.],
unknown's avatar
unknown committed
634 635 636 637 638 639
    [ with_pthread=$withval ],
    [ with_pthread=no ]
    )

# Force use of thread libs LIBS
AC_ARG_WITH(named-thread-libs,
640 641 642
    [  --with-named-thread-libs=ARG
                          Use specified thread libraries instead of 
                          those automatically found by configure.],
unknown's avatar
unknown committed
643 644 645 646 647 648
    [ with_named_thread=$withval ],
    [ with_named_thread=no ]
    )

# Force use of a curses libs
AC_ARG_WITH(named-curses-libs,
649 650 651
    [  --with-named-curses-libs=ARG
                          Use specified curses libraries instead of 
                          those automatically found by configure.],
unknown's avatar
unknown committed
652 653 654 655 656 657
    [ with_named_curses=$withval ],
    [ with_named_curses=no ]
    )

# Make thread safe client
AC_ARG_ENABLE(thread-safe-client,
unknown's avatar
unknown committed
658 659
    [  --disable-thread-safe-client   
                          Compile the client without threads.],
unknown's avatar
unknown committed
660
    [ THREAD_SAFE_CLIENT=$enableval ],
unknown's avatar
unknown committed
661
    [ THREAD_SAFE_CLIENT=yes ]
unknown's avatar
unknown committed
662 663
    )

664
# compile with strings functions in assembler
unknown's avatar
unknown committed
665
AC_ARG_ENABLE(assembler,
666 667
    [  --enable-assembler      Use assembler versions of some string 
                          functions if available.],
unknown's avatar
unknown committed
668 669 670
    [ ENABLE_ASSEMBLER=$enableval ],
    [ ENABLE_ASSEMBLER=no ]
    )
671 672

AC_MSG_CHECKING(if we should use assembler functions)
unknown's avatar
unknown committed
673
# For now we only support assembler on i386 and sparc systems
674
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;))
675
AM_CONDITIONAL(ASSEMBLER_sparc64, test "$ENABLE_ASSEMBLER" = "yes" -a "$BASE_MACHINE_TYPE" = "sparcv9")
676
AM_CONDITIONAL(ASSEMBLER, test "$ASSEMBLER_x86_TRUE" = "")
unknown's avatar
unknown committed
677

678 679 680 681 682 683 684
if test "$ASSEMBLER_TRUE" = ""
then
  AC_MSG_RESULT([yes])
else
  AC_MSG_RESULT([no])
fi

685
# Add query profiler
686
AC_MSG_CHECKING(if SHOW PROFILE should be enabled.)
687
AC_ARG_ENABLE(profiling,
688
    AS_HELP_STRING([--enable-profiling], [Enable profiling of query lifetime.]),
689
    [ ENABLED_PROFILING=$enableval ],
690
    [ ENABLED_PROFILING=no ])
691

692
AC_DEFINE([ENABLED_PROFILING], [1], [If SHOW PROFILE should be enabled])
693 694
if test "$ENABLED_PROFILING" = "yes"
then
695
  AC_MSG_RESULT([yes]) 
696 697 698
else
  AC_MSG_RESULT([no])
fi
699

unknown's avatar
unknown committed
700 701
# Use this to set the place used for unix socket used to local communication.
AC_ARG_WITH(unix-socket-path,
702 703 704
    [  --with-unix-socket-path=SOCKET
                          Where to put the unix-domain socket.  SOCKET must be 
                          an absolute file name.],
unknown's avatar
unknown committed
705 706 707 708 709 710
    [ MYSQL_UNIX_ADDR=$withval ],
    [ MYSQL_UNIX_ADDR=$MYSQL_UNIX_ADDR_DEFAULT ]
    )
AC_SUBST(MYSQL_UNIX_ADDR)

AC_ARG_WITH(tcp-port,
711 712
    [  --with-tcp-port=port-number
                          Which port to use for MySQL services (default 3306)],
unknown's avatar
unknown committed
713
    [ MYSQL_TCP_PORT=$withval ],
714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741
    [ MYSQL_TCP_PORT=$MYSQL_TCP_PORT_DEFAULT
      # if we actually defaulted (as opposed to the pathological case of
      # --with-tcp-port=<MYSQL_TCP_PORT_DEFAULT> which might in theory
      # happen if whole batch of servers was built from a script), set
      # the default to zero to indicate that; we don't lose information
      # that way, because 0 obviously indicates that we can get the
      # default value from MYSQL_TCP_PORT. this seems really evil, but
      # testing for MYSQL_TCP_PORT==MYSQL_TCP_PORT_DEFAULT would make a
      # a port of MYSQL_TCP_PORT_DEFAULT magic even if the builder did not
      # intend it to mean "use the default, in fact, look up a good default
      # from /etc/services if you can", but really, really meant 3306 when
      # they passed in 3306. When they pass in a specific value, let them
      # have it; don't second guess user and think we know better, this will
      # just make people cross.  this makes the the logic work like this
      # (which is complicated enough):
      #
      # - if a port was set during build, use that as a default.
      #
      # - otherwise, try to look up a port in /etc/services; if that fails,
      #   use MYSQL_TCP_PORT_DEFAULT (at the time of this writing 3306)
      #
      # - allow the MYSQL_TCP_PORT environment variable to override that.
      #
      # - allow command-line parameters to override all of the above.
      #
      # the top-most MYSQL_TCP_PORT_DEFAULT is read from win/configure.js,
      # so don't mess with that.
      MYSQL_TCP_PORT_DEFAULT=0 ]
unknown's avatar
unknown committed
742 743 744 745 746 747 748
    )
AC_SUBST(MYSQL_TCP_PORT)
# We might want to document the assigned port in the manual.
AC_SUBST(MYSQL_TCP_PORT_DEFAULT)

# Use this to set the place used for unix socket used to local communication.
AC_ARG_WITH(mysqld-user,
749 750
    [  --with-mysqld-user=username   
                          What user the mysqld daemon shall be run as.],
unknown's avatar
unknown committed
751
    [ MYSQLD_USER=$withval ],
752
    [ MYSQLD_USER=mysql ]
unknown's avatar
unknown committed
753 754 755
    )
AC_SUBST(MYSQLD_USER)

756
# If we should allow LOAD DATA LOCAL
unknown's avatar
merge  
unknown committed
757
AC_MSG_CHECKING(If we should should enable LOAD DATA LOCAL by default)
758
AC_ARG_ENABLE(local-infile,
unknown's avatar
unknown committed
759 760
    [  --enable-local-infile   Enable LOAD DATA LOCAL INFILE (default: disabled)],
    [ ENABLED_LOCAL_INFILE=$enableval ],
761 762
    [ ENABLED_LOCAL_INFILE=no ]
    )
unknown's avatar
unknown committed
763 764 765
if test "$ENABLED_LOCAL_INFILE" = "yes"
then
  AC_MSG_RESULT([yes])
766 767
  AC_DEFINE([ENABLED_LOCAL_INFILE], [1],
            [If LOAD DATA LOCAL INFILE should be enabled by default])
unknown's avatar
unknown committed
768 769 770
else
  AC_MSG_RESULT([no])
fi
unknown's avatar
unknown committed
771

unknown's avatar
unknown committed
772 773
# If we should allow init-file, skip-grant-table and bootstrap options
AC_MSG_CHECKING(If we should should enable init-file, skip-grant-table options and bootstrap)
774
AC_ARG_ENABLE(grant-options,
unknown's avatar
unknown committed
775
    [  --disable-grant-options Disables the use of --init-file, --skip-grant-tables and --bootstrap options],
776
    [ mysql_grant_options_enabled=$enableval ],
unknown's avatar
unknown committed
777
    [ mysql_grant_options_enabled=yes ]
778 779 780 781 782 783
    )
if test "$mysql_grant_options_enabled" = "yes"
then
  AC_MSG_RESULT([yes])
else
  AC_DEFINE([DISABLE_GRANT_OPTIONS], [1],
unknown's avatar
unknown committed
784
            [Disables the use of --init-file, --skip-grant-tables and --bootstrap options])
785 786 787
  AC_MSG_RESULT([no])
fi

unknown's avatar
unknown committed
788
MYSQL_SYS_LARGEFILE
unknown's avatar
unknown committed
789 790 791 792 793 794 795 796 797 798 799

# Types that must be checked AFTER large file support is checked
AC_TYPE_SIZE_T

#--------------------------------------------------------------------
# Check for system header files
#--------------------------------------------------------------------

AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
800
AC_CHECK_HEADERS(fcntl.h fenv.h float.h floatingpoint.h fpu_control.h \
801
 ieeefp.h limits.h memory.h pwd.h select.h poll.h \
unknown's avatar
unknown committed
802 803 804
 stdlib.h stddef.h \
 strings.h string.h synch.h sys/mman.h sys/socket.h netinet/in.h arpa/inet.h \
 sys/timeb.h sys/types.h sys/un.h sys/vadvise.h sys/wait.h term.h \
unknown's avatar
unknown committed
805
 unistd.h utime.h sys/utime.h termio.h termios.h sched.h crypt.h alloca.h \
unknown's avatar
unknown committed
806
 sys/ioctl.h malloc.h sys/malloc.h sys/ipc.h sys/shm.h linux/config.h \
unknown's avatar
unknown committed
807 808
 sys/prctl.h sys/resource.h sys/param.h port.h ieeefp.h \
 execinfo.h)
unknown's avatar
unknown committed
809

810 811
AC_CHECK_HEADERS([xfs/xfs.h])

unknown's avatar
unknown committed
812 813 814 815 816
#--------------------------------------------------------------------
# Check for system libraries. Adds the library to $LIBS
# and defines HAVE_LIBM etc
#--------------------------------------------------------------------

unknown's avatar
unknown committed
817
AC_CHECK_LIB(m, floor, [], AC_CHECK_LIB(m, __infinity))
818 819 820 821 822

AC_CHECK_LIB(nsl_r, gethostbyname_r, [],
  AC_CHECK_LIB(nsl, gethostbyname_r))
AC_CHECK_FUNC(gethostbyname_r)

823
AC_SEARCH_LIBS(setsockopt, socket)
unknown's avatar
unknown committed
824
# This may get things to compile even if bind-8 is installed
825
AC_SEARCH_LIBS(bind, bind)
unknown's avatar
unknown committed
826 827
# Check if crypt() exists in libc or libcrypt, sets LIBS if needed
AC_SEARCH_LIBS(crypt, crypt, AC_DEFINE(HAVE_CRYPT, 1, [crypt]))
828
# See if we need a library for address lookup.
unknown's avatar
unknown committed
829
AC_SEARCH_LIBS(inet_aton, [socket nsl resolv])
unknown's avatar
unknown committed
830

unknown's avatar
unknown committed
831
# For the sched_yield() function on Solaris
832 833
AC_SEARCH_LIBS(sched_yield, posix4, 
  AC_DEFINE(HAVE_SCHED_YIELD, 1, [sched_yield]))
unknown's avatar
unknown committed
834

unknown's avatar
unknown committed
835 836
MYSQL_CHECK_ZLIB_WITH_COMPRESS

837
# For large pages support
838
if test "$TARGET_LINUX" = "true"
839 840 841 842 843
then
  # For SHM_HUGETLB on Linux
  AC_CHECK_DECLS(SHM_HUGETLB, 
      AC_DEFINE([HAVE_LARGE_PAGES], [1], 
                [Define if you have large pages support])
844 845
      AC_DEFINE([HAVE_LARGE_PAGE_OPTION], [1], 
                [Define if you have large page option])
846 847 848 849 850 851 852
      AC_DEFINE([HUGETLB_USE_PROC_MEMINFO], [1],
                [Define if /proc/meminfo shows the huge page size (Linux only)])
      , ,
      [
#include <sys/shm.h>
      ]
  )
853 854 855 856 857 858 859 860 861 862 863 864
else
# For large pages support on Solaris
AC_CHECK_DECLS(MHA_MAPSIZE_VA,
      AC_DEFINE([HAVE_SOLARIS_LARGE_PAGES], [1],
                [Define to 1 if you have large pages support])
      AC_DEFINE([HAVE_LARGE_PAGE_OPTION], [1], 
                [Define if you have large page option])
      , ,
      [
#include <sys/mman.h>
      ]
)
865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920
fi

dnl Use of ALARMs to wakeup on timeout on sockets
dnl
dnl This feature makes use of a mutex and is a scalability hog we
dnl try to avoid using. However we need support for SO_SNDTIMEO and
dnl SO_RCVTIMEO socket options for this to work. So we will check
dnl if this feature is supported by a simple AC_RUN_IFELSE macro. However
dnl on some OS's there is support for setting those variables but
dnl they are silently ignored. For those OS's we will not attempt
dnl o use SO_SNDTIMEO and SO_RCVTIMEO even if it is said to work.
dnl See Bug#29093 for the problem with SO_SND/RCVTIMEO on HP/UX.
dnl To use alarm is simple, simply avoid setting anything.


AC_CACHE_CHECK([whether SO_SNDTIMEO and SO_RCVTIMEO work],
  [mysql_cv_socket_timeout],
  [AC_RUN_IFELSE(
    [AC_LANG_PROGRAM([[
      #include <sys/types.h>
      #include <sys/socket.h>
      #include <sys/time.h>
    ]],[[
      int fd = socket(AF_INET, SOCK_STREAM, 0);
      struct timeval tv;
      int ret= 0;
      tv.tv_sec= 2;
      tv.tv_usec= 0;
      ret|= setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv));
      ret|= setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));
      return !!ret;
    ]])],
    [mysql_cv_socket_timeout=yes],
    [mysql_cv_socket_timeout=no],
    [mysql_cv_socket_timeout=no
     AC_MSG_WARN([Socket timeout options disabled due to cross-compiling])])
  ])

use_alarm=yes

if test "$mysql_cv_socket_timeout" = yes; then
  case $SYSTEM_TYPE in
    dnl We trust the result from the following systems
    *solaris*) use_alarm=no ;;
    *freebsd*) use_alarm=no ;;
    *darwin*)  use_alarm=no ;;
    *)
      dnl We trust the result from Linux also
      if test "$TARGET_LINUX" = "true"; then
        use_alarm=no
      fi
      dnl We trust no one else for the moment
      dnl (Windows is hardcoded to not use alarms)
      ;;
  esac
fi
921

922 923 924
AC_ARG_WITH(alarm,
    AS_HELP_STRING([--with-alarm], [Use alarm to implement socket timeout.]),
    [use_alarm=$withval], [])
925

926 927 928
AC_MSG_CHECKING(whether to use alarms to implement socket timeout)
if test "$use_alarm" = no ; then
  AC_DEFINE([NO_ALARM], [1], [No need to use alarm for socket timeout])
929
  AC_DEFINE([SIGNAL_WITH_VIO_CLOSE], [1], [Need to use vio close for kill connection])
930
fi
931
AC_MSG_RESULT($use_alarm)
932

933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968
#--------------------------------------------------------------------
# Check for IPv6 support
#--------------------------------------------------------------------

AC_CHECK_HEADERS(netinet/in6.h)

AC_CHECK_TYPES([struct sockaddr_in6, struct in6_addr],
                [have_in6_types=yes],
                [have_in6_types=no], 
  [[
    #ifdef WIN32
      #include <winsock2.h>
    #else
      #include <sys/types.h>
      #include <netinet/in.h>
      #include <sys/socket.h>
    #endif

    #ifdef HAVE_NETINET_IN6_H
      #include <netinet/in6.h>
    #endif
  ]])

AC_MSG_CHECKING([for IPv6 support])

AC_ARG_ENABLE(ipv6,
  AS_HELP_STRING([--disable-ipv6], [Disable support for IPv6 networking]),
  [disable_ipv6=yes], [disable_ipv6=no])

if test x"$disable_ipv6" = xyes -o x"$have_in6_types" = xno; then
  AC_MSG_RESULT([no])
else
  AC_DEFINE([HAVE_IPV6], [1], [Define if IPv6 networking support is present])
  AC_MSG_RESULT([yes])
fi

969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028
#--------------------------------------------------------------------------
# Check if struct sockaddr_in::sin_len is available
#--------------------------------------------------------------------------

AC_CACHE_CHECK(
  [if sockaddr_in::sin_len is available],
  mysql_cv_have_sockaddr_in_sin_len,
  AC_TRY_COMPILE(
    [
      #ifdef WIN32
        #include <winsock2.h>
      #else
        #include <sys/types.h>
        #include <netinet/in.h>
        #include <sys/socket.h>
      #endif
    ],
    [unsigned int i = sizeof(((struct sockaddr_in *) 0)->sin_len)],
    mysql_cv_have_sockaddr_in_sin_len=yes,
    mysql_cv_have_sockaddr_in_sin_len=no))

if test "$mysql_cv_have_sockaddr_in_sin_len" = "yes"; then
  AC_DEFINE(
    [HAVE_SOCKADDR_IN_SIN_LEN],
    [1],
    [If sockaddr_in::sin_len is available])
fi

#--------------------------------------------------------------------------
# Check if struct sockaddr_in6::sin6_len is available
#--------------------------------------------------------------------------

AC_CACHE_CHECK(
  [if sockaddr_in6::sin6_len is available],
  mysql_cv_have_sockaddr_in6_sin6_len,
  AC_TRY_COMPILE(
    [
      #ifdef WIN32
        #include <winsock2.h>
      #else
        #include <sys/types.h>
        #include <netinet/in.h>
        #include <sys/socket.h>
      #endif

      #ifdef HAVE_NETINET_IN6_H
        #include <netinet/in6.h>
      #endif
    ],
    [unsigned int i = sizeof(((struct sockaddr_in6 *) 0)->sin6_len)],
    mysql_cv_have_sockaddr_in6_sin6_len=yes,
    mysql_cv_have_sockaddr_in6_sin6_len=no))

if test "$mysql_cv_have_sockaddr_in_sin6_len" = "yes"; then
  AC_DEFINE(
    [HAVE_SOCKADDR_IN6_SIN6_LEN],
    [1],
    [If sockaddr_in6::sin6_len is available])
fi

unknown's avatar
unknown committed
1029 1030 1031 1032 1033
#--------------------------------------------------------------------
# Check for TCP wrapper support
#--------------------------------------------------------------------

AC_ARG_WITH(libwrap,
1034
[  --with-libwrap[=DIR]      Compile in libwrap (tcp_wrappers) support],[
unknown's avatar
unknown committed
1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047
  case "$with_libwrap" in
  no) : ;;
  yes|*)
    _cppflags=${CPPFLAGS}
    _ldflags=${LDFLAGS}

    if test "$with_libwrap" != "yes"; then
      CPPFLAGS="${CPPFLAGS} -I$with_libwrap/include"
      LDFLAGS="${LDFLAGS} -L$with_libwrap/lib"
    fi

    _libs=${LIBS}
    AC_CHECK_HEADER(tcpd.h,
1048
      LIBS="-lwrap $LIBS"
unknown's avatar
unknown committed
1049 1050 1051 1052 1053 1054 1055 1056
      AC_MSG_CHECKING(for TCP wrappers library -lwrap)
      AC_TRY_LINK([#include <tcpd.h>
int allow_severity = 0;
int deny_severity  = 0;

struct request_info *req;
],[hosts_access (req)],
        AC_MSG_RESULT(yes)
1057 1058
        AC_DEFINE([LIBWRAP], [1], [Define if you have -lwrap])
        AC_DEFINE([HAVE_LIBWRAP], [1], [Define if have -lwrap])
unknown's avatar
unknown committed
1059 1060 1061 1062
	if test "$with_libwrap" != "yes"; then
	    WRAPLIBS="-L${with_libwrap}/lib"
	fi
	WRAPLIBS="${WRAPLIBS} -lwrap",
unknown's avatar
unknown committed
1063 1064 1065 1066 1067 1068 1069 1070 1071
        AC_MSG_RESULT(no)
        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
      CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
    LDFLAGS=${_ldflags} LIBS=${_libs}
    ;;
  esac
])
AC_SUBST(WRAPLIBS)

1072
if test "$TARGET_LINUX" = "true"; then
1073
  AC_ARG_WITH(pstack,
unknown's avatar
unknown committed
1074
    [  --with-pstack           Use the pstack backtrace library],
unknown's avatar
unknown committed
1075 1076
    [ USE_PSTACK=$withval ],
    [ USE_PSTACK=no ])
unknown's avatar
unknown committed
1077
  pstack_libs=
unknown's avatar
unknown committed
1078
  pstack_dir=
1079
  if test "$USE_PSTACK" = yes -a "$TARGET_LINUX" = "true" -a "$BASE_MACHINE_TYPE" = "i386"
1080 1081 1082
  then
    have_libiberty= have_libbfd=
    my_save_LIBS="$LIBS"
unknown's avatar
unknown committed
1083
dnl I have no idea if this is a good test - can not find docs for libiberty  
1084 1085 1086 1087 1088 1089 1090
    AC_CHECK_LIB([iberty], [fdmatch],
      [have_libiberty=yes
       AC_CHECK_LIB([bfd], [bfd_openr], [have_libbfd=yes], , [-liberty])])
    LIBS="$my_save_LIBS"

    if test x"$have_libiberty" = xyes -a x"$have_libbfd" = xyes
    then
unknown's avatar
unknown committed
1091
      pstack_dir="pstack"
unknown's avatar
unknown committed
1092 1093 1094
      pstack_libs="../pstack/libpstack.a -lbfd -liberty"
      # We must link staticly when using pstack
      with_mysqld_ldflags="-all-static"
unknown's avatar
unknown committed
1095
      AC_SUBST([pstack_dir])
1096
      AC_SUBST([pstack_libs])
1097
      AC_DEFINE([USE_PSTACK], [1], [the pstack backtrace library])
1098 1099 1100 1101 1102
dnl This check isn't needed, but might be nice to give some feedback....
dnl    AC_CHECK_HEADER(libiberty.h,
dnl      have_libiberty_h=yes,
dnl      have_libiberty_h=no)
    else
1103
      USE_PSTACK="no"
1104
    fi
1105 1106
  else
    USE_PSTACK="no"
1107
  fi
unknown's avatar
unknown committed
1108
fi
1109 1110
AC_MSG_CHECKING([if we should use pstack])
AC_MSG_RESULT([$USE_PSTACK])
unknown's avatar
unknown committed
1111 1112 1113 1114

# Check for gtty if termio.h doesn't exists
if test "$ac_cv_header_termio_h" = "no" -a "$ac_cv_header_termios_h" = "no"
then
1115
  AC_SEARCH_LIBS(gtty, compat)
unknown's avatar
unknown committed
1116
fi
1117 1118 1119 1120 1121

# We make a special variable for non-threaded version of LIBS to avoid
# including thread libs into non-threaded version of MySQL client library.
# Later in this script LIBS will be augmented with a threads library.
NON_THREADED_LIBS="$LIBS"
unknown's avatar
unknown committed
1122

unknown's avatar
unknown committed
1123 1124
AC_CHECK_TYPES([int8, uint8, int16, uint16, int32, uint32, int64, uint64,
                uchar, uint, ulong],[],[], [
1125
#include <sys/types.h>
unknown's avatar
unknown committed
1126 1127 1128 1129 1130
])
AC_CHECK_TYPES([fp_except], [], [], [
#include <sys/types.h>
#include <ieeefp.h>
])
1131

unknown's avatar
unknown committed
1132 1133 1134 1135
#
# Some system specific hacks
#

unknown's avatar
unknown committed
1136
MAX_C_OPTIMIZE="-O3"
unknown's avatar
unknown committed
1137
MAX_CXX_OPTIMIZE="-O3"
unknown's avatar
unknown committed
1138

unknown's avatar
unknown committed
1139 1140 1141 1142
case $SYSTEM_TYPE in
  *solaris2.7*)
    # Solaris 2.7 has a broken /usr/include/widec.h
    # Make a fixed copy in ./include
unknown's avatar
unknown committed
1143
    AC_MSG_WARN([Fixing broken include files for $SYSTEM_TYPE])
unknown's avatar
unknown committed
1144 1145 1146 1147 1148 1149 1150 1151 1152 1153
    echo "  - Creating local copy of widec.h"
    if test ! -d include
    then
      mkdir ./include
    fi
    builddir=`pwd`
    sed -e "s|^#if[ 	]*!defined(lint) && !defined(__lint)|#if !defined\(lint\) \&\& !defined\(__lint\) \&\& !defined\(getwc\)|" < /usr/include/widec.h > include/widec.h
    CFLAGS="$CFLAGS -DHAVE_CURSES_H -I$builddir/include -DHAVE_RWLOCK_T"
    CXXFLAGS="$CXXFLAGS -DHAVE_CURSES_H -I$builddir/include -DHAVE_RWLOCK_T"
    ;;
1154 1155 1156
  *solaris2.8*)
    # Solaris 2.8 has a broken /usr/include/widec.h
    # Make a fixed copy in ./include
unknown's avatar
unknown committed
1157
    AC_MSG_WARN([Fixing broken include files for $SYSTEM_TYPE])
1158 1159 1160 1161 1162 1163 1164 1165 1166 1167
    echo "  - Creating local copy of widec.h"
    if test ! -d include
    then
      mkdir ./include
    fi
    builddir=`pwd`
    sed -e "s|^#if[ 	]*!defined(__lint)|#if !defined\(__lint\) \&\& !defined\(getwc\)|" < /usr/include/widec.h > include/widec.h
    CFLAGS="$CFLAGS -DHAVE_CURSES_H -I$builddir/include -DHAVE_RWLOCK_T"
    CXXFLAGS="$CXXFLAGS -DHAVE_CURSES_H -I$builddir/include -DHAVE_RWLOCK_T"
    ;;
unknown's avatar
unknown committed
1168
  *solaris2.5.1*)
unknown's avatar
unknown committed
1169
    AC_MSG_WARN([Enabling getpass() workaround for Solaris 2.5.1])
unknown's avatar
unknown committed
1170 1171 1172 1173 1174 1175 1176 1177
    CFLAGS="$CFLAGS -DHAVE_BROKEN_GETPASS -DSOLARIS -DHAVE_RWLOCK_T";
    CXXFLAGS="$CXXFLAGS -DHAVE_RWLOCK_T -DSOLARIS"
    ;;
  *solaris*)
    CFLAGS="$CFLAGS -DHAVE_RWLOCK_T"
    CXXFLAGS="$CXXFLAGS -DHAVE_RWLOCK_T"
    ;;
  *SunOS*)
unknown's avatar
unknown committed
1178
    AC_MSG_WARN([Enabling getpass() workaround for SunOS])
unknown's avatar
unknown committed
1179 1180 1181
    CFLAGS="$CFLAGS -DHAVE_BROKEN_GETPASS -DSOLARIS";
    ;;
  *hpux10.20*)
unknown's avatar
unknown committed
1182
    AC_MSG_WARN([Enabling workarounds for hpux 10.20])
1183 1184
    CFLAGS="$CFLAGS -DHAVE_BROKEN_SNPRINTF -DSIGNALS_DONT_BREAK_READ -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHPUX10 -DSIGNAL_WITH_VIO_CLOSE -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT -DHAVE_POSIX1003_4a_MUTEX"
    CXXFLAGS="$CXXFLAGS -DHAVE_BROKEN_SNPRINTF -D_INCLUDE_LONGLONG -DSIGNALS_DONT_BREAK_READ -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHPUX10 -DSIGNAL_WITH_VIO_CLOSE -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT -DHAVE_POSIX1003_4a_MUTEX"
1185 1186
    if test "$with_named_thread" = "no"
    then 
unknown's avatar
unknown committed
1187
      AC_MSG_WARN([Using --with-named-thread=-lpthread])
1188 1189
      with_named_thread="-lcma"
    fi
unknown's avatar
unknown committed
1190 1191
    ;;
  *hpux11.*)
unknown's avatar
unknown committed
1192
    AC_MSG_WARN([Enabling workarounds for hpux 11])
1193 1194
    CFLAGS="$CFLAGS -DHPUX11  -DSNPRINTF_RETURN_TRUNC -DHAVE_BROKEN_PREAD -DHAVE_BROKEN_GETPASS -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT"
    CXXFLAGS="$CXXFLAGS -DHPUX11  -DSNPRINTF_RETURN_TRUNC -DHAVE_BROKEN_PREAD -D_INCLUDE_LONGLONG -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT"
unknown's avatar
unknown committed
1195 1196
    if test "$with_named_thread" = "no"
    then 
unknown's avatar
unknown committed
1197
      AC_MSG_WARN([Using --with-named-thread=-lpthread])
unknown's avatar
unknown committed
1198 1199
      with_named_thread="-lpthread"
    fi
1200 1201 1202
    # Fixes for HPUX 11.0 compiler
    if test "$ac_cv_prog_gcc" = "no"
    then
1203 1204
# set working flags first in line, letting override it (i. e. for debug):
      CXXFLAGS="+O2 $CXXFLAGS"
unknown's avatar
unknown committed
1205 1206
      MAX_C_OPTIMIZE=""
      MAX_CXX_OPTIMIZE=""
unknown's avatar
unknown committed
1207
      ndb_cxxflags_fix="$ndb_cxxflags_fix -Aa"
1208
    fi
unknown's avatar
unknown committed
1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221
    ;;
  *rhapsody*)
    if test "$ac_cv_prog_gcc" = "yes"
    then
      CPPFLAGS="$CPPFLAGS -traditional-cpp "
      CFLAGS="-DHAVE_CTHREADS_WRAPPER -DDO_NOT_REMOVE_THREAD_WRAPPERS"
      CXXFLAGS="-DHAVE_CTHREADS_WRAPPER"
      if test $with_named_curses = "no"
      then
	with_named_curses=""
      fi
    fi
    ;;
unknown's avatar
unknown committed
1222
  *darwin5*)
unknown's avatar
unknown committed
1223 1224
    if test "$ac_cv_prog_gcc" = "yes"
    then
1225
      FLAGS="-traditional-cpp -DHAVE_DARWIN5_THREADS -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DHAVE_BROKEN_REALPATH"
unknown's avatar
unknown committed
1226 1227
      CFLAGS="$CFLAGS $FLAGS"
      CXXFLAGS="$CXXFLAGS $FLAGS"
unknown's avatar
unknown committed
1228 1229 1230 1231
      MAX_C_OPTIMIZE="-O"
      with_named_curses=""
    fi
    ;;
unknown's avatar
unknown committed
1232 1233 1234
  *darwin6*)
    if test "$ac_cv_prog_gcc" = "yes"
    then
1235
      FLAGS="-D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DHAVE_BROKEN_REALPATH -DDONT_DECLARE_CXA_PURE_VIRTUAL "
unknown's avatar
unknown committed
1236 1237
      CFLAGS="$CFLAGS $FLAGS"
      CXXFLAGS="$CXXFLAGS $FLAGS"
unknown's avatar
unknown committed
1238 1239 1240
      MAX_C_OPTIMIZE="-O"
    fi
    ;;
1241
  *darwin*)
unknown's avatar
unknown committed
1242 1243
    if test "$ac_cv_prog_gcc" = "yes"
    then
unknown's avatar
unknown committed
1244
      FLAGS="-D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT  -DDONT_DECLARE_CXA_PURE_VIRTUAL"
unknown's avatar
unknown committed
1245 1246
      CFLAGS="$CFLAGS $FLAGS"
      CXXFLAGS="$CXXFLAGS $FLAGS"
1247 1248 1249
      MAX_C_OPTIMIZE="-O"
    fi
    ;;
1250
  *freebsd*|*dragonfly*)
1251
    dnl These dependencies have not really been checked for some time
1252
    OSVERSION=`sysctl -a | grep osreldate | awk '{ print $2 }'`
1253 1254 1255
    if test "$OSVERSION" -gt "600000"
    then
       # Post user-level threads, MYSQLD_NET_RETRY_COUNT is not needed any more
Joerg Bruehe's avatar
Joerg Bruehe committed
1256
       :
1257
    elif test "$OSVERSION" -gt "480100" && \
1258 1259 1260
       test "$OSVERSION" -lt "500000" || \
       test "$OSVERSION" -gt "500109"
    then
1261
       AC_MSG_WARN([Adding fix for interrupted reads])
1262 1263
       CXXFLAGS="$CXXFLAGS -DMYSQLD_NET_RETRY_COUNT=1000000"
    else
1264
       AC_MSG_WARN([Adding fix for interrupted reads and broken realpath])
1265 1266 1267
       CFLAGS="$CFLAGS -DHAVE_BROKEN_REALPATH"
       CXXFLAGS="$CXXFLAGS -DMYSQLD_NET_RETRY_COUNT=1000000 -DHAVE_BROKEN_REALPATH"
    fi
unknown's avatar
unknown committed
1268
    ;;
unknown's avatar
unknown committed
1269
  *netbsd*)
unknown's avatar
unknown committed
1270
    AC_MSG_WARN([Adding flag -Dunix])
unknown's avatar
unknown committed
1271 1272
    CFLAGS="$CFLAGS -Dunix"
    CXXFLAGS="$CXXFLAGS -Dunix"
1273
    OVERRIDE_MT_LD_ADD="\$(top_srcdir)/mit-pthreads/obj/libpthread.a"
unknown's avatar
unknown committed
1274
    ;;
unknown's avatar
unknown committed
1275
  *bsdi*)
unknown's avatar
unknown committed
1276
    AC_MSG_WARN([Adding fix for BSDI])
1277
    CFLAGS="$CFLAGS -D__BSD__ -DHAVE_BROKEN_REALPATH"
1278 1279
    AC_DEFINE_UNQUOTED([SOCKOPT_OPTLEN_TYPE], [size_t],
                       [Last argument to get/setsockopt])
unknown's avatar
unknown committed
1280 1281 1282 1283
    ;;
   *sgi-irix6*)
    if test "$with_named_thread" = "no"
    then 
unknown's avatar
unknown committed
1284
      AC_MSG_WARN([Using --with-named-thread=-lpthread])
unknown's avatar
unknown committed
1285 1286
      with_named_thread="-lpthread"
    fi
unknown's avatar
unknown committed
1287
    CXXFLAGS="$CXXFLAGS -D_BOOL"
unknown's avatar
unknown committed
1288 1289
    ;;
    *aix4.3*)
unknown's avatar
unknown committed
1290
      AC_MSG_WARN([Adding defines for AIX])
1291 1292
      CFLAGS="$CFLAGS -Wa,-many -DUNDEF_HAVE_INITGROUPS -DSIGNALS_DONT_BREAK_READ"
      CXXFLAGS="$CXXFLAGS -Wa,-many -DUNDEF_HAVE_INITGROUPS -DSIGNALS_DONT_BREAK_READ"
unknown's avatar
unknown committed
1293
    ;;
1294 1295 1296 1297
dnl Is this the right match for DEC OSF on alpha?
    *dec-osf*)
      if test "$ac_cv_prog_gcc" = "yes" && test "$host_cpu" = "alpha"
      then
unknown's avatar
unknown committed
1298
	  AC_MSG_WARN([Adding defines for DEC OSF on alpha])
1299 1300 1301
	  CFLAGS="$CFLAGS -mieee"
	  CXXFLAGS="$CXXFLAGS -mieee"
      fi
unknown's avatar
unknown committed
1302
      AC_MSG_WARN([Adding defines for OSF1])
1303
      # gethostbyname_r is deprecated and doesn't work ok on OSF1
1304 1305
      CFLAGS="$CFLAGS -DUNDEF_HAVE_GETHOSTBYNAME_R -DSNPRINTF_RETURN_TRUNC"
      CXXFLAGS="$CXXFLAGS -DUNDEF_HAVE_GETHOSTBYNAME_R -DSNPRINTF_RETURN_TRUNC"
unknown's avatar
unknown committed
1306
      # fix to handle include of <stdint.h> correctly on OSF1 with cxx compiler
unknown's avatar
unknown committed
1307
      CXXFLAGS="$CXXFLAGS -I/usr/include/cxx -I/usr/include/cxx_cname -I/usr/include -I/usr/include.dtk"
1308
    ;;
unknown's avatar
unknown committed
1309 1310 1311 1312 1313 1314 1315 1316 1317
esac


#---START: Used in for client configure
# Check if we threads are in libc or if we should use
# -lpthread, -lpthreads or mit-pthreads
# We have to check libc last because else it fails on Solaris 2.6

with_posix_threads="no"
1318
# Search thread lib on Linux
1319
if test "$with_named_thread" = "no"
unknown's avatar
unknown committed
1320
then
1321 1322
    AC_MSG_CHECKING("Linux threads")
    if test "$TARGET_LINUX" = "true"
unknown's avatar
unknown committed
1323
    then
1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365
        AC_MSG_RESULT("starting")
        # use getconf to check glibc contents
        AC_MSG_CHECKING("getconf GNU_LIBPTHREAD_VERSION")
        case `getconf GNU_LIBPTHREAD_VERSION | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` in
        NPTL* )
                AC_MSG_RESULT("NPTL")
                AC_DEFINE([HAVE_NPTL], [1], [NPTL threads implementation])
                with_named_thread="-lpthread"
                ;;
        LINUXTHREADS* )
                AC_MSG_RESULT("Linuxthreads")
                AC_DEFINE([HAVE_LINUXTHREADS], [1], 
                      [Whether we are using Xavier Leroy's LinuxThreads])
                with_named_thread="-lpthread"
                ;;
        * )
                AC_MSG_RESULT("unknown")
                ;;
        esac
        if test "$with_named_thread" = "no"
        then
          # old method, check headers
          # Look for LinuxThreads.
          AC_MSG_CHECKING("LinuxThreads in header file comment")
          res=`grep Linuxthreads /usr/include/pthread.h 2>/dev/null | wc -l`
          if test "$res" -gt 0
          then
            AC_MSG_RESULT("Found")
            AC_DEFINE([HAVE_LINUXTHREADS], [1],
                  [Whether we are using Xavier Leroy's LinuxThreads])
            # Linux 2.0 sanity check
            AC_TRY_COMPILE([#include <sched.h>], [int a = sched_get_priority_min(1);], ,
                  AC_MSG_ERROR([Syntax error in sched.h. Change _P to __P in the /usr/include/sched.h file. See the Installation chapter in the Reference Manual]))
            # RedHat 5.0 does not work with dynamic linking of this. -static also
            # gives a speed increase in linux so it does not hurt on other systems.
            with_named_thread="-lpthread"
          else
            AC_MSG_RESULT("Not found")
            # If this is a linux machine we should barf
            AC_MSG_ERROR([This is a Linux system without a working getconf, 
and Linuxthreads was not found. Please install it (or a new glibc) and try again.  
See the Installation chapter in the Reference Manual for more information.])
unknown's avatar
unknown committed
1366
          fi
1367 1368 1369 1370
        else
            AC_MSG_RESULT("no need to check headers")
        fi
        
unknown's avatar
unknown committed
1371
        AC_MSG_CHECKING("for pthread_create in -lpthread")
1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404
        ac_save_LIBS="$LIBS"
        LIBS="$LIBS -lpthread"
        AC_TRY_LINK( [#include <pthread.h>],
              [ (void) pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ],
              AC_MSG_RESULT("yes"),
              [ AC_MSG_RESULT("no")
                AC_MSG_ERROR([
This is a Linux system claiming to support threads, either Linuxthreads or NPTL, but linking a test program failed.  
Please install one of these (or a new glibc) and try again.  
See the Installation chapter in the Reference Manual for more information.]) ]
              )
        LIBS="$ac_save_LIBS"
    else
        AC_MSG_RESULT("no")
    fi  # "$TARGET_LINUX" 
fi  # "$with_named_thread" = "no" -a "$with_mit_threads" = "no"


# Hack for DEC-UNIX (OSF1 -> Tru64)
if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no"
then
    AC_MSG_CHECKING("DEC threads post OSF/1 3.2")
    if test -f /usr/shlib/libpthread.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a
    then
      with_named_thread="-lpthread -lmach -lexc"
      CFLAGS="$CFLAGS -D_REENTRANT"
      CXXFLAGS="$CXXFLAGS -D_REENTRANT"
      AC_DEFINE(HAVE_DEC_THREADS, [1], [Whether we are using DEC threads])
      AC_MSG_RESULT("yes")
    else
      AC_MSG_RESULT("no")
    fi  # DEC threads
fi  # "$with_named_thread" = "no" -a "$with_mit_threads" = "no"
unknown's avatar
unknown committed
1405 1406 1407 1408 1409 1410 1411


dnl This is needed because -lsocket has to come after the thread
dnl library on SCO.
AC_DEFUN([MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK], [
  LIBS=`echo " $LIBS " | sed -e 's/ -lsocket / /g'`
])
unknown's avatar
unknown committed
1412 1413 1414 1415 1416 1417 1418 1419
# Hack for SCO UNIX
if test "$with_named_thread" = "no"
then
  AC_MSG_CHECKING("SCO threads")
  if expr "$SYSTEM_TYPE" : ".*sco.*" > /dev/null
  then
    if test -f /usr/lib/libgthreads.a -o -f /usr/lib/libgthreads.so
    then
unknown's avatar
unknown committed
1420
      MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK
unknown's avatar
unknown committed
1421 1422 1423
      with_named_thread="-lgthreads -lsocket -lgthreads"
      # sched.h conflicts with fsu-threads
      touch ./include/sched.h
1424
      touch ./include/semaphore.h
unknown's avatar
unknown committed
1425 1426 1427 1428 1429 1430

      # We must have gcc
      if expr "$CC" : ".*gcc.*"
      then
	AC_MSG_RESULT("yes")
      else
unknown's avatar
unknown committed
1431
	AC_MSG_ERROR([On SCO UNIX MySQL must be compiled with gcc. See the Installation chapter in the Reference Manual.])
unknown's avatar
unknown committed
1432 1433 1434 1435
      fi
      AC_MSG_RESULT("yes")
    elif test -f /usr/local/lib/libpthread.a -o -f /usr/local/lib/libpthread.so
    then
unknown's avatar
unknown committed
1436
      MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK
unknown's avatar
unknown committed
1437 1438 1439 1440 1441 1442 1443 1444 1445 1446
      with_named_thread="-lpthread -lsocket"
      # sched.h conflicts with fsu-threads
      # touch ./include/sched.h

      AC_MSG_CHECKING("for gcc")
      # We must have gcc
      if expr "$CC" : ".*gcc.*"
      then
	AC_MSG_RESULT("yes")
      else
unknown's avatar
unknown committed
1447
	AC_MSG_ERROR([On SCO UNIX MySQL must be compiled with gcc. See the Installation chapter in the Reference Manual.])
unknown's avatar
unknown committed
1448 1449
      fi
      AC_MSG_RESULT("yes")
1450
    # Hack for SCO UnixWare 7.1.x
unknown's avatar
unknown committed
1451 1452 1453
    #
    elif test "$with_named_thread" = "no"
    then
unknown's avatar
unknown committed
1454
      AC_MSG_RESULT("no")
1455
      AC_MSG_CHECKING("SCO UnixWare 7.1.x native threads")
unknown's avatar
unknown committed
1456 1457 1458 1459
      if expr "$SYSTEM_TYPE" : ".*sco.*" > /dev/null
      then
        if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so
        then
unknown's avatar
unknown committed
1460
	  MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK
unknown's avatar
unknown committed
1461 1462
          if expr "$CC" : ".*gcc.*"
          then
unknown's avatar
unknown committed
1463
            with_named_thread="-pthread -lsocket -lnsl"
unknown's avatar
unknown committed
1464
          else
unknown's avatar
unknown committed
1465
            with_named_thread="-Kthread -lsocket -lnsl"
unknown's avatar
unknown committed
1466 1467 1468
          fi
          if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null
          then
1469
            AC_DEFINE(HAVE_UNIXWARE7_THREADS, [1])
unknown's avatar
unknown committed
1470
          fi
unknown's avatar
unknown committed
1471
          AC_MSG_RESULT("yes")
unknown's avatar
unknown committed
1472 1473 1474 1475
          # We must have cc
          AC_MSG_CHECKING("for gcc")
          if expr "$CC" : ".*gcc.*"
          then
unknown's avatar
unknown committed
1476 1477
	    CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"
	    CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"
unknown's avatar
unknown committed
1478
          else
unknown's avatar
unknown committed
1479 1480
	    CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"
	    CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"
unknown's avatar
unknown committed
1481 1482
          fi
        else
unknown's avatar
unknown committed
1483
          AC_MSG_ERROR([configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual.]) 
unknown's avatar
unknown committed
1484 1485 1486 1487 1488
        fi
      else
        AC_MSG_RESULT("no")
      fi
    else
unknown's avatar
unknown committed
1489
      AC_MSG_ERROR([On SCO UNIX MySQL requires that the FSUThreads package is installed. See the Installation chapter in the Reference Manual.])
unknown's avatar
unknown committed
1490 1491 1492 1493 1494 1495
    fi
  else
    AC_MSG_RESULT("no")
  fi
fi

1496 1497
#
# Check for SCO threading libraries
1498 1499 1500
#
if test "$with_named_thread" = "no"
then
1501 1502 1503 1504
  AC_MSG_CHECKING([SCO OpenServer 6, UnixWare 7 or OpenUNIX 8 native threads])
  if expr "$SYSTEM_TYPE" : ".*UnixWare.*" > /dev/null || \
     expr "$SYSTEM_TYPE" : ".*SCO_SV6.*" > /dev/null || \
     expr "$SYSTEM_TYPE" : ".*OpenUNIX.*" > /dev/null
1505 1506 1507 1508
  then
    if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so
    then
      MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK
1509
      if expr "$CC" : ".*gcc.*" > /dev/null
1510
      then
1511
        with_named_thread="-pthread -lsocket -lnsl"
1512 1513
	CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
	CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
1514 1515
      else
        with_named_thread="-Kthread -lsocket -lnsl"
1516 1517
	CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
	CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
1518
      fi
1519 1520
      if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null
      then
1521
        AC_DEFINE(HAVE_UNIXWARE7_THREADS, [1], [Have UnixWare 7 (or similar) almost-POSIX threading library])
1522
      fi
1523
      AC_MSG_RESULT(yes)
1524
    else
1525
      AC_MSG_ERROR([configure: error: Can't find thread library on SCO/Caldera system. See the Installation chapter in the Reference Manual.]) 
1526 1527
    fi
  else
1528
    AC_MSG_RESULT(no)
1529 1530 1531
  fi
fi

unknown's avatar
unknown committed
1532
# Hack for Siemens UNIX
1533
if test "$with_named_thread" = "no"
unknown's avatar
unknown committed
1534 1535 1536 1537
then
  AC_MSG_CHECKING("Siemens threads")
  if test -f /usr/lib/libxnet.so -a "$SYSTEM_TYPE" = "sni-sysv4"
  then
unknown's avatar
unknown committed
1538
    LIBS="-lxnet $LIBS"
1539
    NON_THREADED_LIBS="-lxnet $NON_THREADED_LIBS"
unknown's avatar
unknown committed
1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560
    with_named_thread="-Kthread $LDFLAGS -lxnet"
    LD_FLAGS=""
    CFLAGS="-Kthread $CFLAGS"
    CXXFLAGS="-Kthread $CXXFLAGS"
    AC_MSG_RESULT("yes")
  else
    AC_MSG_RESULT("no")
  fi
fi

# Use library named -lpthread
if test "$with_named_thread" = "no" -a "$with_pthread" = "yes"
then
    with_named_thread="-lpthread"
fi

#---END:

# Hack for Solaris >= 2.5
# We want both the new and the old interface
 
1561
if test "$with_named_thread" = "no"
unknown's avatar
unknown committed
1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576
then
  AC_MSG_CHECKING("Solaris threads")
  if test -f /usr/lib/libpthread.so -a -f /usr/lib/libthread.so
  then
    with_named_thread="-lpthread -lthread"
    AC_MSG_RESULT("yes")
  else
    AC_MSG_RESULT("no")
  fi
fi

# Should we use named pthread library ?
AC_MSG_CHECKING("named thread libs:")
if test "$with_named_thread" != "no"
then
1577
  LIBS="$with_named_thread $LIBS $with_named_thread"
1578
  CLIENT_THREAD_LIBS="$with_named_thread"
unknown's avatar
unknown committed
1579 1580 1581 1582
  with_posix_threads="yes"
  AC_MSG_RESULT("$with_named_thread")
else
  AC_MSG_RESULT("no")
1583 1584 1585 1586 1587 1588 1589 1590
  # pthread_create is in standard libraries (As in BSDI 3.0)
  AC_MSG_CHECKING("for pthread_create in -libc");
  AC_TRY_LINK(
  [#include <pthread.h>],
  [ (void) pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ],
  with_posix_threads=yes, with_posix_threads=no)
  AC_MSG_RESULT("$with_posix_threads")
  if test "$with_posix_threads" = "no"
unknown's avatar
unknown committed
1591
  then
1592
    AC_MSG_CHECKING("for pthread_create in -lpthread")
1593 1594
    ac_save_LIBS="$LIBS"
    LIBS="$LIBS -lpthread"
1595
    CLIENT_THREAD_LIBS="-lpthread"
unknown's avatar
unknown committed
1596 1597 1598 1599 1600 1601 1602
    AC_TRY_LINK(
    [#include <pthread.h>],
    [ (void) pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ],
    with_posix_threads=yes, with_posix_threads=no)
    AC_MSG_RESULT("$with_posix_threads")
    if test "$with_posix_threads" = "no"
    then
1603
      LIBS=" $ac_save_LIBS -lpthreads"
1604
      CLIENT_THREAD_LIBS="-lpthreads"
1605
      AC_MSG_CHECKING("for pthread_create in -lpthreads")
unknown's avatar
unknown committed
1606 1607
      AC_TRY_LINK(
      [#include <pthread.h>],
1608
      [ pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ],
unknown's avatar
unknown committed
1609 1610 1611 1612
      with_posix_threads=yes, with_posix_threads=no)
      AC_MSG_RESULT("$with_posix_threads")
      if test "$with_posix_threads" = "no"
      then
1613 1614
        # This is for FreeBSD
        LIBS="$ac_save_LIBS -pthread"
1615
        CLIENT_THREAD_LIBS="-pthread"
1616
        AC_MSG_CHECKING("for pthread_create in -pthread")
unknown's avatar
unknown committed
1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636
        AC_TRY_LINK(
        [#include <pthread.h>],
        [ pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ],
        with_posix_threads=yes, with_posix_threads=no)
        AC_MSG_RESULT("$with_posix_threads")
      fi
    fi
  fi
fi

#---START: Used in for client configure
# Must be checked after, because strtok_r may be in -lpthread
# On AIX strtok_r is in libc_r

my_save_LIBS="$LIBS"
AC_CHECK_LIB(pthread,strtok_r)
LIBS="$my_save_LIBS"
if test "$ac_cv_lib_pthread_strtok_r" = "no"
then
  AC_CHECK_LIB(c_r,strtok_r)
1637 1638
  case "$with_osf32_threads---$target_os" in
    # Don't keep -lc_r in LIBS; -pthread handles it magically
1639 1640
    yes---* | *---freebsd* | *---hpux*) LIBS="$my_save_LIBS" ;;

1641
  esac
unknown's avatar
unknown committed
1642 1643 1644 1645 1646 1647
  AC_CHECK_FUNCS(strtok_r pthread_init)
else
  AC_CHECK_FUNCS(strtok_r)
fi
#---END:

1648
# dlopen, dlerror
1649
case "$with_mysqld_ldflags " in
1650

unknown's avatar
unknown committed
1651
  *"-all-static "*)
1652
    # No need to check for dlopen when mysqld is linked with
unknown's avatar
unknown committed
1653
    # -all-static as it won't be able to load any functions.
1654 1655
    # NOTE! It would be better if it was possible to test if dlopen
    # can be used, but a good way to test it couldn't be found
1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677

    ;;

  *)
    # Check for dlopen, needed for user definable functions
    # This must be checked after threads on AIX
    # We only need this for mysqld, not for the clients.

    my_save_LIBS="$LIBS"
    LIBS=""
    AC_CHECK_LIB(dl,dlopen)
    LIBDL=$LIBS
    LIBS="$my_save_LIBS"
    AC_SUBST(LIBDL)

    my_save_LIBS="$LIBS"
    LIBS="$LIBS $LIBDL"
    AC_CHECK_FUNCS(dlopen dlerror)
    LIBS="$my_save_LIBS"

    ;;
esac
1678

unknown's avatar
unknown committed
1679 1680 1681 1682 1683 1684

# System characteristics
AC_SYS_RESTARTABLE_SYSCALLS

# Build optimized or debug version ?
# First check for gcc and g++
1685
if test "$GCC" = "yes"
unknown's avatar
unknown committed
1686 1687 1688
then
  DEBUG_CFLAGS="-g"
  DEBUG_OPTIMIZE_CC="-O"
unknown's avatar
unknown committed
1689
  OPTIMIZE_CFLAGS="$MAX_C_OPTIMIZE"
unknown's avatar
unknown committed
1690 1691 1692
else
  DEBUG_CFLAGS="-g"
  DEBUG_OPTIMIZE_CC=""
1693 1694 1695 1696 1697 1698 1699 1700
  case $SYSTEM_TYPE in                               
    *solaris*)
      OPTIMIZE_CFLAGS="-O1"
      ;;
    *)
      OPTIMIZE_CFLAGS="-O"
      ;;
  esac
unknown's avatar
unknown committed
1701
fi
1702
if test "$GXX" = "yes"
unknown's avatar
unknown committed
1703 1704 1705
then
  DEBUG_CXXFLAGS="-g"
  DEBUG_OPTIMIZE_CXX="-O"
unknown's avatar
unknown committed
1706
  OPTIMIZE_CXXFLAGS="$MAX_CXX_OPTIMIZE"
unknown's avatar
unknown committed
1707 1708
else
  DEBUG_OPTIMIZE_CXX=""
1709 1710
  case $SYSTEM_TYPE in
    *solaris*)
Joerg Bruehe's avatar
Joerg Bruehe committed
1711
      DEBUG_CXXFLAGS="-g0"
1712 1713 1714
      OPTIMIZE_CXXFLAGS="-O1"
      ;;
    *)
Joerg Bruehe's avatar
Joerg Bruehe committed
1715
      DEBUG_CXXFLAGS="-g"
1716 1717 1718
      OPTIMIZE_CXXFLAGS="-O"
      ;;
  esac
unknown's avatar
unknown committed
1719
fi
1720

1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733
# If the user specified CFLAGS, we won't add any optimizations
if test -n "$SAVE_CFLAGS"
then
  OPTIMIZE_CFLAGS=""
  DEBUG_OPTIMIZE_CC=""
fi
# Ditto for CXXFLAGS
if test -n "$SAVE_CXXFLAGS"
then
  OPTIMIZE_CXXFLAGS=""
  DEBUG_OPTIMIZE_CXX=""
fi

unknown's avatar
unknown committed
1734
AC_ARG_WITH(debug,
1735
    [AS_HELP_STRING([--with-debug], [Add debug code @<:@default=no@:>@])],
unknown's avatar
unknown committed
1736 1737 1738 1739
    [with_debug=$withval],
    [with_debug=no])
if test "$with_debug" = "yes"
then
1740 1741 1742
  AC_DEFINE([DBUG_ON], [1], [Use libdbug])
  CFLAGS="$DEBUG_CFLAGS $DEBUG_OPTIMIZE_CC -DSAFE_MUTEX $CFLAGS"
  CXXFLAGS="$DEBUG_CXXFLAGS $DEBUG_OPTIMIZE_CXX -DSAFE_MUTEX $CXXFLAGS"
unknown's avatar
unknown committed
1743 1744
else
  # Optimized version. No debug
1745 1746 1747
  AC_DEFINE([DBUG_OFF], [1], [Don't use libdbug])
  CFLAGS="$OPTIMIZE_CFLAGS $CFLAGS"
  CXXFLAGS="$OPTIMIZE_CXXFLAGS $CXXFLAGS"
unknown's avatar
unknown committed
1748
fi
unknown's avatar
unknown committed
1749

1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760
AC_ARG_WITH([valgrind],
  [AS_HELP_STRING([--with-valgrind],
    [Valgrind instrumentation @<:@default=no@:>@])],
    [], [with_valgrind=no])

if test "$with_valgrind" != "no"
then
  AC_CHECK_HEADERS([valgrind/valgrind.h valgrind/memcheck.h],
    [AC_DEFINE([HAVE_VALGRIND], [1], [Define for Valgrind support])])
fi

1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777
# Debug Sync Facility. NOTE: depends on 'with_debug'. Must be behind it.
AC_MSG_CHECKING(if Debug Sync Facility should be enabled.)
AC_ARG_ENABLE(debug_sync,
              AS_HELP_STRING([--enable-debug-sync],
                             [Build a version with Debug Sync Facility]),
              [ enable_debug_sync=$enableval ],
              [ enable_debug_sync=$with_debug ])

if test "$enable_debug_sync" != "no"
then
  AC_DEFINE([ENABLED_DEBUG_SYNC], [1],
            [If Debug Sync Facility should be enabled])
  AC_MSG_RESULT([yes]) 
else
  AC_MSG_RESULT([no])
fi

unknown's avatar
unknown committed
1778 1779 1780 1781
AC_ARG_WITH([fast-mutexes],
	    AC_HELP_STRING([--with-fast-mutexes], 
	    [Compile with fast mutexes (default is disabled)]),
	    [with_fast_mutexes=$withval], [with_fast_mutexes=no])
unknown's avatar
unknown committed
1782

unknown's avatar
unknown committed
1783
if test "$with_fast_mutexes" != "no"
unknown's avatar
unknown committed
1784
then
unknown's avatar
unknown committed
1785 1786 1787 1788 1789 1790 1791
  if test "$with_debug" != "no"
  then
    AC_MSG_WARN(['--with-fast-mutexes' ignored when '--with-debug' is given])
  else
    AC_DEFINE([MY_PTHREAD_FASTMUTEX], [1], 
	      [Define to 1 if you want to use fast mutexes])
  fi
unknown's avatar
unknown committed
1792
fi
unknown's avatar
unknown committed
1793

unknown's avatar
unknown committed
1794
AC_ARG_WITH([atomic-ops],
1795 1796 1797 1798 1799
            AS_HELP_STRING([--with-atomic-ops=rwlocks|smp|up],
            [Implement atomic operations using pthread rwlocks or atomic CPU
             instructions for multi-processor or uniprocessor
             configuration. By default gcc built-in sync functions are used,
             if available and 'smp' configuration otherwise.]))
unknown's avatar
unknown committed
1800 1801 1802 1803 1804 1805
case "$with_atomic_ops" in
  "up") AC_DEFINE([MY_ATOMIC_MODE_DUMMY], [1],
                  [Assume single-CPU mode, no concurrency]) ;;
  "rwlocks") AC_DEFINE([MY_ATOMIC_MODE_RWLOCKS], [1],
                  [Use pthread rwlocks for atomic ops]) ;;
  "smp") ;;
1806 1807
  "")
   ;;
unknown's avatar
unknown committed
1808 1809 1810
   *) AC_MSG_ERROR(["$with_atomic_ops" is not a valid value for --with-atomic-ops]) ;;
esac

unknown's avatar
unknown committed
1811
AC_CACHE_CHECK([whether the compiler provides atomic builtins],
1812 1813 1814 1815 1816 1817 1818
               [mysql_cv_gcc_atomic_builtins],
  [AC_RUN_IFELSE(
     [AC_LANG_PROGRAM(
        [
        ],
     [[
        int foo= -10; int bar= 10;
1819
        long long int foo64= -10; long long int bar64= 10;
1820 1821 1822 1823 1824 1825 1826 1827
        if (!__sync_fetch_and_add(&foo, bar) || foo)
          return -1;
        bar= __sync_lock_test_and_set(&foo, bar);
        if (bar || foo != 10)
          return -1;
        bar= __sync_val_compare_and_swap(&bar, foo, 15);
        if (bar)
          return -1;
1828 1829 1830 1831 1832 1833 1834 1835
        if (!__sync_fetch_and_add(&foo64, bar64) || foo64)
          return -1;
        bar64= __sync_lock_test_and_set(&foo64, bar64);
        if (bar64 || foo64 != 10)
          return -1;
        bar64= __sync_val_compare_and_swap(&bar64, foo, 15);
        if (bar64)
          return -1;
1836 1837 1838 1839
        return 0;
     ]]
     )],
   [mysql_cv_gcc_atomic_builtins=yes],
unknown's avatar
unknown committed
1840
   [mysql_cv_gcc_atomic_builtins=no],
1841 1842
   [mysql_cv_gcc_atomic_builtins=no]
)])
unknown's avatar
unknown committed
1843 1844 1845 1846 1847
if test "x$mysql_cv_gcc_atomic_builtins" = xyes; then
  AC_DEFINE(HAVE_GCC_ATOMIC_BUILTINS, 1,
            [Define to 1 if compiler provides atomic builtins.])
fi

1848
AC_CACHE_CHECK([whether the OS provides atomic_* functions like Solaris],
1849 1850 1851
               [mysql_cv_solaris_atomic],
  [AC_RUN_IFELSE(
     [AC_LANG_PROGRAM(
1852
        [[
1853
        #include <atomic.h>
1854
        ]],
1855 1856
     [[
        int foo = -10; int bar = 10;
1857
        int64_t foo64 = -10; int64_t bar64 = 10;
1858 1859 1860 1861 1862 1863 1864 1865
        if (atomic_add_int_nv((uint_t *)&foo, bar) || foo)
          return -1;
        bar = atomic_swap_uint((uint_t *)&foo, (uint_t)bar);
        if (bar || foo != 10)
          return -1;
        bar = atomic_cas_uint((uint_t *)&bar, (uint_t)foo, 15);
        if (bar)
          return -1;
1866 1867 1868 1869 1870 1871 1872 1873
        if (atomic_add_64_nv((volatile uint64_t *)&foo64, bar64) || foo64)
          return -1;
        bar64 = atomic_swap_64((volatile uint64_t *)&foo64, (uint64_t)bar64);
        if (bar64 || foo64 != 10)
          return -1;
        bar64 = atomic_cas_64((volatile uint64_t *)&bar64, (uint_t)foo64, 15);
        if (bar64)
          return -1;
1874
        atomic_or_64((volatile uint64_t *)&bar64, 0);
1875 1876 1877 1878
        return 0;
     ]]
     )],
   [mysql_cv_solaris_atomic=yes],
1879
   [mysql_cv_solaris_atomic=no],
1880 1881
   [mysql_cv_solaris_atomic=no]
)])
1882 1883 1884 1885 1886
if test "x$mysql_cv_solaris_atomic" = xyes; then
  AC_DEFINE(HAVE_SOLARIS_ATOMIC, 1,
            [Define to 1 if OS provides atomic_* functions like Solaris.])
fi

1887
# Force static compilation to avoid linking problems/get more speed
unknown's avatar
unknown committed
1888
AC_ARG_WITH(mysqld-ldflags,
1889
    [  --with-mysqld-ldflags   Extra linking arguments for mysqld],
unknown's avatar
unknown committed
1890 1891 1892 1893 1894
    [MYSQLD_EXTRA_LDFLAGS=$withval],
    [MYSQLD_EXTRA_LDFLAGS=])
AC_SUBST(MYSQLD_EXTRA_LDFLAGS)

AC_ARG_WITH(client-ldflags,
1895
    [  --with-client-ldflags   Extra linking arguments for clients],
unknown's avatar
unknown committed
1896 1897 1898 1899
    [CLIENT_EXTRA_LDFLAGS=$withval],
    [CLIENT_EXTRA_LDFLAGS=])
AC_SUBST(CLIENT_EXTRA_LDFLAGS)

unknown's avatar
unknown committed
1900 1901 1902 1903 1904 1905
AC_ARG_WITH(mysqld-libs,
    [  --with-mysqld-libs   Extra libraries to link with for mysqld],
    [MYSQLD_EXTRA_LIBS=$withval],
    [MYSQLD_EXTRA_LIBS=])
AC_SUBST(MYSQLD_EXTRA_LIBS)

unknown's avatar
unknown committed
1906 1907 1908 1909 1910 1911
AC_ARG_WITH(lib-ccflags,
    [  --with-lib-ccflags      Extra CC options for libraries],
    [LIB_EXTRA_CCFLAGS=$withval],
    [LIB_EXTRA_CCFLAGS=])
AC_SUBST(LIB_EXTRA_CCFLAGS)

unknown's avatar
unknown committed
1912 1913
# Avoid stupid bug on some OS 
AC_ARG_WITH(low-memory,
1914 1915
    [  --with-low-memory       Try to use less memory to compile to avoid 
                          memory limitations.],
unknown's avatar
unknown committed
1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931
    [with_lowmem=$withval],
    [with_lowmem=no])
if test "$with_lowmem" = "yes"
then
  if test "$ac_cv_prog_gcc" = "yes" 
  then 
    LM_CFLAGS="-fno-inline"
  else
    LM_CFLAGS="-O0"
  fi
else
  LM_CFLAGS=""
fi
AC_SUBST(LM_CFLAGS)

AC_ARG_WITH(comment,
1932
    [  --with-comment          Comment about compilation environment.],
unknown's avatar
unknown committed
1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943
    [with_comment=$withval],
    [with_comment=no])
if test "$with_comment" != "no"
then
  COMPILATION_COMMENT=$with_comment
else
  COMPILATION_COMMENT="Source distribution"
fi
AC_SUBST(COMPILATION_COMMENT)

AC_MSG_CHECKING("need of special linking flags")
1944
if test "$TARGET_LINUX" = "true" -a "$ac_cv_prog_gcc" = "yes" -a "$all_is_static" != "yes"
unknown's avatar
unknown committed
1945 1946 1947 1948
then
  LDFLAGS="$LDFLAGS -rdynamic"
  AC_MSG_RESULT("-rdynamic")
else
unknown's avatar
unknown committed
1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960
  case "$SYSTEM_TYPE$with_mysqld_ldflags " in
  *freebsd*"-all-static "*|*dragonfly*"-all-static "*)
    AC_MSG_RESULT("none")
    ;;
  *freebsd*|*dragonfly*)
    MYSQLD_EXTRA_LDFLAGS="$MYSQLD_EXTRA_LDFLAGS -export-dynamic"
    AC_MSG_RESULT("-export-dynamic")
    ;;
  *)
    AC_MSG_RESULT("none")
    ;;
  esac
unknown's avatar
unknown committed
1961 1962 1963 1964 1965
fi

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
1966 1967 1968
AS_IF([test "x$ac_cv_c_inline" = "xno"],
 [AC_MSG_WARN([The C compiler does not support inline. Beware that unused
 functions might not be eliminated the object files.])])
unknown's avatar
unknown committed
1969 1970 1971 1972
AC_TYPE_OFF_T
AC_STRUCT_ST_RDEV
AC_HEADER_TIME
AC_STRUCT_TM
unknown's avatar
unknown committed
1973
MYSQL_NEEDS_MYSYS_NEW
unknown's avatar
unknown committed
1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986
# AC_CHECK_SIZEOF return 0 when it does not find the size of a
# type. We want a error instead.
AC_CHECK_SIZEOF(char, 1)
if test "$ac_cv_sizeof_char" -eq 0
then
  AC_MSG_ERROR([No size for char type.
A likely cause for this could be that there isn't any
static libraries installed. You can verify this by checking if you have libm.a
in /lib, /usr/lib or some other standard place.  If this is the problem,
install the static libraries and try again.  If this isn't the problem,
examine config.log for possible errors.  If you want to report this, use
'scripts/mysqlbug' and include at least the last 20 rows from config.log!])
fi
1987
AC_CHECK_SIZEOF(char*, 4)
unknown's avatar
unknown committed
1988
AC_CHECK_SIZEOF(short, 2)
unknown's avatar
unknown committed
1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004
AC_CHECK_SIZEOF(int, 4)
if test "$ac_cv_sizeof_int" -eq 0
then
  AC_MSG_ERROR("No size for int type.")
fi
AC_CHECK_SIZEOF(long, 4)
if test "$ac_cv_sizeof_long" -eq 0
then
  AC_MSG_ERROR("No size for long type.")
fi
AC_CHECK_SIZEOF(long long, 8)
if test "$ac_cv_sizeof_long_long" -eq 0
then
  AC_MSG_ERROR("MySQL needs a long long type.")
fi
# off_t is not a builtin type
2005
AC_CHECK_SIZEOF(off_t, 4)
unknown's avatar
unknown committed
2006 2007 2008 2009
if test "$ac_cv_sizeof_off_t" -eq 0
then
  AC_MSG_ERROR("MySQL needs a off_t type.")
fi
2010

2011 2012 2013 2014 2015 2016 2017
dnl
dnl check if time_t is unsigned
dnl

MYSQL_CHECK_TIME_T


2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028
# do we need #pragma interface/#pragma implementation ?
# yes if it's gcc 2.x, and not icc pretending to be gcc, and not cygwin
AC_MSG_CHECKING(the need for @%:@pragma interface/implementation)
# instead of trying to match SYSTEM_TYPE and CC_VERSION (that doesn't
# follow any standard), we'll use well-defined preprocessor macros:
AC_TRY_CPP([
#if !defined(__CYGWIN__) && !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ < 3)
#error USE_PRAGMA_IMPLEMENTATION
#endif
],AC_MSG_RESULT(no) ,AC_MSG_RESULT(yes) ; CXXFLAGS="$CXXFLAGS -DUSE_PRAGMA_IMPLEMENTATION")

unknown's avatar
unknown committed
2029 2030 2031 2032 2033 2034
# This always gives a warning. Ignore it unless you are cross compiling
AC_C_BIGENDIAN
#---START: Used in for client configure
# Check base type of last arg to accept
MYSQL_TYPE_ACCEPT
#---END:
2035 2036
# Figure out what type of struct rlimit to use with setrlimit
MYSQL_TYPE_STRUCT_RLIMIT
unknown's avatar
unknown committed
2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047
# Find where the stack goes
MYSQL_STACK_DIRECTION
# We want to skip alloca on irix unconditionally. It may work on some version..
MYSQL_FUNC_ALLOCA
# Do struct timespec have members tv_sec or ts_sec
MYSQL_TIMESPEC_TS
# Do we have the tzname variable
MYSQL_TZNAME
# Do the c++ compiler have a bool type
MYSQL_CXX_BOOL
# Check some common bugs with gcc 2.8.# on sparc
2048 2049 2050 2051 2052 2053 2054
MYSQL_CHECK_LONGLONG_TO_FLOAT
if test "$ac_cv_conv_longlong_to_float" != "yes"
then
  AC_MSG_ERROR([Your compiler cannot convert a longlong value to a float!
                If you are using gcc 2.8.# you should upgrade to egcs 1.0.3
                or newer and try again])
fi
2055 2056
AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
2057
AC_CHECK_TYPES([u_int32_t])
2058

unknown's avatar
unknown committed
2059
MYSQL_PTHREAD_YIELD
unknown's avatar
unknown committed
2060 2061

######################################################################
2062 2063 2064 2065
# For readline/libedit (We simply move the mimimum amount of stuff from
# the readline/libedit configure.in here)

dnl Checks for header files.
unknown's avatar
unknown committed
2066
AC_CHECK_HEADERS(malloc.h sys/cdefs.h)
2067 2068 2069 2070 2071

dnl Checks for library functions.
AC_FUNC_ALLOCA
AC_PROG_GCC_TRADITIONAL
AC_TYPE_SIGNAL
unknown's avatar
unknown committed
2072
AC_CHECK_FUNCS(re_comp regcomp strdup)
2073

unknown's avatar
unknown committed
2074 2075 2076 2077 2078 2079 2080
dnl Sun compilers have their own vis.h that is about something
dnl totally different. So, not to change the libedit source, we
dnl do some additional checks before we define HAVE_VIS_H.
AC_CHECK_HEADER(vis.h,
  [AC_CHECK_FUNC(strvis,
    [AC_DEFINE([HAVE_VIS_H], [1],[Found vis.h and the strvis() function])])])

2081 2082 2083 2084 2085 2086
AC_CHECK_FUNCS(strlcat strlcpy)
AC_CHECK_FUNCS(issetugid)
AC_CHECK_FUNCS(fgetln)
AC_CHECK_FUNCS(getline flockfile)

# from old readline settting:
unknown's avatar
unknown committed
2087 2088 2089 2090 2091 2092 2093

MAKE_SHELL=/bin/sh
AC_SUBST(MAKE_SHELL)

# Already-done: stdlib.h string.h unistd.h termios.h
AC_CHECK_HEADERS(varargs.h stdarg.h dirent.h locale.h ndir.h sys/dir.h \
 sys/file.h sys/ndir.h sys/ptem.h sys/pte.h sys/select.h sys/stream.h \
unknown's avatar
unknown committed
2094
 sys/mman.h curses.h termcap.h termio.h termbits.h asm/termbits.h grp.h \
2095
paths.h semaphore.h langinfo.h)
unknown's avatar
unknown committed
2096 2097 2098

# Already-done: strcasecmp
AC_CHECK_FUNCS(lstat putenv select setenv setlocale strcoll tcgetattr)
2099
AC_CHECK_FUNCS(nl_langinfo)
unknown's avatar
unknown committed
2100 2101 2102 2103 2104 2105 2106 2107

AC_STAT_MACROS_BROKEN
MYSQL_SIGNAL_CHECK
MYSQL_CHECK_GETPW_FUNCS
MYSQL_HAVE_TIOCGWINSZ
MYSQL_HAVE_FIONREAD
MYSQL_HAVE_TIOCSTAT
MYSQL_STRUCT_DIRENT_D_INO
2108
MYSQL_STRUCT_DIRENT_D_NAMLEN
unknown's avatar
unknown committed
2109
MYSQL_TYPE_SIGHANDLER
unknown's avatar
unknown committed
2110
MYSQL_CHECK_MULTIBYTE
unknown's avatar
unknown committed
2111
if test "$with_named_curses" = "no"
unknown's avatar
unknown committed
2112 2113 2114 2115 2116 2117 2118
then
  MYSQL_CHECK_LIB_TERMCAP
else
  TERMCAP_LIB="$with_named_curses"
fi
AC_SUBST(TERMCAP_LIB)

2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131
# Check if the termcap function 'tgoto' is already declared in
# system header files or if it need to be declared locally
AC_CHECK_DECLS(tgoto,,,[
#ifdef HAVE_CURSES_H
# include <curses.h>
#elif HAVE_NCURSES_H
# include <ncurses.h>
#endif
#ifdef HAVE_TERM_H
# include <term.h>
#endif
])

2132 2133 2134 2135 2136 2137 2138 2139 2140
LIBEDIT_LOBJECTS=""
AC_CHECK_FUNC(strunvis, ,[LIBEDIT_LOBJECTS="$LIBEDIT_LOBJECTS unvis.o"])
AC_CHECK_FUNC(strvis,   ,[LIBEDIT_LOBJECTS="$LIBEDIT_LOBJECTS vis.o"])
AC_CHECK_FUNC(strlcpy,  ,[LIBEDIT_LOBJECTS="$LIBEDIT_LOBJECTS strlcpy.o"])
AC_CHECK_FUNC(strlcat,  ,[LIBEDIT_LOBJECTS="$LIBEDIT_LOBJECTS strlcat.o"])
AC_CHECK_FUNC(fgetln,   ,[LIBEDIT_LOBJECTS="$LIBEDIT_LOBJECTS fgetln.o"])
AC_SUBST(LIBEDIT_LOBJECTS)
enable_readline="yes"

2141
# End of readline/libedit stuff
unknown's avatar
unknown committed
2142 2143 2144
#########################################################################

dnl Checks for library functions.
unknown's avatar
unknown committed
2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155

#
# The following code disables intrinsic function support while we test for
# library functions.  This is to avoid configure problems with Intel ecc
# compiler

ORG_CFLAGS="$CFLAGS"
if test "$GCC" != "yes"; then
  AC_SYS_COMPILER_FLAG(-nolib_inline,nolib_inline,CFLAGS,[],[])
fi

unknown's avatar
unknown committed
2156
#AC_FUNC_MMAP
unknown's avatar
unknown committed
2157 2158 2159 2160 2161
AC_TYPE_SIGNAL
MYSQL_TYPE_QSORT
AC_FUNC_UTIME_NULL
AC_FUNC_VPRINTF

2162
AC_CHECK_FUNCS(alarm bfill bmove bsearch bzero \
2163
  chsize cuserid fchmod fcntl \
2164
  fdatasync fesetround finite fpresetsticky fpsetmask fsync ftruncate \
unknown's avatar
unknown committed
2165
  getcwd gethostbyaddr_r gethostbyname_r getpass getpassphrase getpwnam \
2166 2167 2168
  getpwuid getrlimit getrusage getwd index initgroups isnan \
  localtime_r gethrtime gmtime_r \
  locking longjmp lrand48 madvise mallinfo memcpy memmove \
unknown's avatar
unknown committed
2169
  mkstemp mlockall perror poll pread pthread_attr_create mmap mmap64 getpagesize \
Konstantin Osipov's avatar
Konstantin Osipov committed
2170
  pthread_attr_getstacksize pthread_attr_setstacksize pthread_condattr_create \
2171
  pthread_getsequence_np pthread_key_delete pthread_rwlock_rdlock \
2172
  pthread_sigmask \
Konstantin Osipov's avatar
Konstantin Osipov committed
2173
  readlink realpath rename rint rwlock_init setupterm \
unknown's avatar
unknown committed
2174
  shmget shmat shmdt shmctl sigaction sigemptyset sigaddset \
Marc Alff's avatar
Marc Alff committed
2175
  sighold sigset sigthreadmask port_create sleep thr_yield \
unknown's avatar
unknown committed
2176 2177
  snprintf socket stpcpy strcasecmp strerror strsignal strnlen strpbrk strstr \
  strtol strtoll strtoul strtoull tell tempnam thr_setconcurrency vidattr \
Staale Smedseng's avatar
Staale Smedseng committed
2178
  posix_fallocate backtrace backtrace_symbols backtrace_symbols_fd printstack)
unknown's avatar
unknown committed
2179

2180 2181 2182 2183
#
#
#
case "$target" in
unknown's avatar
unknown committed
2184
 *-*-aix4* | *-*-sco*)
2185 2186
	# (grr) aix 4.3 has a stub for clock_gettime, (returning ENOSYS)
	# and using AC_TRY_RUN is hard when cross-compiling
unknown's avatar
unknown committed
2187 2188
	# We also disable for SCO for the time being, the headers for the
	# thread library we use conflicts with other headers.
2189 2190 2191 2192 2193
    ;;
 *) AC_CHECK_FUNCS(clock_gettime)
    ;;
esac

2194 2195 2196 2197 2198
case "$mysql_cv_sys_os" in
 OS400) # i5/OS (OS/400) emits a SIGILL (Function not implemented) when
        # unsupported priority values are passed to pthread_setschedprio.
        # Since the only supported value is 1, treat it as inexistent.
    ;;
2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217
 SunOS) # Bug#42599 error: `pthread_setschedprio' was not declared in this scope
        # In some installations, the pthread.h header used by GCC does not
        # declare the pthread_setscheprio prototype, but the function is
        # implemented. Since the function is used in C++ code, ensure that
        # the function prototype is present.
     AC_MSG_CHECKING([whether pthread_setschedprio is declared])
     AC_LANG_PUSH([C++])
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM([#include <pthread.h>],
                      [(void)(pthread_setschedprio);])],
       [ac_cv_func_pthread_setschedprio=yes],
       [ac_cv_func_pthread_setschedprio=no])
     AC_LANG_POP([C++])
     AC_MSG_RESULT([$ac_cv_func_pthread_setschedprio])
     if test "$ac_cv_func_pthread_setschedprio" = yes; then
       AC_DEFINE(HAVE_PTHREAD_SETSCHEDPRIO, 1,
                 [Define to 1 if you have the `pthread_setschedprio' function.])
     fi
    ;;
2218 2219 2220 2221
 *) AC_CHECK_FUNCS(pthread_setschedprio)
    ;;
esac

2222 2223 2224
# Check that isinf() is available in math.h and can be used in both C and C++ 
# code
AC_MSG_CHECKING(for isinf in <math.h>)
2225
AC_TRY_LINK([#include <math.h>], [float f = 0.0; int r = isinf(f); return r],
2226
  AC_MSG_RESULT(yes)
2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247
  AC_MSG_CHECKING(whether isinf() is safe to use in C code)
  AC_TRY_RUN([
#include <math.h>
int main()
{
  double a= 10.0;
  double b= 1e308;

  return !isinf(a * b);
}
],
  [AC_MSG_RESULT(yes)],
  [AC_MSG_RESULT(no)
   AC_DEFINE([HAVE_BROKEN_ISINF], [1],
             [Define to 1 if isinf() uses 80-bit register for intermediate values])
  ],
  [
# Let's be optimistic when cross-compiling, since the only compiler known
# to be affected by this isinf() bug is GCC 4.3 on 32-bit x86.
   AC_MSG_RESULT([[cross-compiling, assuming 'yes']])
  ])
2248 2249 2250 2251 2252 2253 2254 2255 2256
  AC_MSG_CHECKING(whether isinf() can be used in C++ code)
  AC_LANG_SAVE
  AC_LANG_CPLUSPLUS
  AC_TRY_LINK([#include <math.h>], [float f = 0.0; int r = isinf(f); return r],
    AC_MSG_RESULT(yes)
    AC_DEFINE(HAVE_ISINF, [1], [isinf() macro or function]),
    AC_MSG_RESULT(no))
  AC_LANG_RESTORE,
  AC_MSG_RESULT(no))
unknown's avatar
unknown committed
2257
 
unknown's avatar
unknown committed
2258 2259
CFLAGS="$ORG_CFLAGS"

unknown's avatar
unknown committed
2260 2261
# Sanity check: We chould not have any fseeko symbol unless
# large_file_support=yes
unknown's avatar
unknown committed
2262
AC_CHECK_FUNC(fseeko,
2263
[if test "$large_file_support" = no -a "$TARGET_LINUX" = "true";
unknown's avatar
unknown committed
2264
then
unknown's avatar
unknown committed
2265
  AC_MSG_ERROR("Found fseeko symbol but large_file_support is not enabled!")
unknown's avatar
unknown committed
2266 2267 2268 2269 2270 2271 2272 2273
fi]
)

# Check definition of gethostbyaddr_r (glibc2 defines this with 8 arguments)
ac_save_CXXFLAGS="$CXXFLAGS"
AC_CACHE_CHECK([style of gethost* routines], mysql_cv_gethost_style,
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
unknown's avatar
unknown committed
2274

2275 2276 2277 2278 2279 2280 2281
# Test whether madvise() is declared in C++ code -- it is not on some
# systems, such as Solaris
AC_CHECK_DECLS(madvise, [], [], [#if HAVE_SYS_MMAN_H
#include <sys/types.h>
#include <sys/mman.h>
#endif])

unknown's avatar
unknown committed
2282
# Do not treat warnings as errors if we are linking against other libc
2283 2284
# this is to work around gcc not being permissive on non-system includes
# with respect to ANSI C++
unknown's avatar
unknown committed
2285 2286
# We also remove the -fbranch-probabilities option as this will give warnings
# about not profiled code, which confuses configure
unknown's avatar
unknown committed
2287 2288 2289
# We also must remove -W and -Wcheck which on icc produces warnings that
# we don't want to catch with -Werror

unknown's avatar
unknown committed
2290
if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no"
unknown's avatar
unknown committed
2291
then
unknown's avatar
unknown committed
2292
  CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed -e 's/-fbranch-probabilities//; s/-Wall//; s/-ansi//; s/-pedantic//; s/-Wcheck//'`
unknown's avatar
unknown committed
2293
fi
unknown's avatar
unknown committed
2294

unknown's avatar
unknown committed
2295
AC_TRY_COMPILE(
unknown's avatar
unknown committed
2296
[#undef inline
unknown's avatar
unknown committed
2297
#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT)
unknown's avatar
unknown committed
2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313
#define _REENTRANT
#endif
#include <pthread.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>],
[int skr;
 struct hostent *foo = gethostbyaddr_r((const char *) 0,
  0, 0, (struct hostent *) 0, (char *) NULL,  0, &skr); return (foo == 0);],
mysql_cv_gethost_style=solaris, mysql_cv_gethost_style=other))
AC_LANG_RESTORE
CXXFLAGS="$ac_save_CXXFLAGS"
if test "$mysql_cv_gethost_style" = "solaris"
then
2314 2315
  AC_DEFINE([HAVE_SOLARIS_STYLE_GETHOST], [1],
            [Solaris define gethostbyaddr_r with 7 arguments. glibc2 defines this with 8 arguments])
unknown's avatar
unknown committed
2316 2317 2318 2319 2320 2321
fi

#---START: Used in for client configure

# Check definition of gethostbyname_r (glibc2.0.100 is different from Solaris)
ac_save_CXXFLAGS="$CXXFLAGS"
2322
AC_CACHE_CHECK([style of gethostbyname_r routines], mysql_cv_gethostbyname_style,
unknown's avatar
unknown committed
2323 2324
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
2325
if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no"
unknown's avatar
unknown committed
2326
then
unknown's avatar
unknown committed
2327
  CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed -e 's/-fbranch-probabilities//; s/-Wall//; s/-ansi//; s/-pedantic//; s/-Wcheck//'`
unknown's avatar
unknown committed
2328 2329
fi
AC_TRY_COMPILE(
unknown's avatar
unknown committed
2330
[#undef inline
unknown's avatar
unknown committed
2331
#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT)
unknown's avatar
unknown committed
2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343
#define _REENTRANT
#endif
#include <pthread.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>],
[int skr;

 skr = gethostbyname_r((const char *) 0,
  (struct hostent*) 0, (char*) 0, 0, (struct hostent **) 0, &skr);],
2344
mysql_cv_gethostbyname_style=glibc2, mysql_cv_gethostbyname_style=other))
unknown's avatar
unknown committed
2345 2346
AC_LANG_RESTORE
CXXFLAGS="$ac_save_CXXFLAGS"
2347
if test "$mysql_cv_gethostbyname_style" = "glibc2"
unknown's avatar
unknown committed
2348
then
2349 2350
  AC_DEFINE([HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE], [1],
            [Solaris define gethostbyname_r with 5 arguments. glibc2 defines this with 6 arguments])
unknown's avatar
unknown committed
2351 2352 2353 2354
fi

# Check 3rd argument of getthostbyname_r
ac_save_CXXFLAGS="$CXXFLAGS"
2355
AC_CACHE_CHECK([3 argument to gethostbyname_r routines], mysql_cv_gethostbyname_arg,
unknown's avatar
unknown committed
2356 2357
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
2358
if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no"
unknown's avatar
unknown committed
2359
then
unknown's avatar
unknown committed
2360
  CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed -e 's/-fbranch-probabilities//; s/-Wall//; s/-ansi//; s/-pedantic//; s/-Wcheck//'`
unknown's avatar
unknown committed
2361 2362
fi
AC_TRY_COMPILE(
unknown's avatar
unknown committed
2363
[#undef inline
unknown's avatar
unknown committed
2364
#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT)
unknown's avatar
unknown committed
2365 2366 2367 2368 2369 2370 2371 2372 2373 2374
#define _REENTRANT
#endif
#include <pthread.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>],
[int skr;

unknown's avatar
unknown committed
2375
 skr = gethostbyname_r((const char *) 0, (struct hostent*) 0, (struct hostent_data*) 0);],
2376
mysql_cv_gethostbyname_arg=hostent_data, mysql_cv_gethostbyname_arg=char))
unknown's avatar
unknown committed
2377 2378
AC_LANG_RESTORE
CXXFLAGS="$ac_save_CXXFLAGS"
2379
if test "$mysql_cv_gethostbyname_arg" = "hostent_data"
unknown's avatar
unknown committed
2380
then
2381
  AC_DEFINE([HAVE_GETHOSTBYNAME_R_RETURN_INT], [1],
2382
            [In OSF 4.0f the 3'd argument to gethostbyname_r is hostent_data *])
unknown's avatar
unknown committed
2383 2384 2385
fi


2386 2387 2388
# Check definition of pthread_getspecific
AC_CACHE_CHECK("args to pthread_getspecific", mysql_cv_getspecific_args,
AC_TRY_COMPILE(
unknown's avatar
unknown committed
2389
[#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT)
unknown's avatar
unknown committed
2390 2391 2392 2393 2394 2395 2396 2397 2398
#define _REENTRANT
#endif
#define _POSIX_PTHREAD_SEMANTICS 
#include <pthread.h> ],
[ void *pthread_getspecific(pthread_key_t key);
pthread_getspecific((pthread_key_t) NULL); ],
mysql_cv_getspecific_args=POSIX, mysql_cv_getspecific_args=other))
  if test "$mysql_cv_getspecific_args" = "other"
  then
2399 2400
    AC_DEFINE([HAVE_NONPOSIX_PTHREAD_GETSPECIFIC], [1],
              [For some non posix threads])
unknown's avatar
unknown committed
2401 2402 2403 2404 2405
  fi

  # Check definition of pthread_mutex_init
  AC_CACHE_CHECK("args to pthread_mutex_init", mysql_cv_mutex_init_args,
  AC_TRY_COMPILE(
unknown's avatar
unknown committed
2406
[#if !defined(SCO) && !defined(__osf__)
unknown's avatar
unknown committed
2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417
#define _REENTRANT
#endif
#define _POSIX_PTHREAD_SEMANTICS 
#include <pthread.h> ],
[ 
  pthread_mutexattr_t attr;
  pthread_mutex_t mp;
  pthread_mutex_init(&mp,&attr); ],
mysql_cv_mutex_init_args=POSIX, mysql_cv_mutex_init_args=other))
  if test "$mysql_cv_mutex_init_args" = "other"
  then
2418 2419
    AC_DEFINE([HAVE_NONPOSIX_PTHREAD_MUTEX_INIT], [1],
              [For some non posix threads])
unknown's avatar
unknown committed
2420 2421 2422 2423 2424 2425 2426
  fi
#---END:

#---START: Used in for client configure
# Check definition of readdir_r
AC_CACHE_CHECK("args to readdir_r", mysql_cv_readdir_r,
AC_TRY_LINK(
unknown's avatar
unknown committed
2427
[#if !defined(SCO) && !defined(__osf__)
unknown's avatar
unknown committed
2428 2429 2430 2431 2432 2433 2434 2435 2436 2437
#define _REENTRANT
#endif
#define _POSIX_PTHREAD_SEMANTICS 
#include <pthread.h>
#include <dirent.h>],
[ int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
readdir_r((DIR *) NULL, (struct dirent *) NULL, (struct dirent **) NULL); ],
mysql_cv_readdir_r=POSIX, mysql_cv_readdir_r=other))
if test "$mysql_cv_readdir_r" = "POSIX"
then
2438
  AC_DEFINE([HAVE_READDIR_R], [1], [POSIX readdir_r])
unknown's avatar
unknown committed
2439 2440
fi

2441
# Check definition of posix sigwait()
unknown's avatar
unknown committed
2442 2443
AC_CACHE_CHECK("style of sigwait", mysql_cv_sigwait,
AC_TRY_LINK(
unknown's avatar
unknown committed
2444
[#if !defined(SCO) && !defined(__osf__)
unknown's avatar
unknown committed
2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457
#define _REENTRANT
#endif
#define _POSIX_PTHREAD_SEMANTICS 
#include <pthread.h>
#include <signal.h>],
[#ifndef _AIX
sigset_t set;
int sig;
sigwait(&set,&sig);
#endif],
mysql_cv_sigwait=POSIX, mysql_cv_sigwait=other))
if test "$mysql_cv_sigwait" = "POSIX"
then
2458
  AC_DEFINE([HAVE_SIGWAIT], [1], [POSIX sigwait])
unknown's avatar
unknown committed
2459 2460 2461 2462 2463
fi

if test "$mysql_cv_sigwait" != "POSIX"
then
unset mysql_cv_sigwait
2464
# Check definition of posix sigwait()
unknown's avatar
unknown committed
2465 2466
AC_CACHE_CHECK("style of sigwait", mysql_cv_sigwait,
AC_TRY_LINK(
unknown's avatar
unknown committed
2467
[#if !defined(SCO) && !defined(__osf__)
unknown's avatar
unknown committed
2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478
#define _REENTRANT
#endif
#define _POSIX_PTHREAD_SEMANTICS 
#include <pthread.h>
#include <signal.h>],
[sigset_t set;
int sig;
sigwait(&set);],
mysql_cv_sigwait=NONPOSIX, mysql_cv_sigwait=other))
if test "$mysql_cv_sigwait" = "NONPOSIX"
then
2479
  AC_DEFINE([HAVE_NONPOSIX_SIGWAIT], [1], [sigwait with one argument])
unknown's avatar
unknown committed
2480 2481 2482 2483
fi
fi
#---END:

2484 2485
#Check for x86 PAUSE instruction
AC_MSG_CHECKING("for x86 PAUSE instruction")
2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499
# We have to actually try running the test program, because of a bug
# in Solaris on x86_64, where it wrongly reports that PAUSE is not
# supported when trying to run an application.  See
# http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6478684
AC_TRY_RUN([
    int main() {
      __asm__ __volatile__ ("pause");
      return 0;
    }
  ],
  [x86_pause_exists=yes],
  [x86_pause_exists=no],
  [x86_pause_exists=no]  # Cross-compile, assume no PAUSE instruction
)
2500 2501 2502 2503 2504 2505 2506 2507 2508 2509
AC_TRY_RUN([
    int main() {
      __asm__ __volatile__ ("rep; nop");
      return 0;
    }
  ],
  [x86_fake_pause_exists=yes],
  [x86_fake_pause_exists=no],
  [x86_fake_pause_exists=no]  # Cross-compile, assume no x86 NOP instruction
)
2510 2511 2512
if test "$x86_pause_exists" = "yes"
then
  AC_DEFINE([HAVE_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist])
2513 2514 2515 2516 2517
else
  if test "$x86_fake_pause_exists" = "yes"
  then
    AC_DEFINE([HAVE_FAKE_PAUSE_INSTRUCTION], [1], [Does x86 NOP instruction exist])
  fi
2518 2519
fi

unknown's avatar
unknown committed
2520 2521 2522
# Check if pthread_attr_setscope() exists
AC_CACHE_CHECK("for pthread_attr_setscope", mysql_cv_pthread_attr_setscope,
AC_TRY_LINK(
unknown's avatar
unknown committed
2523
[#if !defined(SCO) && !defined(__osf__)
unknown's avatar
unknown committed
2524 2525 2526 2527 2528 2529 2530 2531 2532
#define _REENTRANT
#endif
#define _POSIX_PTHREAD_SEMANTICS 
#include <pthread.h>],
[pthread_attr_t thr_attr;
pthread_attr_setscope(&thr_attr,0);],
mysql_cv_pthread_attr_setscope=yes, mysql_cv_pthread_attr_setscope=no))
if test "$mysql_cv_pthread_attr_setscope" = "yes"
then
2533
  AC_DEFINE([HAVE_PTHREAD_ATTR_SETSCOPE], [1], [pthread_attr_setscope])
unknown's avatar
unknown committed
2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548
fi

# Check for bad includes
AC_MSG_CHECKING("can netinet files be included")
AC_TRY_COMPILE(
[#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in_systm.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>],
[ printf("1\n"); ],
netinet_inc=yes, netinet_inc=no)
if test "$netinet_inc" = "no"
then
2549
  AC_DEFINE([HAVE_BROKEN_NETINET_INCLUDES], [1], [Can netinet be included])
unknown's avatar
unknown committed
2550 2551 2552
fi
AC_MSG_RESULT("$netinet_inc")

2553 2554 2555 2556 2557 2558 2559 2560 2561 2562
AC_CACHE_CHECK([support for weak symbols], mysql_cv_weak_symbol,
[AC_TRY_LINK([],[
  extern void __attribute__((weak)) foo(void);
], [mysql_cv_weak_symbol=yes], [mysql_cv_weak_symbol=no])])

if test "x$mysql_cv_weak_symbol" = xyes; then
  AC_DEFINE(HAVE_WEAK_SYMBOL, 1,
            [Define to 1 if compiler supports weak symbol attribute.])
fi

2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573
AC_CACHE_CHECK([whether __bss_start is defined], mysql_cv_bss_start,
[AC_TRY_LINK([],[
  extern char *__bss_start;
  return __bss_start ? 1 : 0;
], [mysql_cv_bss_start=yes], [mysql_cv_bss_start=no])])

if test "x$mysql_cv_bss_start" = xyes; then
  AC_DEFINE(HAVE_BSS_START, 1,
            [Define to 1 if compiler defines __bss_start.])
fi

unknown's avatar
unknown committed
2574 2575 2576
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_CHECK_HEADERS(cxxabi.h)
2577
AC_CACHE_CHECK([for abi::__cxa_demangle], mysql_cv_cxa_demangle,
unknown's avatar
unknown committed
2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588
[AC_TRY_LINK([#include <cxxabi.h>], [
  char *foo= 0; int bar= 0;
  foo= abi::__cxa_demangle(foo, foo, 0, &bar);
], [mysql_cv_cxa_demangle=yes], [mysql_cv_cxa_demangle=no])])
AC_LANG_RESTORE

if test "x$mysql_cv_cxa_demangle" = xyes; then
  AC_DEFINE(HAVE_ABI_CXA_DEMANGLE, 1,
            [Define to 1 if you have the `abi::__cxa_demangle' function.])
fi

unknown's avatar
unknown committed
2589 2590 2591 2592 2593 2594 2595
#--------------------------------------------------------------------
# Check for requested features
#--------------------------------------------------------------------

MYSQL_CHECK_BIG_TABLES
MYSQL_CHECK_MAX_INDEXES
MYSQL_CHECK_VIO
2596
MYSQL_CHECK_SSL
unknown's avatar
unknown committed
2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608

#--------------------------------------------------------------------
# Declare our plugin modules
# Has to be done late, as the plugin may need to check for existence of
# functions tested above
#--------------------------------------------------------------------

MYSQL_STORAGE_ENGINE(partition, partition, [Partition Support],
        [MySQL Partitioning Support], [max,max-no-ndb])

dnl -- ndbcluster requires partition to be enabled

2609
MYSQL_CONFIGURE_PLUGINS([default])
unknown's avatar
unknown committed
2610

unknown's avatar
unknown committed
2611 2612
# Only build client code?
AC_ARG_WITH(server,
2613
    [  --without-server        Only build the client.],
unknown's avatar
unknown committed
2614 2615 2616 2617
    [with_server=$withval],
    [with_server=yes]
)

2618 2619 2620 2621 2622 2623
AC_ARG_WITH(embedded-server,
    [  --with-embedded-server  Build the embedded server (libmysqld).],
    [with_embedded_server=$withval],
    [with_embedded_server=no]
)

unknown's avatar
unknown committed
2624
AC_ARG_WITH(query_cache,
2625
    [  --without-query-cache   Do not build query cache.],
unknown's avatar
unknown committed
2626 2627
    [with_query_cache=$withval],
    [with_query_cache=yes]
unknown's avatar
unknown committed
2628 2629
)

unknown's avatar
unknown committed
2630
if test "$with_query_cache" = "yes"
unknown's avatar
unknown committed
2631
then
2632
  AC_DEFINE([HAVE_QUERY_CACHE], [1], [If we want to have query cache])
unknown's avatar
unknown committed
2633 2634
fi

2635 2636 2637 2638 2639 2640 2641 2642
AC_ARG_WITH(geometry,
    [  --without-geometry      Do not build geometry-related parts.],
    [with_geometry=$withval],
    [with_geometry=yes]
)

if test "$with_geometry" = "yes"
then
2643 2644
  AC_DEFINE([HAVE_SPATIAL], [1], [Spatial extentions])
  AC_DEFINE([HAVE_RTREE_KEYS], [1], [RTree keys])
2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656
fi

AC_ARG_WITH(embedded_privilege_control,
    [  --with-embedded-privilege-control
                          Build parts to check user's privileges.
			  Only affects embedded library.],
    [with_embedded_privilege_control=$withval],
    [with_embedded_privilege_control=no]
)

if test "$with_embedded_privilege_control" = "yes"
then
2657 2658
  AC_DEFINE([HAVE_EMBEDDED_PRIVILEGE_CONTROL], [1],
            [Access checks in embedded library])
2659 2660
fi

2661
#MYSQL_CHECK_CPU
2662 2663 2664 2665 2666

libmysqld_dirs=
if test "$with_embedded_server" = "yes"
then
  libmysqld_dirs=libmysqld
2667

2668 2669 2670 2671 2672 2673 2674 2675 2676
  # We can't build embedded library without building the server, because
  # we depend on libmysys, libmystrings, libmyisam, etc.
  with_server=yes
fi
# XXX: We need to add @libmysqld_extra_libs@ (or whatever) so that
# mysql_config --libmysqld-libs will print out something like
# -L/path/to/lib/mysql -lmysqld -lmyisam -lmysys -lmystrings -ldbug ...
AC_SUBST([libmysqld_dirs])

unknown's avatar
unknown committed
2677 2678
# Shall we build the docs?
AC_ARG_WITH(docs,
2679
    [  --without-docs          Skip building of the documentation.],
unknown's avatar
unknown committed
2680 2681 2682 2683 2684 2685 2686
    [with_docs=$withval],
    [with_docs=yes]
)

if test "$with_docs" = "yes"
then
  docs_dirs="Docs"
unknown's avatar
unknown committed
2687 2688 2689
  if test -f "$srcdir/Docs/manual.chm" ; then
    extra_docs="manual.chm"
  fi
unknown's avatar
unknown committed
2690 2691
else
  docs_dirs=""
unknown's avatar
unknown committed
2692
  extra_docs=""
unknown's avatar
unknown committed
2693 2694
fi
AC_SUBST(docs_dirs)
unknown's avatar
unknown committed
2695
AC_SUBST(extra_docs)
unknown's avatar
unknown committed
2696

2697 2698 2699 2700 2701 2702 2703
# Shall we build the man pages?
AC_ARG_WITH(man,
    [  --without-man          Skip building of the man pages.],
    [with_man=$withval],
    [with_man=yes]
)

unknown's avatar
unknown committed
2704 2705
# Don't build readline, i have it already
AC_ARG_WITH(readline,
2706
    [  --without-readline      Use system readline instead of bundled copy.],
unknown's avatar
unknown committed
2707
    [ with_readline=$withval ],
2708 2709 2710 2711 2712 2713 2714
    [ with_readline=undefined ]
    )
    
AC_ARG_WITH(libedit,
    [  --without-libedit       Use system libedit instead of bundled copy.],
    [ with_libedit=$withval ],
    [ with_libedit=undefined ]
unknown's avatar
unknown committed
2715
    )
unknown's avatar
unknown committed
2716 2717

if test "$with_readline/$with_libedit" = "undefined/undefined" -a ! -e "$srcdir/cmd-line-utils"
2718 2719 2720 2721
then
  with_readline=no
  with_libedit=no
fi
2722

unknown's avatar
unknown committed
2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736
#
# We support next variants of compilation:
#                              --with-readline
#                |       yes      |  no  |               undefined
# --with-libedit |                |      |
# ---------------+----------------+------+----------------------------------
#       yes      |      ERROR!    |   use libedit from mysql sources
# ---------------+----------------+------+----------------------------------
#       no       | use readline   | use system readline or external libedit
#                | from mysql     | according to results of m4 tests
# ---------------+ sources (if it +      +----------------------------------
#    undefined   | is presented)  |      | use libedit from mysql sources
                   

2737 2738
compile_readline="no"
compile_libedit="no"
2739 2740

if [test "$with_libedit" = "yes"] && [test "$with_readline" = "yes"]
unknown's avatar
unknown committed
2741
then
2742 2743 2744
    AC_MSG_ERROR([You can not use --with-readline and --with-libedit at the same time, please choose one of it])
fi

unknown's avatar
unknown committed
2745 2746 2747 2748 2749
readline_topdir=""
readline_basedir=""
readline_dir=""
readline_h_ln_cmd=""
readline_link=""
2750
want_to_use_readline="no"
unknown's avatar
unknown committed
2751

2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780
if [test "$with_libedit" = "yes"] || [test "$with_libedit" = "undefined"] && [test "$with_readline" = "undefined"]
then
    readline_topdir="cmd-line-utils"
    readline_basedir="libedit"
    readline_dir="$readline_topdir/$readline_basedir"
    readline_link="\$(top_builddir)/cmd-line-utils/libedit/libedit.a"
    readline_h_ln_cmd="\$(LN) -s \$(top_srcdir)/cmd-line-utils/libedit/readline readline"
    compile_libedit=yes
    AC_DEFINE_UNQUOTED(HAVE_HIST_ENTRY, 1)
    AC_DEFINE_UNQUOTED(USE_LIBEDIT_INTERFACE, 1)
elif test "$with_readline" = "yes"
then
    readline_topdir="cmd-line-utils"
    readline_basedir="readline"
    readline_dir="$readline_topdir/$readline_basedir"
    readline_link="\$(top_builddir)/cmd-line-utils/readline/libreadline.a"
    readline_h_ln_cmd="\$(LN) -s \$(top_srcdir)/cmd-line-utils/readline readline"
    compile_readline=yes
    want_to_use_readline="yes"
    AC_DEFINE_UNQUOTED(USE_NEW_READLINE_INTERFACE, 1)
else
    # Use system readline library
    AC_LANG_SAVE
    AC_LANG_CPLUSPLUS
    MYSQL_CHECK_LIBEDIT_INTERFACE
    MYSQL_CHECK_NEW_RL_INTERFACE
    MYSQL_CHECK_READLINE_DECLARES_HIST_ENTRY
    AC_LANG_RESTORE
    if [test "$mysql_cv_new_rl_interface" = "yes"] && [test -d "$srcdir/cmd-line-utils/readline"]
2781
    then
2782 2783 2784 2785 2786
        # Use the new readline interface, but only if the package includes a bundled libreadline
        # this way we avoid linking commercial source with GPL readline
        readline_link="-lreadline"
        want_to_use_readline="yes"
    elif [test "$mysql_cv_libedit_interface" = "yes"]
2787
    then
2788 2789
        # Use libedit
        readline_link="-ledit"
2790
    else
2791 2792 2793
        AC_MSG_ERROR([Could not find system readline or libedit libraries
          Use --with-readline or --with-libedit to use the bundled
          versions of libedit or readline])
2794
    fi
2795
fi
2796

2797 2798 2799 2800 2801 2802 2803
# if there is no readline, but we want to build with readline, we fail
if [test "$want_to_use_readline" = "yes"] && [test ! -d "$srcdir/cmd-line-utils/readline"]
then
    AC_MSG_ERROR([This commercially licensed MySQL source package can't
          be built with libreadline. Please use --with-libedit to use
          the bundled version of libedit instead.])
fi
2804

unknown's avatar
unknown committed
2805
AC_SUBST(readline_dir)
unknown's avatar
unknown committed
2806 2807
AC_SUBST(readline_topdir)
AC_SUBST(readline_basedir)
unknown's avatar
unknown committed
2808
AC_SUBST(readline_link)
2809
AC_SUBST(readline_h_ln_cmd)
unknown's avatar
unknown committed
2810 2811 2812



2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831
# Include man pages, if desired, adapted to the configured parts.
if test X"$with_man" = Xyes
then
  # First, create the list of all man pages present.
  MANLISTFIL=manlist.$$
  TMPLISTFIL=`echo $MANLISTFIL | sed -e 's/manlist/tmplist/'`
  if test -f $MANLISTFIL -o -f $TMPLISTFIL
  then
    echo "Temp file '$MANLISTFIL' or '$TMPLISTFIL' already exists in '`pwd`' - aborting"
    exit 1
  fi
  touch $MANLISTFIL $TMPLISTFIL

  ls $srcdir/man/*.[[18]] > $MANLISTFIL

  # Then, remove all those pages from the list which are specific to parts
  # (table handlers, features, ...) which are not configured in this run.
  AC_MSG_CHECKING("for man pages to remove")
  MAN_DROP="dropping"
2832
  if test X"$with_plugin_ndbcluster" != Xyes
2833 2834 2835 2836 2837 2838 2839 2840 2841
  then
    MAN_DROP="$MAN_DROP ndbcluster"
    grep -v '/ndb' $MANLISTFIL > $TMPLISTFIL ; mv -f $TMPLISTFIL $MANLISTFIL
  fi
  if test X"$with_embedded_server" != Xyes
  then
    MAN_DROP="$MAN_DROP embedded"
    grep -v 'embedded' $MANLISTFIL > $TMPLISTFIL ; mv -f $TMPLISTFIL $MANLISTFIL
  fi
2842
  if test X"$with_plugin_innobase" != Xyes
2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856
  then
    MAN_DROP="$MAN_DROP innodb"
    grep -v 'inno' $MANLISTFIL > $TMPLISTFIL ; mv -f $TMPLISTFIL $MANLISTFIL
  fi
  AC_MSG_RESULT([$MAN_DROP])

  # Finally, split the man pages into sections 1 and 8.
  # Get rid of line breaks.
  man1_files=`sed -n -e '/\.1$/s/^.*man\///p' <$MANLISTFIL`
  man8_files=`sed -n -e '/\.8$/s/^.*man\///p' <$MANLISTFIL`

  man_dirs="man"
  man1_files=`echo $man1_files`
  man8_files=`echo $man8_files`
2857
  rm -f $MANLISTFIL $TMPLISTFIL
2858 2859 2860 2861 2862 2863 2864 2865 2866
else
  man_dirs=""
  man1_files=""
  man8_files=""
fi
AC_SUBST(man_dirs)
AC_SUBST(man1_files)
AC_SUBST(man8_files)

unknown's avatar
unknown committed
2867 2868
# If we have threads generate some library functions and test programs
sql_server_dirs=
2869
sql_server=
unknown's avatar
unknown committed
2870
server_scripts=
2871 2872 2873

dnl This probably should be cleaned up more - for now the threaded
dnl client is just using plain-old libs.
Joerg Bruehe's avatar
Joerg Bruehe committed
2874
sql_client_dirs="strings mysys dbug extra regex libmysql"
2875

unknown's avatar
unknown committed
2876 2877
AM_CONDITIONAL(THREAD_SAFE_CLIENT, test "$THREAD_SAFE_CLIENT" != "no")

2878 2879
if test "$THREAD_SAFE_CLIENT" != "no"
then
2880
  sql_client_dirs="$sql_client_dirs libmysql_r"
unknown's avatar
unknown committed
2881
  AC_DEFINE([THREAD_SAFE_CLIENT], [1], [Should the client be thread safe])
2882
fi
2883
sql_client_dirs="$sql_client_dirs client"
unknown's avatar
unknown committed
2884

2885
CLIENT_LIBS="$NON_THREADED_LIBS $openssl_libs $ZLIB_LIBS $STATIC_NSS_FLAGS"
unknown's avatar
unknown committed
2886

2887
AC_SUBST(CLIENT_LIBS)
2888
AC_SUBST(CLIENT_THREAD_LIBS)
2889 2890
AC_SUBST(NON_THREADED_LIBS)
AC_SUBST(STATIC_NSS_FLAGS)
2891 2892
AC_SUBST(sql_client_dirs)

Joerg Bruehe's avatar
Joerg Bruehe committed
2893
if test "$with_server" != "no" -o "$THREAD_SAFE_CLIENT" != "no"
unknown's avatar
unknown committed
2894
then
2895 2896
  AC_DEFINE([THREAD], [1],
            [Define if you want to have threaded code. This may be undef on client code])
unknown's avatar
unknown committed
2897
  # Avoid _PROGRAMS names
2898
  THREAD_LOBJECTS="thr_alarm.o thr_lock.o thr_mutex.o thr_rwlock.o my_pthread.o my_thr_init.o mf_keycache.o"
unknown's avatar
unknown committed
2899
  AC_SUBST(THREAD_LOBJECTS)
Joerg Bruehe's avatar
Joerg Bruehe committed
2900 2901 2902 2903 2904
fi
AM_CONDITIONAL(NEED_THREAD, test "$with_server" != "no" -o "$THREAD_SAFE_CLIENT" != "no")

if test "$with_server" != "no"
then
unknown's avatar
unknown committed
2905
  server_scripts="mysqld_safe mysql_install_db"
Joerg Bruehe's avatar
Joerg Bruehe committed
2906
  sql_server_dirs="strings mysys dbug extra regex storage plugin"
2907

unknown's avatar
unknown committed
2908
  sql_server="vio sql"
unknown's avatar
unknown committed
2909
fi
unknown's avatar
unknown committed
2910

2911 2912 2913
# "innochecksum" is not in the "innobase/" subdirectory, but should be switched
AM_CONDITIONAL([BUILD_INNODB_TOOLS], [test X"$with_plugin_innobase" = Xyes])

2914
# IMPORTANT - do not modify LIBS past this line - this hack is the only way
unknown's avatar
unknown committed
2915 2916 2917
# I know to add the static NSS magic if we have static NSS libraries with
# glibc - Sasha

2918 2919
LDFLAGS="$LDFLAGS $OTHER_LIBC_LIB"
LIBS="$LIBS $STATIC_NSS_FLAGS"
unknown's avatar
unknown committed
2920

unknown's avatar
unknown committed
2921
AC_SUBST(sql_server_dirs)
2922
AC_SUBST(sql_server)
unknown's avatar
unknown committed
2923 2924
AC_SUBST(server_scripts)

unknown's avatar
unknown committed
2925 2926
AC_SUBST(mysql_plugin_dirs)
AC_SUBST(mysql_plugin_libs)
2927 2928
AC_SUBST(mysql_optional_plugins)
AC_SUBST(mysql_mandatory_plugins)
2929

2930
# Now that sql_client_dirs and sql_server_dirs are stable, determine the union.
Joerg Bruehe's avatar
Joerg Bruehe committed
2931 2932 2933 2934
# We support client-only builds by "--without-server", but not vice versa,
# so we start with the client list, then add each server item not yet present.
sql_union_dirs=" $sql_client_dirs "
for DIR in $sql_server_dirs
2935
do
unknown's avatar
unknown committed
2936
  if echo " $sql_union_dirs " | grep " $DIR " >/dev/null
2937 2938 2939 2940 2941 2942 2943 2944
  then
    :  # already present, skip
  else
    sql_union_dirs="$sql_union_dirs $DIR "
  fi
done
AC_SUBST(sql_union_dirs)

2945 2946 2947 2948 2949 2950
#
# Setup maintainer mode options by the end to not disturb
# system and other checks.
#
MY_MAINTAINER_MODE_SETUP

unknown's avatar
unknown committed
2951 2952 2953 2954
# Some usefull subst
AC_SUBST(CC)
AC_SUBST(GXX)

2955 2956 2957
# Set configuration options for make_binary_distribution
AC_SUBST(MAKE_BINARY_DISTRIBUTION_OPTIONS)

2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001
#--------------------------------------------------------------------
# Support for WL#2373 (Use cycle counter for timing)
#--------------------------------------------------------------------

AC_CHECK_HEADERS(time.h)
AC_CHECK_HEADERS(sys/time.h)
AC_CHECK_HEADERS(sys/times.h)
AC_CHECK_HEADERS(asm/msr.h)
#msr.h has rdtscll()

AC_CHECK_HEADERS(ia64intrin.h)

AC_CHECK_FUNCS(times)
AC_CHECK_FUNCS(gettimeofday)
AC_CHECK_FUNCS(read_real_time)
# This should work on AIX.

AC_CHECK_FUNCS(ftime)
# This is still a normal call for milliseconds.

AC_CHECK_FUNCS(time)
# We can use time() on Macintosh if there is no ftime().

AC_CHECK_FUNCS(rdtscll)
# I doubt that we'll ever reach the check for this.

# When compiling with Sun Studio C / C++ we need to include
# my_timer_cycles.il, an "inline templates" separate file,
# on the command line. It has assembly code, "rd %tick" for
# SPARC or "rdtsc" for x86.
RDTSC_SPARC_ASSEMBLY=""
case $CC_VERSION in
  *Sun*C*)
    RDTSC_SPARC_ASSEMBLY="my_timer_cycles.il"
    ;;
esac
case $CXX_VERSION in
  *Sun*C++*)
    RDTSC_SPARC_ASSEMBLY="my_timer_cycles.il"
    ;;
esac

AC_SUBST([RDTSC_SPARC_ASSEMBLY])

3002

3003
#--------------------------------------------------------------------
unknown's avatar
unknown committed
3004
# Output results
3005 3006
#--------------------------------------------------------------------

unknown's avatar
unknown committed
3007
if test -d "$srcdir/pstack" ; then
unknown's avatar
unknown committed
3008 3009
  AC_CONFIG_FILES(pstack/Makefile pstack/aout/Makefile)
fi
unknown's avatar
unknown committed
3010
if test -d "$srcdir/cmd-line-utils/readline" ; then
unknown's avatar
unknown committed
3011 3012 3013
  AC_CONFIG_FILES(cmd-line-utils/readline/Makefile)
fi

3014
AC_CONFIG_FILES(Makefile extra/Makefile mysys/Makefile dnl
unknown's avatar
unknown committed
3015
 unittest/Makefile unittest/mytap/Makefile unittest/mytap/t/Makefile dnl
3016 3017
 unittest/mysys/Makefile unittest/strings/Makefile dnl
 unittest/examples/Makefile dnl
unknown's avatar
unknown committed
3018
 strings/Makefile regex/Makefile storage/Makefile dnl
unknown's avatar
unknown committed
3019
 man/Makefile BUILD/Makefile vio/Makefile dnl
unknown's avatar
unknown committed
3020 3021
 libmysql/Makefile libmysql_r/Makefile client/Makefile dnl
 sql/Makefile sql/share/Makefile dnl
3022
 sql/sql_builtin.cc sql-common/Makefile libservices/Makefile dnl
unknown's avatar
unknown committed
3023
 dbug/Makefile scripts/Makefile include/Makefile dnl
3024
 tests/Makefile Docs/Makefile support-files/Makefile dnl
3025
 support-files/MacOSX/Makefile support-files/RHEL4-SElinux/Makefile dnl
unknown's avatar
unknown committed
3026 3027
 cmd-line-utils/Makefile cmd-line-utils/libedit/Makefile dnl
 libmysqld/Makefile libmysqld/examples/Makefile dnl
unknown's avatar
unknown committed
3028
 mysql-test/Makefile mysql-test/lib/My/SafeProcess/Makefile dnl
3029
 sql-bench/Makefile include/mysql_version.h plugin/Makefile win/Makefile dnl
3030
 cmake/Makefile packaging/Makefile
3031
 )
3032 3033 3034 3035 3036 3037 3038

AC_CONFIG_COMMANDS([default], , test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h)

# Ensure that table handlers gets all modifications to CFLAGS/CXXFLAGS
AC_CONFIG_COMMANDS_POST(ac_configure_args="$ac_configure_args CFLAGS='$CFLAGS' CXXFLAGS='$CXXFLAGS'")

AC_OUTPUT
unknown's avatar
unknown committed
3039

3040
# The first line "Thank you ..." is checked in ./Do-compile to verify that configure
3041
# ended sucessfully - don't remove it.
3042
echo
unknown's avatar
unknown committed
3043 3044
echo "Thank you for choosing MySQL!"
echo
3045 3046 3047 3048
echo "Remember to check the platform specific part of the reference manual"
echo "for hints about installing MySQL on your platform."
echo "Also have a look at the files in the Docs directory."
echo