diff options
Diffstat (limited to 'ndb/config/configure.in')
-rw-r--r-- | ndb/config/configure.in | 2085 |
1 files changed, 2085 insertions, 0 deletions
diff --git a/ndb/config/configure.in b/ndb/config/configure.in new file mode 100644 index 00000000000..4fa5ccdb672 --- /dev/null +++ b/ndb/config/configure.in @@ -0,0 +1,2085 @@ +dnl -*- ksh -*- +dnl Process this file with autoconf to produce a configure script. + +AC_INIT(../../sql/mysqld.cc) +AC_CANONICAL_SYSTEM +# The Docs Makefile.am parses this line! +AM_INIT_AUTOMAKE(mysql, 4.1.2-3.4.3-alpha) +AM_CONFIG_HEADER(config.h) + +PROTOCOL_VERSION=10 +DOT_FRM_VERSION=6 +# See the libtool docs for information on how to do shared lib versions. +SHARED_LIB_VERSION=14:0:0 + +# 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 +MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|[[a-z]]*-.*$||"` +MYSQL_BASE_VERSION=`echo $MYSQL_NO_DASH_VERSION | sed -e "s|\.[[^.]]*$||"` +MYSQL_VERSION_ID=`echo $MYSQL_NO_DASH_VERSION. | sed -e 's/\./ /g; s/ \([[0-9]]\) / 0\\1 /g; s/ //g'` + +# The port should be constant for a LONG time +MYSQL_TCP_PORT_DEFAULT=3306 +MYSQL_UNIX_ADDR_DEFAULT="/tmp/mysql.sock" + +##### +##### + +AC_SUBST(MYSQL_NO_DASH_VERSION) +AC_SUBST(MYSQL_BASE_VERSION) +AC_SUBST(MYSQL_VERSION_ID) +AC_SUBST(PROTOCOL_VERSION) +AC_DEFINE_UNQUOTED(PROTOCOL_VERSION, $PROTOCOL_VERSION) +AC_SUBST(DOT_FRM_VERSION) +AC_DEFINE_UNQUOTED(DOT_FRM_VERSION, $DOT_FRM_VERSION) +AC_SUBST(SHARED_LIB_VERSION) + +# Canonicalize the configuration name. +SYSTEM_TYPE="$host_vendor-$host_os" +MACHINE_TYPE="$host_cpu" +AC_SUBST(SYSTEM_TYPE) +AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE") +AC_SUBST(MACHINE_TYPE) +AC_DEFINE_UNQUOTED(MACHINE_TYPE, "$MACHINE_TYPE") + +# Detect intel x86 like processor +BASE_MACHINE_TYPE=$MACHINE_TYPE +case $MACHINE_TYPE in + i?86) BASE_MACHINE_TYPE=i386 ;; +esac + +# Save some variables and the command line options for mysqlbug +SAVE_ASFLAGS="$ASFLAGS" +SAVE_CFLAGS="$CFLAGS" +SAVE_CXXFLAGS="$CXXFLAGS" +SAVE_LDFLAGS="$LDFLAGS" +SAVE_CXXLDFLAGS="$CXXLDFLAGS" +CONF_COMMAND="$0 $ac_configure_args" +AC_SUBST(CONF_COMMAND) +AC_SUBST(SAVE_ASFLAGS) +AC_SUBST(SAVE_CFLAGS) +AC_SUBST(SAVE_CXXFLAGS) +AC_SUBST(SAVE_LDFLAGS) +AC_SUBST(SAVE_CXXLDFLAGS) +AC_SUBST(CXXLDFLAGS) + +AC_PREREQ(2.12)dnl Minimum Autoconf version required. + +AM_MAINTAINER_MODE +#AC_ARG_PROGRAM # Automaticly invoked by AM_INIT_AUTOMAKE +AM_SANITY_CHECK +# This is needed is SUBDIRS is set +AC_PROG_MAKE_SET + +# This is need before AC_PROG_CC +# + +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 + +# The following hack should ensure that configure doesn't add optimizing +# or debugging flags to CFLAGS or CXXFLAGS +CFLAGS="$CFLAGS " +CXXFLAGS="$CXXFLAGS " + +dnl Checks for programs. +AC_PROG_AWK +AC_PROG_CC +AC_PROG_CXX +AC_PROG_CPP + +# Print version of CC and CXX compiler (if they support --version) +case $SYSTEM_TYPE in + *netware*) +CC_VERSION=`$CC -version | grep -i version` + ;; + *) +CC_VERSION=`$CC --version | sed 1q` + ;; +esac +if test $? -eq "0" +then + AC_MSG_CHECKING("C Compiler version"); + AC_MSG_RESULT("$CC $CC_VERSION") +else +CC_VERSION="" +fi +case $SYSTEM_TYPE in + *netware*) +CXX_VERSION=`$CXX -version | grep -i version` + ;; + *) +CXX_VERSION=`$CXX --version | sed 1q` + ;; +esac +if test $? -eq "0" +then + AC_MSG_CHECKING("C++ compiler version"); + AC_MSG_RESULT("$CXX $CXX_VERSION") +else +CXX_VERSION="" +fi +AC_SUBST(CXX_VERSION) +AC_SUBST(CC_VERSION) + +# 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 + +if test "$ac_cv_prog_gcc" = "yes" +then + AS="$CC -c" + AC_SUBST(AS) +else + AC_PATH_PROG(AS, as, as) +fi +# Still need ranlib for readline; local static use only so no libtool. +AC_PROG_RANLIB +# We use libtool +#AC_LIBTOOL_WIN32_DLL +AC_PROG_LIBTOOL + +# 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 + +#AC_LIBTOOL_DLOPEN AC_LIBTOOL_WIN32_DLL AC_DISABLE_FAST_INSTALL AC_DISABLE_SHARED AC_DISABLE_STATIC + +# AC_PROG_INSTALL +AC_PROG_INSTALL +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +# Not critical since the generated file is distributed +AC_PROG_YACC +AC_CHECK_PROG(PDFMANUAL, pdftex, manual.pdf) +AC_CHECK_PROG(DVIS, tex, manual.dvi) + +AC_MSG_CHECKING("return type of sprintf") + +#check the return type of sprintf +case $SYSTEM_TYPE in + *netware*) + AC_DEFINE(SPRINTF_RETURNS_INT) AC_MSG_RESULT("int") + ;; + *) +AC_TRY_RUN([ + int main() + { + char* s = "hello"; + char buf[6]; + if((int)sprintf(buf, s) == strlen(s)) + return 0; + + return -1; + } + ], +AC_DEFINE(SPRINTF_RETURNS_INT) AC_MSG_RESULT("int"), + AC_TRY_RUN([ + int main() + { + char* s = "hello"; + char buf[6]; + if((char*)sprintf(buf,s) == buf + strlen(s)) + return 0; + return -1; + } +], AC_DEFINE(SPRINTF_RETURNS_PTR) AC_MSG_RESULT("ptr"), + AC_DEFINE(SPRINTF_RETURNS_GARBAGE) AC_MSG_RESULT("garbage"))) + ;; +esac + + +# option, cache_name, variable, +# code to execute if yes, code to exectute if fail +AC_DEFUN(AC_SYS_COMPILER_FLAG, +[ + AC_MSG_CHECKING($1) + OLD_CFLAGS="[$]CFLAGS" + AC_CACHE_VAL(mysql_cv_option_$2, + [ + CFLAGS="[$]OLD_CFLAGS $1" + AC_TRY_RUN([int main(){exit(0);}],mysql_cv_option_$2=yes,mysql_cv_option_$2=no,mysql_cv_option_$2=no) + ]) + + CFLAGS="[$]OLD_CFLAGS" + + if test x"[$]mysql_cv_option_$2" = "xyes" ; then + $3="[$]$3 $1" + AC_MSG_RESULT(yes) + $5 + else + AC_MSG_RESULT(no) + $4 + fi +]) + +# arch, option, cache_name, variable +AC_DEFUN(AC_SYS_CPU_COMPILER_FLAG, +[ + if test "`uname -m 2>/dev/null`" = "$1" ; then + AC_SYS_COMPILER_FLAG($2,$3,$4) + fi +]) + +# os, option, cache_name, variable +AC_DEFUN(AC_SYS_OS_COMPILER_FLAG, +[ + if test "x$mysql_cv_sys_os" = "x$1" ; then + AC_SYS_COMPILER_FLAG($2,$3,$4) + fi +]) + +# We need some special hacks when running slowaris +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" + CXXFLAGS="$CXXFLAGS -DSCO" + LD='$(CC) $(CFLAGS)' + case "$CFLAGS" in + *-belf*) + AC_SYS_COMPILER_FLAG(-belf,sco_belf_option,CFLAGS,[],[ + case "$LDFLAGS" in + *-belf*) ;; + *) echo "Adding -belf option to ldflags." + LDFLAGS="$LDFLAGS -belf" + ;; + esac + ]) + ;; + *) + AC_SYS_COMPILER_FLAG(-belf,sco_belf_option,CFLAGS,[],[ + case "$LDFLAGS" in + *-belf*) ;; + *) + echo "Adding -belf option to ldflags." + LDFLAGS="$LDFLAGS -belf" + ;; + esac + ]) + ;; + esac + ;; + sysv5UnixWare*) + if test "$GCC" != "yes"; then + # We are using built-in inline function + CFLAGS="$CFLAGS -Kalloca" + fi + CXXFLAGS="$CXXFLAGS -DNO_CPLUSPLUS_ALLOCA" + ;; + sysv5OpenUNIX8*) + if test "$GCC" != "yes"; then + # We are using built-in inline function + CFLAGS="$CFLAGS -Kalloca" + fi + CXXFLAGS="$CXXFLAGS -DNO_CPLUSPLUS_ALLOCA" + ;; +esac +AC_SUBST(CC) +AC_SUBST(CFLAGS) +AC_SUBST(CXX) +AC_SUBST(CXXFLAGS) +AC_SUBST(LD) +AC_SUBST(INSTALL_SCRIPT) + +export CC CXX CFLAGS LD LDFLAGS AR + +if test "$GXX" = "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. + CXXFLAGS="$CXXFLAGS -fno-implicit-templates -fno-exceptions -fno-rtti" + + # If you are using 'gcc' 3.0 (not g++) to compile C++ programs on Linux, + # we will gets some problems when linking static programs. + # The following code is used to fix this problem. + + if test "$CXX" = "gcc" -o "$CXX" = "ccache gcc" + then + if $CXX -v 2>&1 | grep 'version 3' > /dev/null 2>&1 + then + CXXFLAGS="$CXXFLAGS -DUSE_MYSYS_NEW -DDEFINE_CXA_PURE_VIRTUAL" + fi + fi +fi + +# Avoid bug in fcntl on some versions of linux +AC_MSG_CHECKING("if we should use 'skip-locking' as default for $target_os") +# Any wariation of Linux +if expr "$target_os" : "[[Ll]]inux.*" > /dev/null +then + MYSQLD_DEFAULT_SWITCHES="--skip-locking" + IS_LINUX="true" + AC_MSG_RESULT("yes"); +else + MYSQLD_DEFAULT_SWITCHES="" + IS_LINUX="false" + AC_MSG_RESULT("no"); +fi +AC_SUBST(MYSQLD_DEFAULT_SWITCHES) +AC_SUBST(IS_LINUX) + +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) +if ! ( expr "$SYSTEM_TYPE" : ".*netware.*" > /dev/null ); then +# 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 +fi + +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) +# 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) + +dnl We use a path for perl so the script startup works +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) +AC_PATH_PROG(PERL, perl, no) +if test "$PERL" != "no" && $PERL -e 'require 5' > /dev/null 2>&1 +then + 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 +fi + +AC_SUBST(HOSTNAME) +AC_SUBST(PERL) +AC_SUBST(PERL5) + +# Lock for PS +AC_PATH_PROG(PS, ps, ps) +AC_MSG_CHECKING("how to check if pid exists") +PS=$ac_cv_path_PS +# Linux style +if $PS p $$ 2> /dev/null | grep $0 > /dev/null +then + FIND_PROC="$PS p \$\$PID | grep mysqld > /dev/null" +# Solaris +elif $PS -p $$ 2> /dev/null | grep $0 > /dev/null +then + FIND_PROC="$PS -p \$\$PID | grep mysqld > /dev/null" +# BSD style +elif $PS -uaxww 2> /dev/null | grep $0 > /dev/null +then + FIND_PROC="$PS -uaxww | grep mysqld | grep \" \$\$PID \" > /dev/null" +# SysV style +elif $PS -ef 2> /dev/null | grep $0 > /dev/null +then + FIND_PROC="$PS -ef | grep mysqld | grep \" \$\$PID \" > /dev/null" +# Do anybody use this? +elif $PS $$ 2> /dev/null | grep $0 > /dev/null +then + FIND_PROC="$PS \$\$PID | grep mysqld > /dev/null" +else + case $SYSTEM_TYPE in + *freebsd*) + FIND_PROC="$PS p \$\$PID | grep mysqld > /dev/null" + ;; + *darwin*) + FIND_PROC="$PS -uaxww | grep mysqld | grep \" \$\$PID \" > /dev/null" + ;; + *cygwin*) + FIND_PROC="$PS -e | grep mysqld | grep \" \$\$PID \" > /dev/null" + ;; + *netware* | *modesto*) + FIND_PROC= + ;; + *) + AC_MSG_ERROR([Could not find the right ps switches. Which OS is this ?. See the Installation chapter in the Reference Manual.]) + esac +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 + CHECK_PID="$ac_cv_path_KILL -0 \$\$PID > /dev/null 2> /dev/null" +elif kill -s 0 $$ +then + CHECK_PID="$ac_cv_path_KILL -s 0 \$\$PID > /dev/null 2> /dev/null" +else + AC_MSG_WARN([kill -0 to check for pid seems to fail]) + CHECK_PID="$ac_cv_path_KILL -s SIGCONT \$\$PID > /dev/null 2> /dev/null" +fi +AC_SUBST(CHECK_PID) +AC_MSG_RESULT("$CHECK_PID") + +# We need a ANSI C compiler +AM_PROG_CC_STDC + +# We need an assembler, too +AM_PROG_AS + +if test "$am_cv_prog_cc_stdc" = "no" +then + AC_MSG_ERROR([MySQL requires a ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.]) +fi + +NOINST_LDFLAGS= + +static_nss="" +STATIC_NSS_FLAGS="" +OTHER_LIBC_LIB="" +AC_ARG_WITH(other-libc, + [ --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.], + [ + 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" + # 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) + CXXFLAGS="$CXXFLAGS -fpermissive -I$other_libc_include" + if test -f "$other_libc_lib/libnss_files.a" + then + # libc has been compiled with --enable-static-nss + # we need special flags, but we will have to add those later + STATIC_NSS_FLAGS="-lc -lnss_files -lnss_dns -lresolv" + STATIC_NSS_FLAGS="$STATIC_NSS_FLAGS $STATIC_NSS_FLAGS" + OTHER_LIBC_LIB="-static -L$other_libc_lib" + 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 + + # 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. + 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) + +# +# 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) +# + +if test "$IS_LINUX" = "true" -a "$static_nss" = "" +then + tmp=`nm /usr/lib/libc.a | grep _nss_files_getaliasent_r` + if test -n "$tmp" + then + STATIC_NSS_FLAGS="-lc -lnss_files -lnss_dns -lresolv" + STATIC_NSS_FLAGS="$STATIC_NSS_FLAGS $STATIC_NSS_FLAGS" + static_nss=1 + fi +fi + + +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) + +# Set flags if we wants to have MIT threads. +AC_ARG_WITH(mit-threads, + [ --with-mit-threads Always use included thread lib.], + [ with_mit_threads=$withval ], + [ with_mit_threads=no ] + ) + +if test "$with_mit_threads" = "yes" +then + enable_largefile="no" # Will not work on Linux. +fi + +# Set flags if we want to force to use pthreads +AC_ARG_WITH(pthread, + [ --with-pthread Force use of pthread library.], + [ with_pthread=$withval ], + [ with_pthread=no ] + ) + +# Force use of thread libs LIBS +AC_ARG_WITH(named-thread-libs, + [ --with-named-thread-libs=ARG + Use specified thread libraries instead of + those automatically found by configure.], + [ with_named_thread=$withval ], + [ with_named_thread=no ] + ) + +# Force use of a curses libs +AC_ARG_WITH(named-curses-libs, + [ --with-named-curses-libs=ARG + Use specified curses libraries instead of + those automatically found by configure.], + [ with_named_curses=$withval ], + [ with_named_curses=no ] + ) + +# Force use of a zlib (compress) +AC_ARG_WITH(named-z-libs, + [ --with-named-z-libs=ARG + Use specified zlib libraries instead of + those automatically found by configure.], + [ with_named_zlib=$withval ], + [ with_named_zlib=z ] + ) + +# Make thread safe client +AC_ARG_ENABLE(thread-safe-client, + [ --enable-thread-safe-client + Compile the client with threads.], + [ THREAD_SAFE_CLIENT=$enableval ], + [ THREAD_SAFE_CLIENT=no ] + ) + +# compile with strings functions in assembler +AC_ARG_ENABLE(assembler, + [ --enable-assembler Use assembler versions of some string + functions if available.], + [ ENABLE_ASSEMBLER=$enableval ], + [ ENABLE_ASSEMBLER=no ] + ) + +AC_MSG_CHECKING(if we should use assembler functions) +# For now we only support assembler on i386 and sparc systems +AM_CONDITIONAL(ASSEMBLER_x86, test "$ENABLE_ASSEMBLER" = "yes" -a "$BASE_MACHINE_TYPE" = "i386") +AM_CONDITIONAL(ASSEMBLER_sparc32, test "$ENABLE_ASSEMBLER" = "yes" -a "$BASE_MACHINE_TYPE" = "sparc") +AM_CONDITIONAL(ASSEMBLER_sparc64, test "$ENABLE_ASSEMBLER" = "yes" -a "$BASE_MACHINE_TYPE" = "sparcv9") +AM_CONDITIONAL(ASSEMBLER, test "$ASSEMBLER_x86_TRUE" = "" -o "$ASSEMBLER_sparc32_TRUE" = "") + +if test "$ASSEMBLER_TRUE" = "" +then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi + + +AC_MSG_CHECKING(if we should use RAID) +AC_ARG_WITH(raid, + [ --with-raid Enable RAID Support], + [ USE_RAID=$withval ], + [ USE_RAID=no ] + ) +if test "$USE_RAID" = "yes" +then + AC_MSG_RESULT([yes]) + AC_DEFINE([USE_RAID]) +else + AC_MSG_RESULT([no]) +fi + +# Use this to set the place used for unix socket used to local communication. +AC_ARG_WITH(unix-socket-path, + [ --with-unix-socket-path=SOCKET + Where to put the unix-domain socket. SOCKET must be + an absolute file name.], + [ MYSQL_UNIX_ADDR=$withval ], + [ MYSQL_UNIX_ADDR=$MYSQL_UNIX_ADDR_DEFAULT ] + ) +AC_SUBST(MYSQL_UNIX_ADDR) + +AC_ARG_WITH(tcp-port, + [ --with-tcp-port=port-number + Which port to use for MySQL services (default 3306)], + [ MYSQL_TCP_PORT=$withval ], + [ MYSQL_TCP_PORT=$MYSQL_TCP_PORT_DEFAULT ] + ) +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, + [ --with-mysqld-user=username + What user the mysqld daemon shall be run as.], + [ MYSQLD_USER=$withval ], + [ MYSQLD_USER=mysql ] + ) +AC_SUBST(MYSQLD_USER) + +# If we should allow LOAD DATA LOCAL +AC_MSG_CHECKING(If we should should enable LOAD DATA LOCAL by default) +AC_ARG_ENABLE(local-infile, + [ --enable-local-infile Enable LOAD DATA LOCAL INFILE (default: disabled)], + [ ENABLED_LOCAL_INFILE=$enableval ], + [ ENABLED_LOCAL_INFILE=no ] + ) +if test "$ENABLED_LOCAL_INFILE" = "yes" +then + AC_MSG_RESULT([yes]) + AC_DEFINE([ENABLED_LOCAL_INFILE]) +else + AC_MSG_RESULT([no]) +fi + +MYSQL_SYS_LARGEFILE + +# 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 +AC_CHECK_HEADERS(fcntl.h float.h floatingpoint.h ieeefp.h limits.h \ + memory.h pwd.h select.h \ + 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 \ + unistd.h utime.h sys/utime.h termio.h termios.h sched.h crypt.h alloca.h \ + sys/ioctl.h malloc.h sys/malloc.h linux/config.h) + +#-------------------------------------------------------------------- +# Check for system libraries. Adds the library to $LIBS +# and defines HAVE_LIBM etc +#-------------------------------------------------------------------- + +AC_CHECK_LIB(m, floor, [], AC_CHECK_LIB(m, __infinity)) + +AC_CHECK_LIB(nsl_r, gethostbyname_r, [], + AC_CHECK_LIB(nsl, gethostbyname_r)) +AC_CHECK_FUNC(gethostbyname_r) + +AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt)) +AC_CHECK_FUNC(yp_get_default_domain, , + AC_CHECK_LIB(nsl, yp_get_default_domain)) +AC_CHECK_FUNC(p2open, , AC_CHECK_LIB(gen, p2open)) +# This may get things to compile even if bind-8 is installed +AC_CHECK_FUNC(bind, , AC_CHECK_LIB(bind, bind)) +# For crypt() on Linux +AC_CHECK_LIB(crypt, crypt) +AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT)) + +# For sem_xxx functions on Solaris 2.6 +AC_CHECK_FUNC(sem_init, , AC_CHECK_LIB(posix4, sem_init)) + +# For compress in zlib +MYSQL_CHECK_ZLIB_WITH_COMPRESS($with_named_zlib) + +#-------------------------------------------------------------------- +# Check for TCP wrapper support +#-------------------------------------------------------------------- + +AC_ARG_WITH(libwrap, +[ --with-libwrap[=DIR] Compile in libwrap (tcp_wrappers) support],[ + 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, + LIBS="-lwrap $LIBS" + 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) + AC_DEFINE(LIBWRAP) + AC_DEFINE(HAVE_LIBWRAP) + if test "$with_libwrap" != "yes"; then + WRAPLIBS="-L${with_libwrap}/lib" + fi + WRAPLIBS="${WRAPLIBS} -lwrap", + AC_MSG_RESULT(no) + CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}), + CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}) + LDFLAGS=${_ldflags} LIBS=${_libs} + ;; + esac +]) +AC_SUBST(WRAPLIBS) + +if test "$IS_LINUX" = "true"; then + AC_MSG_CHECKING([for atomic operations]) + + atom_ops= + AC_TRY_RUN([ +#include <asm/atomic.h> +int main() +{ + atomic_t v; + + atomic_set(&v, 23); + atomic_add(5, &v); + return atomic_read(&v) == 28 ? 0 : -1; +} + ], AC_DEFINE(HAVE_ATOMIC_ADD) atom_ops="${atom_ops}atomic_add ", + ) + AC_TRY_RUN([ +#include <asm/atomic.h> +int main() +{ + atomic_t v; + + atomic_set(&v, 23); + atomic_sub(5, &v); + return atomic_read(&v) == 18 ? 0 : -1; +} + ], AC_DEFINE(HAVE_ATOMIC_SUB) atom_ops="${atom_ops}atomic_sub ", + ) + + if test -z "$atom_ops"; then atom_ops="no"; fi + AC_MSG_RESULT($atom_ops) + + AC_ARG_WITH(pstack, + [ --with-pstack Use the pstack backtrace library], + [ USE_PSTACK=$withval ], + [ USE_PSTACK=no ]) + pstack_libs= + pstack_dirs= + if test "$USE_PSTACK" = yes -a "$IS_LINUX" = "true" -a "$BASE_MACHINE_TYPE" = "i386" -a "$with_mit_threads" = "no" + then + have_libiberty= have_libbfd= + my_save_LIBS="$LIBS" +dnl I have no idea if this is a good test - can not find docs for libiberty + 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 + pstack_dirs='$(top_srcdir)'/pstack + pstack_libs="../pstack/libpstack.a -lbfd -liberty" + # We must link staticly when using pstack + with_mysqld_ldflags="-all-static" + AC_SUBST([pstack_dirs]) + AC_SUBST([pstack_libs]) + AC_DEFINE([USE_PSTACK]) +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 + USE_PSTACK="no" + fi + else + USE_PSTACK="no" + fi +fi +AM_CONDITIONAL(COMPILE_PSTACK, test "$USE_PSTACK" = "yes") +AC_MSG_CHECKING([if we should use pstack]) +AC_MSG_RESULT([$USE_PSTACK]) + +# 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 + AC_CHECK_FUNC(gtty, , AC_CHECK_LIB(compat, gtty)) +fi +# We make a special variable for client library's to avoid including +# thread libs in the client. +NON_THREADED_CLIENT_LIBS="$LIBS" + +AC_MSG_CHECKING([for int8]) +case $SYSTEM_TYPE in + *netware) + AC_MSG_RESULT([no]) + ;; + *) +AC_TRY_RUN([ +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif + +#ifdef HAVE_STDDEF_H +#include <stddef.h> +#endif + +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif + +int main() +{ + int8 i; + return 0; +} +], AC_DEFINE(HAVE_INT_8_16_32) AC_MSG_RESULT([yes]), AC_MSG_RESULT([no]) +) + ;; +esac + +# +# Some system specific hacks +# + +MAX_C_OPTIMIZE="-O3" +MAX_CXX_OPTIMIZE="-O3" + +case $SYSTEM_TYPE in + *solaris2.7*) + # Solaris 2.7 has a broken /usr/include/widec.h + # Make a fixed copy in ./include + echo "Fixing broken include files for $SYSTEM_TYPE" + 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" + ;; + *solaris2.8*) + # Solaris 2.8 has a broken /usr/include/widec.h + # Make a fixed copy in ./include + echo "Fixing broken include files for $SYSTEM_TYPE" + 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" + ;; + *solaris2.5.1*) + echo "Enabling getpass() workaround for Solaris 2.5.1" + 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*) + echo "Enabling getpass() workaround for SunOS" + CFLAGS="$CFLAGS -DHAVE_BROKEN_GETPASS -DSOLARIS"; + ;; + *hpux10.20*) + echo "Enabling workarounds for hpux 10.20" + 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" + if test "$with_named_thread" = "no" + then + echo "Using --with-named-thread=-lpthread" + with_named_thread="-lcma" + fi + ;; + *hpux11.*) + echo "Enabling workarounds for hpux 11" + CFLAGS="$CFLAGS -DHPUX11 -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -DHAVE_BROKEN_GETPASS -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT" + CXXFLAGS="$CXXFLAGS -DHPUX11 -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -D_INCLUDE_LONGLONG -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT" + if test "$with_named_thread" = "no" + then + echo "Using --with-named-thread=-lpthread" + with_named_thread="-lpthread" + fi + # Fixes for HPUX 11.0 compiler + if test "$ac_cv_prog_gcc" = "no" + then + CFLAGS="$CFLAGS -DHAVE_BROKEN_INLINE" + CXXFLAGS="$CXXFLAGS +O2" + MAX_C_OPTIMIZE="" + MAX_CXX_OPTIMIZE="" + fi + ;; + *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 + ;; + *darwin5*) + if test "$ac_cv_prog_gcc" = "yes" + then + FLAGS="-traditional-cpp -DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DHAVE_BROKEN_REALPATH" + CFLAGS="$CFLAGS $FLAGS" + CXXFLAGS="$CXXFLAGS $FLAGS" + MAX_C_OPTIMIZE="-O" + with_named_curses="" + fi + ;; + *darwin6*) + if test "$ac_cv_prog_gcc" = "yes" + then + FLAGS="-DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DHAVE_BROKEN_REALPATH" + CFLAGS="$CFLAGS $FLAGS" + CXXFLAGS="$CXXFLAGS $FLAGS" + MAX_C_OPTIMIZE="-O" + fi + ;; + *darwin7*) + if test "$ac_cv_prog_gcc" = "yes" + then + FLAGS="-DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ" + CFLAGS="$CFLAGS $FLAGS" + CXXFLAGS="$CXXFLAGS $FLAGS" + MAX_C_OPTIMIZE="-O" + fi + ;; + *freebsd*) + echo "Adding fix for interrupted reads" + OSVERSION=`sysctl -a | grep osreldate | awk '{ print $2 }'` + if test "$OSVERSION" -gt "480100" && \ + test "$OSVERSION" -lt "500000" || \ + test "$OSVERSION" -gt "500109" + then + CXXFLAGS="$CXXFLAGS -DMYSQLD_NET_RETRY_COUNT=1000000" + else + CFLAGS="$CFLAGS -DHAVE_BROKEN_REALPATH" + CXXFLAGS="$CXXFLAGS -DMYSQLD_NET_RETRY_COUNT=1000000 -DHAVE_BROKEN_REALPATH" + fi + ;; + *netbsd*) + echo "Adding flag -Dunix" + CFLAGS="$CFLAGS -Dunix" + CXXFLAGS="$CXXFLAGS -Dunix" + OVERRIDE_MT_LD_ADD="\$(top_srcdir)/mit-pthreads/obj/libpthread.a" + ;; + *bsdi*) + echo "Adding fix for BSDI" + CFLAGS="$CFLAGS -D__BSD__ -DHAVE_BROKEN_REALPATH" + AC_DEFINE_UNQUOTED(SOCKOPT_OPTLEN_TYPE, size_t) + ;; + *sgi-irix6*) + if test "$with_named_thread" = "no" + then + echo "Using --with-named-thread=-lpthread" + with_named_thread="-lpthread" + fi + CXXFLAGS="$CXXFLAGS -D_BOOL" + ;; + *aix4.3*) + echo "Adding defines for AIX" + CFLAGS="$CFLAGS -Wa,-many -DUNDEF_HAVE_INITGROUPS -DSIGNALS_DONT_BREAK_READ" + CXXFLAGS="$CXXFLAGS -Wa,-many -DUNDEF_HAVE_INITGROUPS -DSIGNALS_DONT_BREAK_READ" + ;; +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 + echo "Adding defines for DEC OSF on alpha" + CFLAGS="$CFLAGS -mieee" + CXXFLAGS="$CXXFLAGS -mieee" + fi + echo "Adding defines for OSF1" + # gethostbyname_r is deprecated and doesn't work ok on OSF1 + CFLAGS="$CFLAGS -DUNDEF_HAVE_GETHOSTBYNAME_R" + CXXFLAGS="$CXXFLAGS -DUNDEF_HAVE_GETHOSTBYNAME_R" + ;; + *netware*) + # No need for curses library so set it to null + with_named_curses="" + + # No thread library - in LibC + with_named_thread="" + + # + # Edit Makefile.in files. + # + echo -n "configuring Makefile.in files for NetWare... " + for file in sql/Makefile.in libmysql/Makefile.in libmysql_r/Makefile.in sql/share/Makefile.in strings/Makefile.in client/Makefile.in + do + # echo "#### $file ####" + filedir="`dirname $file`" + filebase="`basename $file`" + filesed=$filedir/$filebase.sed + # + # Backup and always use original file + # + if test -f $file.bk + then + cp -fp $file.bk $file + else + cp -fp $file $file.bk + fi + case $file in + sql/Makefile.in) + # Use gen_lex_hash.linux instead of gen_lex_hash + # Add library dependencies to mysqld_DEPENDENCIES + lib_DEPENDENCIES="\$(bdb_libs_with_path) \$(innodb_libs) \$(pstack_libs) \$(innodb_system_libs) \$(openssl_libs)" + cat > $filesed << EOF +s,\(^.*\$(MAKE) gen_lex_hash\),#\1, +s,\(\./gen_lex_hash\),\1.linux, +s%\(mysqld_DEPENDENCIES = \) %\1$lib_DEPENDENCIES % +EOF + ;; + sql/share/Makefile.in) + cat > $filesed << EOF +s,\(extra/comp_err\),\1.linux, +EOF + ;; + libmysql/Makefile.in) + cat > $filesed << EOF +s,\(\./conf_to_src\)\( \$(top_srcdir)\),\1.linux\2, +s,\(: conf_to_src\),\1.linux, +EOF + ;; + libmysql_r/Makefile.in) + cat > $filesed << EOF +s,\(\./conf_to_src\)\( \$(top_srcdir)\),\1.linux\2, +s,\(: conf_to_src\),\1.linux, +EOF + ;; + strings/Makefile.in) + cat > $filesed << EOF +s,\(\./conf_to_src\)\( \$(top_srcdir)\),\1.linux\2, +s,\(: conf_to_src\),\1.linux, +EOF + ;; + client/Makefile.in) + # + cat > $filesed << EOF +s,libmysqlclient.la,.libs/libmysqlclient.a, +EOF + ;; + esac + if `sed -f $filesed $file > $file.nw`;\ + then + mv -f $file.nw $file + rm -f $filesed + else + exit 1 + fi + # wait for file system changes to complete + sleep 1 + done + echo "done" + + # + # Make sure the following files are writable. + # + # When the files are retrieved from some source code control systems they are read-only. + # + echo -n "making sure specific build files are writable... " + for file in \ + Docs/include.texi \ + Docs/mysql.info \ + Docs/manual.txt \ + Docs/manual_toc.html \ + Docs/manual.html \ + Docs/INSTALL-BINARY \ + INSTALL-SOURCE \ + COPYING \ + COPYING.LIB \ + MIRRORS + do + if test -e $file; then + chmod +w $file + fi + done + echo "done" + + ;; +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" +# Hack for DEC-UNIX (OSF1) +if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no" +then + # Look for LinuxThreads. + AC_MSG_CHECKING("LinuxThreads") + 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) + # 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 + if test "$IS_LINUX" = "true" + then + AC_MSG_ERROR([This is a linux system and Linuxthreads was not +found. On linux Linuxthreads should be used. Please install Linuxthreads +(or a new glibc) and try again. See the Installation chapter in the +Reference Manual for more information.]) + else + AC_MSG_CHECKING("DEC threads") + 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) + AC_MSG_RESULT("yes") + else + AC_MSG_RESULT("no") + AC_MSG_CHECKING("DEC 3.2 threads") + if test -f /usr/shlib/libpthreads.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a + then + with_named_thread="-lpthreads -lmach -lc_r" + AC_DEFINE(HAVE_DEC_THREADS) + AC_DEFINE(HAVE_DEC_3_2_THREADS) + with_osf32_threads="yes" + MYSQLD_DEFAULT_SWITCHES="--skip-thread-priority" + AC_MSG_RESULT("yes") + else + AC_MSG_RESULT("no") + fi + fi + fi + fi +fi + + +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'` +]) +# 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 + MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK + with_named_thread="-lgthreads -lsocket -lgthreads" + # sched.h conflicts with fsu-threads + touch ./include/sched.h + + # We must have gcc + if expr "$CC" : ".*gcc.*" + then + AC_MSG_RESULT("yes") + else + AC_MSG_ERROR([On SCO UNIX MySQL must be compiled with gcc. See the Installation chapter in the Reference Manual.]); + fi + AC_MSG_RESULT("yes") + elif test -f /usr/local/lib/libpthread.a -o -f /usr/local/lib/libpthread.so + then + MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK + 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 + AC_MSG_ERROR([On SCO UNIX MySQL must be compiled with gcc. See the Installation chapter in the Reference Manual.]); + fi + AC_MSG_RESULT("yes") + # Hack for SCO UnixWare 7.1.x + # + elif test "$with_named_thread" = "no" + then + AC_MSG_RESULT("no") + AC_MSG_CHECKING("SCO UnixWare 7.1.x native threads") + if expr "$SYSTEM_TYPE" : ".*sco.*" > /dev/null + then + if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so + then + MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK + if expr "$CC" : ".*gcc.*" + then + with_named_thread="-pthread -lsocket -lnsl" + else + with_named_thread="-Kthread -lsocket -lnsl" + fi + if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null + then + AC_DEFINE(HAVE_UNIXWARE7_THREADS) + else + AC_DEFINE(HAVE_UNIXWARE7_POSIX) + fi + AC_MSG_RESULT("yes") + # We must have cc + AC_MSG_CHECKING("for gcc") + if expr "$CC" : ".*gcc.*" + then + CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + else + CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + fi + else + { echo "configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual." 1>&2; exit 1; }; + fi + else + AC_MSG_RESULT("no") + fi + else + AC_MSG_ERROR([On SCO UNIX MySQL requires that the FSUThreads package is installed. See the Installation chapter in the Reference Manual.]); + fi + else + AC_MSG_RESULT("no") + fi +fi +# Hack for SCO UnixWare7 +# +if test "$with_named_thread" = "no" +then + AC_MSG_CHECKING("SCO UnixWare7 native threads") + if expr "$SYSTEM_TYPE" : ".*UnixWare*" > /dev/null + then + if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so + then + MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK + if expr "$CC" : ".*gcc.*" + then + with_named_thread="-pthread -lsocket -lnsl" + else + with_named_thread="-Kthread -lsocket -lnsl" + fi + if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null + then + AC_DEFINE(HAVE_UNIXWARE7_THREADS) + else + AC_DEFINE(HAVE_UNIXWARE7_POSIX) + fi + # We must have cc + AC_MSG_CHECKING("for gcc") + if expr "$CC" : ".*gcc.*" + then + CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + else + CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + fi + AC_MSG_RESULT("yes") + else + { echo "configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual." 1>&2; exit 1; }; + fi + else + AC_MSG_RESULT("no") + fi +fi + +# Hack for Caldera OpenUNIX8 +# +if test "$with_named_thread" = "no" +then + AC_MSG_CHECKING("OpenUNIX8 native threads") + if expr "$SYSTEM_TYPE" : ".*OpenUNIX*" > /dev/null + then + if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so + then + MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK + if expr "$CC" : ".*gcc.*" + then + with_named_thread="-pthread -lsocket -lnsl" + else + with_named_thread="-Kthread -lsocket -lnsl" + fi + if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null + then + AC_DEFINE(HAVE_UNIXWARE7_THREADS) + else + AC_DEFINE(HAVE_UNIXWARE7_POSIX) + fi + # We must have cc + AC_MSG_CHECKING("for gcc") + if expr "$CC" : ".*gcc.*" + then + CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + else + CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + fi + AC_MSG_RESULT("yes") + else + { echo "configure: error: Can't find thread libs on Caldera OpenUNIX 8. See the Installation chapter in the Reference Manual." 1>&2; exit 1; }; + fi + else + AC_MSG_RESULT("no") + fi +fi + +# Hack for Siemens UNIX +if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no" +then + AC_MSG_CHECKING("Siemens threads") + if test -f /usr/lib/libxnet.so -a "$SYSTEM_TYPE" = "sni-sysv4" + then + LIBS="-lxnet $LIBS" + NON_THREADED_CLIENT_LIBS="$NON_THREADED_CLIENT_LIBS -lxnet" + 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 + +if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no" +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 + +TOOLS_LIBS="$NON_THREADED_CLIENT_LIBS" + +# Should we use named pthread library ? +AC_MSG_CHECKING("named thread libs:") +if test "$with_named_thread" != "no" +then + LIBS="$with_named_thread $LIBS $with_named_thread" + TOOLS_LIBS="$with_named_thread $TOOLS_LIBS $with_named_thread" + with_posix_threads="yes" + with_mit_threads="no" + AC_MSG_RESULT("$with_named_thread") +else + AC_MSG_RESULT("no") + if test "$with_mit_threads" = "no" + then + # 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" + then + AC_MSG_CHECKING("for pthread_create in -lpthread"); + ac_save_LIBS="$LIBS" + ac_save_TOOLS_LIBS="$TOOLS_LIBS" + LIBS="$LIBS -lpthread" + TOOLS_LIBS="$TOOLS_LIBS -lpthread" + 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 + LIBS=" $ac_save_LIBS -lpthreads" + TOOLS_LIBS=" $ac_save_TOOLS_LIBS -lpthreads" + AC_MSG_CHECKING("for pthread_create in -lpthreads"); + 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") + if test "$with_posix_threads" = "no" + then + # This is for FreeBSD + LIBS="$ac_save_LIBS -pthread" + TOOLS_LIBS="$ac_save_TOOLS_LIBS -pthread" + AC_MSG_CHECKING("for pthread_create in -pthread"); + 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") + if test "$with_posix_threads" = "no" + then + with_mit_threads="yes" + LIBS="$ac_save_LIBS" + TOOLS_LIBS="$ac_save_TOOLS_LIBS" + fi + fi + 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) + case "$with_osf32_threads---$target_os" in + # Don't keep -lc_r in LIBS; -pthread handles it magically + yes---* | *---freebsd* | *---hpux*) LIBS="$my_save_LIBS" ;; + + esac + AC_CHECK_FUNCS(strtok_r pthread_init) +else + AC_CHECK_FUNCS(strtok_r) +fi +#---END: + +# 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) + +# System characteristics +case $SYSTEM_TYPE in + *netware* | *modesto*) ;; + *) +AC_SYS_RESTARTABLE_SYSCALLS + ;; +esac + +# Build optimized or debug version ? +# First check for gcc and g++ +if test "$ac_cv_prog_gcc" = "yes" +then + DEBUG_CFLAGS="-g" + DEBUG_OPTIMIZE_CC="-O" + OPTIMIZE_CFLAGS="$MAX_C_OPTIMIZE" +else + DEBUG_CFLAGS="-g" + DEBUG_OPTIMIZE_CC="" + OPTIMIZE_CFLAGS="-O" +fi +if test "$ac_cv_prog_cxx_g" = "yes" +then + DEBUG_CXXFLAGS="-g" + DEBUG_OPTIMIZE_CXX="-O" + OPTIMIZE_CXXFLAGS="$MAX_CXX_OPTIMIZE" +else + DEBUG_CXXFLAGS="-g" + DEBUG_OPTIMIZE_CXX="" + OPTIMIZE_CXXFLAGS="-O" +fi + +if expr "$SYSTEM_TYPE" : ".*netware.*" > /dev/null; then + DEBUG_CFLAGS="$DEBUG_CFLAGS -DDEBUG -sym internal,codeview4" + DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -DDEBUG -sym internal,codeview4" + OPTIMIZE_CFLAGS="$OPTIMIZE_CFLAGS -DNDEBUG" + OPTIMIZE_CXXFLAGS="$OPTIMIZE_CXXFLAGS -DNDEBUG" +fi + +AC_ARG_WITH(debug, + [ --without-debug Build a production version without debugging code], + [with_debug=$withval], + [with_debug=no]) +if test "$with_debug" = "yes" +then + # Medium debug. + CFLAGS="$DEBUG_CFLAGS $DEBUG_OPTIMIZE_CC -DDBUG_ON -DSAFE_MUTEX $CFLAGS" + CXXFLAGS="$DEBUG_CXXFLAGS $DEBUG_OPTIMIZE_CXX -DSAFE_MUTEX $CXXFLAGS" +elif test "$with_debug" = "full" +then + # Full debug. Very slow in some cases + CFLAGS="$DEBUG_CFLAGS -DDBUG_ON -DSAFE_MUTEX -DSAFEMALLOC $CFLAGS" + CXXFLAGS="$DEBUG_CXXFLAGS -DSAFE_MUTEX -DSAFEMALLOC $CXXFLAGS" +else + # Optimized version. No debug + CFLAGS="$OPTIMIZE_CFLAGS -DDBUG_OFF $CFLAGS" + CXXFLAGS="$OPTIMIZE_CXXFLAGS -DDBUG_OFF $CXXFLAGS" +fi + +# Force static compilation to avoid linking problems/get more speed +AC_ARG_WITH(mysqld-ldflags, + [ --with-mysqld-ldflags Extra linking arguments for mysqld], + [MYSQLD_EXTRA_LDFLAGS=$withval], + [MYSQLD_EXTRA_LDFLAGS=]) +AC_SUBST(MYSQLD_EXTRA_LDFLAGS) + +AC_ARG_WITH(client-ldflags, + [ --with-client-ldflags Extra linking arguments for clients], + [CLIENT_EXTRA_LDFLAGS=$withval], + [CLIENT_EXTRA_LDFLAGS=]) +AC_SUBST(CLIENT_EXTRA_LDFLAGS) + +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) + +# Avoid stupid bug on some OS +AC_ARG_WITH(low-memory, + [ --with-low-memory Try to use less memory to compile to avoid + memory limitations.], + [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, + [ --with-comment Comment about compilation environment.], + [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") +if test "$IS_LINUX" = "true" -a "$ac_cv_prog_gcc" = "yes" -a "$all_is_static" != "yes" +then + LDFLAGS="$LDFLAGS -rdynamic" + AC_MSG_RESULT("-rdynamic") +else + AC_MSG_RESULT("none") +fi + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_C_INLINE +AC_TYPE_OFF_T +AC_STRUCT_ST_RDEV +AC_HEADER_TIME +AC_STRUCT_TM +# 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 +AC_CHECK_SIZEOF(char*, 4) +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 +MYSQL_CHECK_SIZEOF(off_t, 4) +if test "$ac_cv_sizeof_off_t" -eq 0 +then + AC_MSG_ERROR("MySQL needs a off_t type.") +fi +# 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: +# 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 system files define ulong +MYSQL_CHECK_ULONG +# Do the system files define uchar +MYSQL_CHECK_UCHAR +# Do the system files define uint +MYSQL_CHECK_UINT +# Check for fp_except in ieeefp.h +MYSQL_CHECK_FP_EXCEPT +# Check for IN_ADDR_T +MYSQL_CHECK_IN_ADDR_T +# Do the c++ compiler have a bool type +MYSQL_CXX_BOOL +# Check some common bugs with gcc 2.8.# on sparc +if ! ( expr "$SYSTEM_TYPE" : ".*netware.*" > /dev/null ); then +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 +fi +MYSQL_PTHREAD_YIELD + +###################################################################### +# For readline/libedit (We simply move the mimimum amount of stuff from +# the readline/libedit configure.in here) + +dnl Checks for header files. +AC_CHECK_HEADERS(malloc.h sys/cdefs.h) + +dnl Checks for library functions. +AC_FUNC_ALLOCA +AC_PROG_GCC_TRADITIONAL +AC_TYPE_SIGNAL +AC_CHECK_FUNCS(re_comp regcomp strdup) + +AC_CHECK_HEADERS(vis.h) +AC_CHECK_FUNCS(strlcat strlcpy) +AC_CHECK_FUNCS(issetugid) +AC_CHECK_FUNCS(fgetln) +AC_CHECK_FUNCS(getline flockfile) + +# from old readline settting: + +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 \ + sys/mman.h curses.h termcap.h termio.h termbits.h asm/termbits.h grp.h \ +paths.h semaphore.h) + +# Already-done: strcasecmp +AC_CHECK_FUNCS(lstat putenv select setenv setlocale strcoll tcgetattr) + +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 +MYSQL_TYPE_SIGHANDLER +if test "$with_named_curses" = "no" +then + MYSQL_CHECK_LIB_TERMCAP +else + TERMCAP_LIB="$with_named_curses" +fi +AC_SUBST(TERMCAP_LIB) + +# End of readline/libedit stuff +######################################################################### + +dnl Checks for library functions. + +# +# 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 + +AC_FUNC_MMAP +AC_TYPE_SIGNAL +MYSQL_TYPE_QSORT +AC_FUNC_UTIME_NULL +AC_FUNC_VPRINTF + +AC_CHECK_FUNCS(alarm bcmp bfill bmove bzero chsize cuserid fchmod fcntl \ + fconvert fdatasync finite fpresetsticky fpsetmask fsync ftruncate \ + getcwd gethostbyaddr_r gethostbyname_r getpass getpassphrase getpwnam \ + getpwuid getrlimit getrusage getwd gmtime_r index initgroups isnan \ + localtime_r locking longjmp lrand48 madvise mallinfo memcpy memmove \ + mkstemp mlockall perror poll pread pthread_attr_create clock_gettime \ + pthread_attr_getstacksize pthread_attr_setprio pthread_attr_setschedparam \ + pthread_attr_setstacksize pthread_condattr_create pthread_getsequence_np \ + pthread_key_delete pthread_rwlock_rdlock pthread_setprio \ + pthread_setprio_np pthread_setschedparam pthread_sigmask readlink \ + realpath rename rint rwlock_init setupterm sighold sigset sigthreadmask \ + snprintf socket stpcpy strcasecmp strerror strnlen strpbrk strstr strtol \ + strtoll strtoul strtoull tell tempnam thr_setconcurrency vidattr) + +# isinf() could be a function or a macro (HPUX) +AC_MSG_CHECKING(for isinf with <math.h>) +AC_TRY_LINK([#include <math.h>], [float f = 0.0; isinf(f)], + AC_MSG_RESULT(yes) AC_DEFINE(HAVE_ISINF,,[isinf() macro or function]), + AC_MSG_RESULT(no)) + +CFLAGS="$ORG_CFLAGS" + +# Sanity check: We chould not have any fseeko symbol unless +# large_file_support=yes +AC_CHECK_FUNC(fseeko, +[if test "$large_file_support" = no -a "$IS_LINUX" = "true"; +then + AC_MSG_ERROR("Found fseeko symbol but large_file_support is not enabled!"); +fi] +) + +my_save_LIBS="$LIBS" +LIBS="$LIBS $LIBDL" +AC_CHECK_FUNCS(dlopen dlerror) +LIBS="$my_save_LIBS" + +# 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 + +# Do not treat warnings as errors if we are linking against other libc +# this is to work around gcc not being permissive on non-system includes +# with respect to ANSI C++ +# We also remove the -fbranch-probabilities option as this will give warnings +# about not profiled code, which confuses configure +if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no" +then + CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed 's/-fbranch-probabilities//'` +fi + +AC_TRY_COMPILE( +[#undef inline +#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT) +#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 + AC_DEFINE(HAVE_SOLARIS_STYLE_GETHOST) +fi + +#---START: Used in for client configure + +# Check definition of gethostbyname_r (glibc2.0.100 is different from Solaris) +ac_save_CXXFLAGS="$CXXFLAGS" +AC_CACHE_CHECK([style of gethostname_r routines], mysql_cv_gethostname_style, +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no" +then + CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed 's/-fbranch-probabilities//'` +fi +AC_TRY_COMPILE( +[#undef inline +#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT) +#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);], +mysql_cv_gethostname_style=glibc2, mysql_cv_gethostname_style=other)) +AC_LANG_RESTORE +CXXFLAGS="$ac_save_CXXFLAGS" +if test "$mysql_cv_gethostname_style" = "glibc2" +then + AC_DEFINE(HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE) +fi + +# Check 3rd argument of getthostbyname_r +ac_save_CXXFLAGS="$CXXFLAGS" +AC_CACHE_CHECK([3 argument to gethostname_r routines], mysql_cv_gethostname_arg, +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no" +then + CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed 's/-fbranch-probabilities//'` +fi +AC_TRY_COMPILE( +[#undef inline +#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT) +#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, (struct hostent_data*) 0);], +mysql_cv_gethostname_arg=hostent_data, mysql_cv_gethostname_arg=char)) +AC_LANG_RESTORE +CXXFLAGS="$ac_save_CXXFLAGS" +if test "$mysql_cv_gethostname_arg" = "hostent_data" +then + AC_DEFINE(HAVE_GETHOSTBYNAME_R_RETURN_INT) +fi + + +if test "$with_mit_threads" = "no" +then + # Check definition of pthread_getspecific + AC_CACHE_CHECK("args to pthread_getspecific", mysql_cv_getspecific_args, + AC_TRY_COMPILE( +[#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT) +#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 + AC_DEFINE(HAVE_NONPOSIX_PTHREAD_GETSPECIFIC) + fi + + # Check definition of pthread_mutex_init + AC_CACHE_CHECK("args to pthread_mutex_init", mysql_cv_mutex_init_args, + AC_TRY_COMPILE( +[#if !defined(SCO) && !defined(__osf__) +#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 + AC_DEFINE(HAVE_NONPOSIX_PTHREAD_MUTEX_INIT) + fi +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( +[#if !defined(SCO) && !defined(__osf__) +#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 + AC_DEFINE(HAVE_READDIR_R) +fi + +# Check definition of posix sigwait() +AC_CACHE_CHECK("style of sigwait", mysql_cv_sigwait, +AC_TRY_LINK( +[#if !defined(SCO) && !defined(__osf__) +#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 + AC_DEFINE(HAVE_SIGWAIT) +fi + +if test "$mysql_cv_sigwait" != "POSIX" +then +unset mysql_cv_sigwait +# Check definition of posix sigwait() +AC_CACHE_CHECK("style of sigwait", mysql_cv_sigwait, +AC_TRY_LINK( +[#if !defined(SCO) && !defined(__osf__) +#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 + AC_DEFINE(HAVE_NONPOSIX_SIGWAIT) +fi +fi +#---END: + +# Check if pthread_attr_setscope() exists +AC_CACHE_CHECK("for pthread_attr_setscope", mysql_cv_pthread_attr_setscope, +AC_TRY_LINK( +[#if !defined(SCO) && !defined(__osf__) +#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 + AC_DEFINE(HAVE_PTHREAD_ATTR_SETSCOPE) +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 + AC_DEFINE(HAVE_BROKEN_NETINET_INCLUDES) +fi +AC_MSG_RESULT("$netinet_inc") + +# Some usefull subst +AC_SUBST(CC) +AC_SUBST(GXX) + +# Output results +AC_OUTPUT(Makefile dnl + , , [ + test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h + ]) |