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! # remember to also change ndb version below and update version.c in ndb AM_INIT_AUTOMAKE(mysql, 4.1.9) 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 # ndb version NDB_VERSION_MAJOR=4 NDB_VERSION_MINOR=1 NDB_VERSION_BUILD=9 NDB_VERSION_STATUS="" # 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/[[^0-9.]]//g; 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" # Remember to add a directory sql/share/LANGUAGE AVAILABLE_LANGUAGES="\ czech danish dutch english estonian french german greek hungarian \ italian japanese korean norwegian norwegian-ny polish portuguese \ romanian russian serbian slovak spanish swedish ukrainian" # Generate make rules for all error messages AVAILABLE_LANGUAGES_ERRORS= AVAILABLE_LANGUAGES_ERRORS_RULES=$srcdir/ac_available_languages_fragment rm -f $AVAILABLE_LANGUAGES_ERRORS_RULES for i in $AVAILABLE_LANGUAGES do AVAILABLE_LANGUAGES_ERRORS="$AVAILABLE_LANGUAGES_ERRORS $i/errmsg.sys" case $host_os in netware* | modesto*) echo "$i/errmsg.sys: $i/errmsg.txt \$(top_builddir)/extra/comp_err.linux -C\$(srcdir)/charsets/ $i/errmsg.txt $i/errmsg.sys" \ >> $AVAILABLE_LANGUAGES_ERRORS_RULES ;; *) echo "$i/errmsg.sys: $i/errmsg.txt \$(top_builddir)/extra/comp_err -C\$(srcdir)/charsets/ $i/errmsg.txt $i/errmsg.sys" \ >> $AVAILABLE_LANGUAGES_ERRORS_RULES ;; esac done ##### ##### 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], [mysql client protocol version]) AC_SUBST(DOT_FRM_VERSION) AC_DEFINE_UNQUOTED([DOT_FRM_VERSION], [$DOT_FRM_VERSION], [Version of .frm files]) AC_SUBST(SHARED_LIB_VERSION) AC_SUBST(AVAILABLE_LANGUAGES) AC_SUBST(AVAILABLE_LANGUAGES_ERRORS) AC_SUBST_FILE(AVAILABLE_LANGUAGES_ERRORS_RULES) AC_SUBST([NDB_VERSION_MAJOR]) AC_SUBST([NDB_VERSION_MINOR]) AC_SUBST([NDB_VERSION_BUILD]) AC_SUBST([NDB_VERSION_STATUS]) AC_DEFINE_UNQUOTED([NDB_VERSION_MAJOR], [$NDB_VERSION_MAJOR], [NDB major version]) AC_DEFINE_UNQUOTED([NDB_VERSION_MINOR], [$NDB_VERSION_MINOR], [NDB minor version]) AC_DEFINE_UNQUOTED([NDB_VERSION_BUILD], [$NDB_VERSION_BUILD], [NDB build version]) AC_DEFINE_UNQUOTED([NDB_VERSION_STATUS], ["$NDB_VERSION_STATUS"], [NDB status 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"], [Name of system, eg solaris]) AC_SUBST(MACHINE_TYPE) AC_DEFINE_UNQUOTED([MACHINE_TYPE], ["$MACHINE_TYPE"], [Machine type name, eg sun10]) # 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. #AC_ARG_PROGRAM # Automaticly invoked by AM_INIT_AUTOMAKE AM_SANITY_CHECK # This is needed is SUBDIRS is set AC_PROG_MAKE_SET # This generates rules for webpage generation for the MySQL homepage. AM_CONDITIONAL(LOCAL, test -d ../web/SitePages) # 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 # C_EXTRA_FLAGS are flags that are automaticly added to both # CFLAGS and CXXFLAGS CFLAGS="$CFLAGS $C_EXTRA_FLAGS " CXXFLAGS="$CXXFLAGS $C_EXTRA_FLAGS " 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, [1]) 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, [1], [POSIX sprintf]) 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, [1], [Broken sprintf]) AC_MSG_RESULT("ptr")], [AC_DEFINE(SPRINTF_RETURNS_GARBAGE, [1], [Broken sprintf]) 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 ndb_cxxflags_fix= 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 echo $CXX | grep gcc > /dev/null 2>&1 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) # for build ndb docs AC_PATH_PROG(DOXYGEN, doxygen, no) AC_PATH_PROG(PDFLATEX, pdflatex, no) AC_PATH_PROG(MAKEINDEX, makeindex, no) AC_SUBST(DOXYGEN) AC_SUBST(PDFLATEX) AC_SUBST(MAKEINDEX) # 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 -fp $$ 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 an 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 an 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 ] ) # 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], [1], [Use MySQL 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], [1], [If LOAD DATA LOCAL INFILE should be enabled by default]) 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 sys/resource.h sys/param.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], [1], [crypt])) # For sem_xxx functions on Solaris 2.6 AC_CHECK_FUNC(sem_init, , AC_CHECK_LIB(posix4, sem_init)) MYSQL_CHECK_ZLIB_WITH_COMPRESS #-------------------------------------------------------------------- # 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], [1], [Define if you have -lwrap]) AC_DEFINE([HAVE_LIBWRAP], [1], [Define if have -lwrap]) 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], [1], [atomic_add() from <asm/atomic.h> (Linux only)]) 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], [1], [atomic_sub() from <asm/atomic.h> (Linux only)]) 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], [1], [the pstack backtrace library]) 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 $ZLIB_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], [1], [whether int8, int16 and int32 types exist]) AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])] ) ;; esac # # Some system specific hacks # MAX_C_OPTIMIZE="-O3" MAX_CXX_OPTIMIZE="-O3" case $SYSTEM_TYPE-$MACHINE_TYPE-$ac_cv_prog_gcc in # workaround for Sun Forte/x86 see BUG#4681 *solaris*-i?86-no) CFLAGS="$CFLAGS -DBIG_TABLES" CXXFLAGS="$CXXFLAGS -DBIG_TABLES" ;; *) ;; esac case $SYSTEM_TYPE-$ac_cv_prog_gcc in # workaround for Sun Forte compile problem for ndb *solaris*-no) ndb_cxxflags_fix="$ndb_cxxflags_fix -instances=static" ;; *) ;; esac 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 -DSNPRINTF_RETURN_TRUNC -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 -DSNPRINTF_RETURN_TRUNC -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" # set working flags first in line, letting override it (i. e. for debug): CXXFLAGS="+O2 $CXXFLAGS" MAX_C_OPTIMIZE="" MAX_CXX_OPTIMIZE="" ndb_cxxflags_fix="$ndb_cxxflags_fix -Aa" 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 ;; *darwin[[7-8]]*) # don't forget to escape [] like above if test "$ac_cv_prog_gcc" = "yes" then FLAGS="-DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT" 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], [Last argument to get/setsockopt]) ;; *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 -DSNPRINTF_RETURN_TRUNC" CXXFLAGS="$CXXFLAGS -DUNDEF_HAVE_GETHOSTBYNAME_R -DSNPRINTF_RETURN_TRUNC" # fix to handle include of <stdint.h> correctly on OSF1 with cxx compiler CXXFLAGS="$CXXFLAGS -I/usr/include/cxx -I/usr/include/cxx_cname -I/usr/include -I/usr/include.dtk" ;; *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) \$(ndbcluster_libs) \$(pstack_libs) \$(innodb_system_libs) \$(openssl_libs)" cat > $filesed << EOF s,\(^.*\$(MAKE) gen_lex_hash\)\$(EXEEXT),#\1, s,\(\./gen_lex_hash\)\$(EXEEXT),\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], [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 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, [1], [Whether we are using 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, [1]) AC_DEFINE([HAVE_DEC_3_2_THREADS], [1], [Whether we are using OSF1 DEC threads on 3.2]) 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 touch ./include/semaphore.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, [1]) else AC_DEFINE(HAVE_UNIXWARE7_POSIX, [1]) 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, [1]) else AC_DEFINE(HAVE_UNIXWARE7_POSIX, [1]) 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], [1], [UNIXWARE7 threads are not posix]) else AC_DEFINE([HAVE_UNIXWARE7_POSIX], [1], [new UNIXWARE7 threads that are not yet 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_STRUCT_DIRENT_D_NAMLEN 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) 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" # 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 \ 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 \ shmget shmat shmdt shmctl \ sighold sigset sigthreadmask \ snprintf socket stpcpy strcasecmp strerror strnlen strpbrk strstr strtol \ strtoll strtoul strtoull tell tempnam thr_setconcurrency vidattr) # # # case "$target" in *-*-aix4* | *-*-sco*) # (grr) aix 4.3 has a stub for clock_gettime, (returning ENOSYS) # and using AC_TRY_RUN is hard when cross-compiling # We also disable for SCO for the time being, the headers for the # thread library we use conflicts with other headers. ;; *) AC_CHECK_FUNCS(clock_gettime) ;; esac # 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, [1], [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], [1], [Solaris define gethostbyaddr_r with 7 arguments. glibc2 defines this with 8 arguments]) 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], [1], [Solaris define gethostbyname_r with 5 arguments. glibc2 defines this with 6 arguments]) 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], [1], [In OSF 4.0f the 3'd argument to gethostname_r is hostent_data *]) 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], [1], [For some non posix threads]) 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], [1], [For some non posix threads]) 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], [1], [POSIX 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], [1], [POSIX 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], [1], [sigwait with one argument]) 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], [1], [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], [1], [Can netinet be included]) fi AC_MSG_RESULT("$netinet_inc") # Only build client code? AC_ARG_WITH(server, [ --without-server Only build the client.], [with_server=$withval], [with_server=yes] ) AC_ARG_WITH(embedded-server, [ --with-embedded-server Build the embedded server (libmysqld).], [with_embedded_server=$withval], [with_embedded_server=no] ) AC_ARG_WITH(query_cache, [ --without-query-cache Do not build query cache.], [with_query_cache=$withval], [with_query_cache=yes] ) if test "$with_query_cache" = "yes" then AC_DEFINE([HAVE_QUERY_CACHE], [1], [If we want to have query cache]) fi AC_ARG_WITH(geometry, [ --without-geometry Do not build geometry-related parts.], [with_geometry=$withval], [with_geometry=yes] ) if test "$with_geometry" = "yes" then AC_DEFINE([HAVE_SPATIAL], [1], [Spatial extentions]) AC_DEFINE([HAVE_RTREE_KEYS], [1], [RTree keys]) 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 AC_DEFINE([HAVE_EMBEDDED_PRIVILEGE_CONTROL], [1], [Access checks in embedded library]) fi AC_ARG_WITH(extra-tools, [ --without-extra-tools Skip building utilites in the tools directory.], [with_tools=$withval], [with_tools=yes] ) tools_dirs="" if test "$with_tools" = "yes" then if test "$THREAD_SAFE_CLIENT" = "no" then echo "Warning: extra-tools disabled because --enable-thread-safe-client wasn't used" else tools_dirs="tools" fi fi AC_SUBST(tools_dirs) #MYSQL_CHECK_CPU MYSQL_CHECK_MYSQLFS MYSQL_CHECK_VIO MYSQL_CHECK_OPENSSL libmysqld_dirs= if test "$with_embedded_server" = "yes" then libmysqld_dirs=libmysqld # 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]) # Shall we build the docs? AC_ARG_WITH(docs, [ --without-docs Skip building of the documentation.], [with_docs=$withval], [with_docs=yes] ) if test "$with_docs" = "yes" then docs_dirs="Docs" else docs_dirs="" fi AC_SUBST(docs_dirs) # Shall we build the man pages? AC_ARG_WITH(man, [ --without-man Skip building of the man pages.], [with_man=$withval], [with_man=yes] ) if test "$with_man" = "yes" then man_dirs="man" else man_dirs="" fi AC_SUBST(man_dirs) # Shall we build the bench code? AC_ARG_WITH(bench, [ --without-bench Skip building of the benchmark suite.], [with_bench=$withval], [with_bench=yes] ) if test "$with_bench" = "yes" then bench_dirs="sql-bench" else bench_dirs="" fi bench_dirs="$bench_dirs mysql-test" AC_SUBST(bench_dirs) # Don't build readline, i have it already AC_ARG_WITH(readline, [ --without-readline Use system readline instead of bundled copy.], [ with_readline=$withval ], [ with_readline=undefined ] ) AC_ARG_WITH(libedit, [ --without-libedit Use system libedit instead of bundled copy.], [ with_libedit=$withval ], [ with_libedit=undefined ] ) # # 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 compile_readline="no" compile_libedit="no" if [test "$with_libedit" = "yes"] && [test "$with_readline" = "yes"] then AC_MSG_ERROR([You can not use --with-readline and --with-libedit at the same time, please choose one of it]) fi readline_topdir="" readline_basedir="" readline_dir="" readline_h_ln_cmd="" readline_link="" if expr "$SYSTEM_TYPE" : ".*netware.*" > /dev/null; then # For NetWare, do not need readline echo "Skipping readline" else 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_builddir)/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_builddir)/cmd-line-utils/readline readline" compile_readline=yes AC_DEFINE_UNQUOTED(USE_NEW_READLINE_INTERFACE, 1) else 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 "$mysql_cv_libedit_interface" = "no"] then readline_link="-lreadline" else readline_link="-ledit" fi fi fi AC_SUBST(readline_dir) AC_SUBST(readline_topdir) AC_SUBST(readline_basedir) AC_SUBST(readline_link) AC_SUBST(readline_h_ln_cmd) dnl In order to add new charset, you must add charset name to dnl this CHARSETS_AVAILABLE list and sql/share/charsets/Index.xml. dnl If the character set uses strcoll or other special handling, dnl you must also create strings/ctype-$charset_name.c AC_DIVERT_PUSH(0) define(CHARSETS_AVAILABLE0,binary) define(CHARSETS_AVAILABLE1,armscii8 ascii big5 cp1250 cp1251 cp1256 cp1257) define(CHARSETS_AVAILABLE2,cp850 cp852 cp866 dec8 euckr gb2312 gbk geostd8) define(CHARSETS_AVAILABLE3,greek hebrew hp8 keybcs2 koi8r koi8u) define(CHARSETS_AVAILABLE4,latin1 latin2 latin5 latin7 macce macroman) define(CHARSETS_AVAILABLE5,sjis swe7 tis620 ucs2 ujis utf8) DEFAULT_CHARSET=latin1 CHARSETS_AVAILABLE="CHARSETS_AVAILABLE0 CHARSETS_AVAILABLE1 CHARSETS_AVAILABLE2 CHARSETS_AVAILABLE3 CHARSETS_AVAILABLE4 CHARSETS_AVAILABLE5" CHARSETS_COMPLEX="big5 cp1250 euckr gb2312 gbk latin1 latin2 sjis tis620 ucs2 ujis utf8" AC_DIVERT_POP AC_ARG_WITH(charset, [ --with-charset=CHARSET Default character set, use one of: CHARSETS_AVAILABLE0 CHARSETS_AVAILABLE1 CHARSETS_AVAILABLE2 CHARSETS_AVAILABLE3 CHARSETS_AVAILABLE4 CHARSETS_AVAILABLE5], [default_charset="$withval"], [default_charset="$DEFAULT_CHARSET"]) AC_ARG_WITH(collation, [ --with-collation=COLLATION Default collation], [default_collation="$withval"], [default_collation="default"]) AC_ARG_WITH(extra-charsets, [ --with-extra-charsets=CHARSET[,CHARSET,...] Use charsets in addition to default (none, complex, all, or a list selected from the above sets)], [extra_charsets="$withval"], [extra_charsets="none"]) AC_MSG_CHECKING("character sets") CHARSETS="$default_charset latin1 utf8" if test "$extra_charsets" = no; then CHARSETS="$CHARSETS" elif test "$extra_charsets" = none; then CHARSETS="$CHARSETS" elif test "$extra_charsets" = complex; then CHARSETS="$CHARSETS $CHARSETS_COMPLEX" AC_DEFINE([DEFINE_ALL_CHARACTER_SETS],1,[all charsets are available]) elif test "$extra_charsets" = all; then CHARSETS="$CHARSETS $CHARSETS_AVAILABLE" AC_DEFINE([DEFINE_ALL_CHARACTER_SETS],1,[all charsets are available]) else EXTRA_CHARSETS=`echo $extra_charsets | sed -e 's/,/ /g'` CHARSETS="$CHARSETS $EXTRA_CHARSETS" fi for cs in $CHARSETS do case $cs in armscii8) AC_DEFINE(HAVE_CHARSET_armscii8, 1, [Define to enable charset armscii8]) ;; ascii) AC_DEFINE(HAVE_CHARSET_ascii, 1, [Define to enable ascii character set]) ;; big5) AC_DEFINE(HAVE_CHARSET_big5, 1, [Define to enable charset big5]) AC_DEFINE([USE_MB], [1], [Use multi-byte character routines]) AC_DEFINE(USE_MB_IDENT, [1], [ ]) ;; binary) ;; cp1250) AC_DEFINE(HAVE_CHARSET_cp1250, 1, [Define to enable cp1250]) ;; cp1251) AC_DEFINE(HAVE_CHARSET_cp1251, 1, [Define to enable charset cp1251]) ;; cp1256) AC_DEFINE(HAVE_CHARSET_cp1256, 1, [Define to enable charset cp1256]) ;; cp1257) AC_DEFINE(HAVE_CHARSET_cp1257, 1, [Define to enable charset cp1257]) ;; cp850) AC_DEFINE(HAVE_CHARSET_cp850, 1, [Define to enable charset cp850]) ;; cp852) AC_DEFINE(HAVE_CHARSET_cp852, 1, [Define to enable charset cp852]) ;; cp866) AC_DEFINE(HAVE_CHARSET_cp866, 1, [Define to enable charset cp866]) ;; dec8) AC_DEFINE(HAVE_CHARSET_dec8, 1, [Define to enable charset dec8]) ;; euckr) AC_DEFINE(HAVE_CHARSET_euckr, 1, [Define to enable charset euckr]) AC_DEFINE([USE_MB], [1], [Use multi-byte character routines]) AC_DEFINE(USE_MB_IDENT, 1) ;; gb2312) AC_DEFINE(HAVE_CHARSET_gb2312, 1, [Define to enable charset gb2312]) AC_DEFINE([USE_MB], 1, [Use multi-byte character routines]) AC_DEFINE(USE_MB_IDENT, 1) ;; gbk) AC_DEFINE(HAVE_CHARSET_gbk, 1, [Define to enable charset gbk]) AC_DEFINE([USE_MB], [1], [Use multi-byte character routines]) AC_DEFINE(USE_MB_IDENT, 1) ;; geostd8) AC_DEFINE(HAVE_CHARSET_geostd8, 1, [Define to enable charset geostd8]) ;; greek) AC_DEFINE(HAVE_CHARSET_greek, 1, [Define to enable charset greek]) ;; hebrew) AC_DEFINE(HAVE_CHARSET_hebrew, 1, [Define to enable charset hebrew]) ;; hp8) AC_DEFINE(HAVE_CHARSET_hp8, 1, [Define to enable charset hp8]) ;; keybcs2) AC_DEFINE(HAVE_CHARSET_keybcs2, 1, [Define to enable charset keybcs2]) ;; koi8r) AC_DEFINE(HAVE_CHARSET_koi8r, 1, [Define to enable charset koi8r]) ;; koi8u) AC_DEFINE(HAVE_CHARSET_koi8u, 1, [Define to enable charset koi8u]) ;; latin1) AC_DEFINE(HAVE_CHARSET_latin1, 1, [Define to enable charset latin1]) ;; latin2) AC_DEFINE(HAVE_CHARSET_latin2, 1, [Define to enable charset latin2]) ;; latin5) AC_DEFINE(HAVE_CHARSET_latin5, 1, [Define to enable charset latin5]) ;; latin7) AC_DEFINE(HAVE_CHARSET_latin7, 1, [Define to enable charset latin7]) ;; macce) AC_DEFINE(HAVE_CHARSET_macce, 1, [Define to enable charset macce]) ;; macroman) AC_DEFINE(HAVE_CHARSET_macroman, 1, [Define to enable charset macroman]) ;; sjis) AC_DEFINE(HAVE_CHARSET_sjis, 1, [Define to enable charset sjis]) AC_DEFINE([USE_MB], 1, [Use multi-byte character routines]) AC_DEFINE(USE_MB_IDENT, 1) ;; swe7) AC_DEFINE(HAVE_CHARSET_swe7, 1, [Define to enable charset swe7]) ;; tis620) AC_DEFINE(HAVE_CHARSET_tis620, 1, [Define to enable charset tis620]) ;; ucs2) AC_DEFINE(HAVE_CHARSET_ucs2, 1, [Define to enable charset ucs2]) AC_DEFINE([USE_MB], [1], [Use multi-byte character routines]) AC_DEFINE(USE_MB_IDENT, 1) ;; ujis) AC_DEFINE(HAVE_CHARSET_ujis, 1, [Define to enable charset ujis]) AC_DEFINE([USE_MB], [1], [Use multi-byte character routines]) AC_DEFINE(USE_MB_IDENT, 1) ;; utf8) AC_DEFINE(HAVE_CHARSET_utf8, 1, [Define to enable ut8]) AC_DEFINE([USE_MB], 1, [Use multi-byte character routines]) AC_DEFINE(USE_MB_IDENT, 1) ;; *) AC_MSG_ERROR([Charset '$cs' not available. (Available are: $CHARSETS_AVAILABLE). See the Installation chapter in the Reference Manual.]); esac done default_charset_collations="" case $default_charset in armscii8) default_charset_default_collation="armscii8_general_ci" default_charset_collations="armscii8_general_ci armscii8_bin" ;; ascii) default_charset_default_collation="ascii_general_ci" default_charset_collations="ascii_general_ci ascii_bin" ;; big5) default_charset_default_collation="big5_chinese_ci" default_charset_collations="big5_chinese_ci big5_bin" ;; binary) default_charset_default_collation="binary" default_charset_collations="binary" ;; cp1250) default_charset_default_collation="cp1250_general_ci" default_charset_collations="cp1250_general_ci cp1250_czech_cs cp1250_bin" ;; cp1251) default_charset_default_collation="cp1251_general_ci" default_charset_collations="cp1251_general_ci cp1251_general_cs cp1251_bin cp1251_bulgarian_ci cp1251_ukrainian_ci" ;; cp1256) default_charset_default_collation="cp1256_general_ci" default_charset_collations="cp1256_general_ci cp1256_bin" ;; cp1257) default_charset_default_collation="cp1257_general_ci" default_charset_collations="cp1257_general_ci cp1257_lithuanian_ci cp1257_bin" ;; cp850) default_charset_default_collation="cp850_general_ci" default_charset_collations="cp850_general_ci cp850_bin" ;; cp852) default_charset_default_collation="cp852_general_ci" default_charset_collations="cp852_general_ci cp852_bin" ;; cp866) default_charset_default_collation="cp866_general_ci" default_charset_collations="cp866_general_ci cp866_bin" ;; dec8) default_charset_default_collation="dec8_swedish_ci" default_charset_collations="dec8_swedish_ci dec8_bin" ;; euckr) default_charset_default_collation="euckr_korean_ci" default_charset_collations="euckr_korean_ci euckr_bin" ;; gb2312) default_charset_default_collation="gb2312_chinese_ci" default_charset_collations="gb2312_chinese_ci gb2312_bin" ;; gbk) default_charset_default_collation="gbk_chinese_ci" default_charset_collations="gbk_chinese_ci gbk_bin" ;; geostd8) default_charset_default_collation="geostd8_general_ci" default_charset_collations="geostd8_general_ci geostd8_bin" ;; greek) default_charset_default_collation="greek_general_ci" default_charset_collations="greek_general_ci greek_bin" ;; hebrew) default_charset_default_collation="hebrew_general_ci" default_charset_collations="hebrew_general_ci hebrew_bin" ;; hp8) default_charset_default_collation="hp8_english_ci" default_charset_collations="hp8_english_ci hp8_bin" ;; keybcs2) default_charset_default_collation="keybcs2_general_ci" default_charset_collations="keybcs2_general_ci keybcs2_bin" ;; koi8r) default_charset_default_collation="koi8r_general_ci" default_charset_collations="koi8r_general_ci koi8r_bin" ;; koi8u) default_charset_default_collation="koi8u_general_ci" default_charset_collations="koi8u_general_ci koi8u_bin" ;; latin1) default_charset_default_collation="latin1_swedish_ci" default_charset_collations="latin1_general_ci latin1_general_cs latin1_bin latin1_german1_ci latin1_german2_ci latin1_danish_ci latin1_spanish_ci latin1_swedish_ci" ;; latin2) default_charset_default_collation="latin2_general_ci" default_charset_collations="latin2_general_ci latin2_bin latin2_czech_cs latin2_hungarian_ci latin2_croatian_ci" ;; latin5) default_charset_default_collation="latin5_turkish_ci" default_charset_collations="latin5_turkish_ci latin5_bin" ;; latin7) default_charset_default_collation="latin7_general_ci" default_charset_collations="latin7_general_ci latin7_general_cs latin7_bin latin7_estonian_cs" ;; macce) default_charset_default_collation="macce_general_ci" default_charset_collations="macce_general_ci macce_bin" ;; macroman) default_charset_default_collation="macroman_general_ci" default_charset_collations="macroman_general_ci macroman_bin" ;; sjis) default_charset_default_collation="sjis_japanese_ci" default_charset_collations="sjis_japanese_ci sjis_bin" ;; swe7) default_charset_default_collation="swe7_swedish_ci" default_charset_collations="swe7_swedish_ci swe7_bin" ;; tis620) default_charset_default_collation="tis620_thai_ci" default_charset_collations="tis620_thai_ci tis620_bin" ;; ucs2) default_charset_default_collation="ucs2_general_ci" define(UCSC1, ucs2_general_ci ucs2_bin) define(UCSC2, ucs2_czech_ci ucs2_danish_ci) define(UCSC3, ucs2_estonian_ci ucs2_icelandic_ci) define(UCSC4, ucs2_latvian_ci ucs2_lithuanian_ci) define(UCSC5, ucs2_persian_ci ucs2_polish_ci ucs2_romanian_ci) define(UCSC6, ucs2_slovak_ci ucs2_slovenian_ci) define(UCSC7, ucs2_spanish2_ci ucs2_spanish_ci) define(UCSC8, ucs2_swedish_ci ucs2_turkish_ci) define(UCSC9, ucs2_unicode_ci) UCSC="UCSC1 UCSC2 UCSC3 UCSC4 UCSC5 UCSC6 UCSC7 UCSC8 UCSC9" default_charset_collations="$UCSC" ;; ujis) default_charset_default_collation="ujis_japanese_ci" default_charset_collations="ujis_japanese_ci ujis_bin" ;; utf8) default_charset_default_collation="utf8_general_ci" define(UTFC1, utf8_general_ci utf8_bin) define(UTFC2, utf8_czech_ci utf8_danish_ci) define(UTFC3, utf8_estonian_ci utf8_icelandic_ci) define(UTFC4, utf8_latvian_ci utf8_lithuanian_ci) define(UTFC5, utf8_persian_ci utf8_polish_ci utf8_romanian_ci) define(UTFC6, utf8_slovak_ci utf8_slovenian_ci) define(UTFC7, utf8_spanish2_ci utf8_spanish_ci) define(UTFC8, utf8_swedish_ci utf8_turkish_ci) define(UTFC9, utf8_unicode_ci) UTFC="UTFC1 UTFC2 UTFC3 UTFC4 UTFC5 UTFC6 UTFC7 UTFC8 UTFC9" default_charset_collations="$UTFC" ;; *) AC_MSG_ERROR([Charset $cs not available. (Available are: $CHARSETS_AVAILABLE). See the Installation chapter in the Reference Manual.]); esac if test "$default_collation" = default; then default_collation=$default_charset_default_collation fi valid_default_collation=no for cl in $default_charset_collations do if test x"$cl" = x"$default_collation" then valid_default_collation=yes break fi done if test x$valid_default_collation = xyes then AC_MSG_RESULT([default: $default_charset, collation: $default_collation; compiled in: $CHARSETS]) else AC_MSG_ERROR([ Collation $default_collation is not valid for character set $default_charset. Valid collations are: $default_charset_collations. See the Installation chapter in the Reference Manual. ]); fi AC_DEFINE_UNQUOTED([MYSQL_DEFAULT_CHARSET_NAME], ["$default_charset"], [Define the default charset name]) AC_DEFINE_UNQUOTED([MYSQL_DEFAULT_COLLATION_NAME], ["$default_collation"], [Define the default charset name]) MYSQL_CHECK_ISAM MYSQL_CHECK_BDB MYSQL_CHECK_INNODB MYSQL_CHECK_EXAMPLEDB MYSQL_CHECK_ARCHIVEDB MYSQL_CHECK_CSVDB MYSQL_CHECK_NDBCLUSTER # If we have threads generate some library functions and test programs sql_server_dirs= server_scripts= thread_dirs= dnl This probably should be cleaned up more - for now the threaded dnl client is just using plain-old libs. sql_client_dirs="libmysql strings regex client" linked_client_targets="linked_libmysql_sources" CLIENT_LIBS=$NON_THREADED_CLIENT_LIBS if test "$THREAD_SAFE_CLIENT" != "no" then sql_client_dirs="libmysql_r $sql_client_dirs" linked_client_targets="$linked_client_targets linked_libmysql_r_sources" AC_DEFINE([THREAD_SAFE_CLIENT], [1], [Should be client be thread safe]) fi CLIENT_LIBS="$CLIENT_LIBS $STATIC_NSS_FLAGS" AC_SUBST(CLIENT_LIBS) AC_SUBST(sql_client_dirs) AC_SUBST(linked_client_targets) # If configuring for NetWare, set up to link sources from and build the netware directory netware_dir= linked_netware_sources= if expr "$SYSTEM_TYPE" : ".*netware.*" > /dev/null; then netware_dir="netware" linked_netware_sources="linked_netware_sources" fi AC_SUBST(netware_dir) AC_SUBST(linked_netware_sources) AM_CONDITIONAL(HAVE_NETWARE, test "$netware_dir" = "netware") # Ensure that table handlers gets all modifications to CFLAGS/CXXFLAGS export CC CXX CFLAGS CXXFLAGS LD LDFLAGS AR ac_configure_args="$ac_configure_args CFLAGS='$CFLAGS' CXXFLAGS='$CXXFLAGS'" if test "$with_server" = "yes" -o "$THREAD_SAFE_CLIENT" != "no" then AC_DEFINE([THREAD], [1], [Define if you want to have threaded code. This may be undef on client code]) # Avoid _PROGRAMS names THREAD_LPROGRAMS="test_thr_alarm\$(EXEEXT) test_thr_lock\$(EXEEXT)" AC_SUBST(THREAD_LPROGRAMS) THREAD_LOBJECTS="thr_alarm.o thr_lock.o thr_mutex.o thr_rwlock.o my_pthread.o my_thr_init.o" AC_SUBST(THREAD_LOBJECTS) server_scripts="mysqld_safe mysql_install_db" sql_server_dirs="strings dbug mysys extra regex" # # Configuration for optional table handlers # if test X"$have_isam" != Xno then sql_server_dirs="$sql_server_dirs isam merge" AC_CONFIG_FILES(isam/Makefile merge/Makefile) fi if test X"$have_berkeley_db" != Xno; then if test X"$have_berkeley_db" != Xyes; then # we must build berkeley db from source sql_server_dirs="$sql_server_dirs $have_berkeley_db" AC_CONFIG_FILES(bdb/Makefile) echo "CONFIGURING FOR BERKELEY DB" bdb_conf_flags="--disable-shared" if test $with_debug = "yes" then bdb_conf_flags="$bdb_conf_flags --enable-debug --enable-diagnostic" fi # NOTICE: if you're compiling BDB, it needs to be a SUBDIR # of $srcdir (i.e., you can 'cd $srcdir/$bdb'). It won't # work otherwise. if test -d "$bdb"; then : else # This should only happen when doing a VPATH build echo "NOTICE: I have to make the BDB directory: `pwd`:$bdb" mkdir "$bdb" || exit 1 fi if test -d "$bdb"/build_unix; then : else # This should only happen when doing a VPATH build echo "NOTICE: I have to make the build_unix directory: `pwd`:$bdb/build_unix" mkdir "$bdb/build_unix" || exit 1 fi rel_srcdir= case "$srcdir" in /* ) rel_srcdir="$srcdir" ;; * ) rel_srcdir="../../$srcdir" ;; esac (cd $bdb/build_unix && \ sh $rel_srcdir/$bdb/dist/configure $bdb_conf_flags) || \ AC_MSG_ERROR([could not configure Berkeley DB]) dnl echo "bdb = '$bdb'; inc = '$bdb_includes', lib = '$bdb_libs'" echo "END OF BERKELEY DB CONFIGURATION" fi AC_DEFINE([HAVE_BERKELEY_DB], [1], [Have berkeley db installed]) else if test -d bdb; then : else mkdir bdb && mkdir bdb/build_unix fi if test -r bdb/build_unix/db.h; then : else cat <<EOF > bdb/build_unix/db.h This file is a placeholder to fool make. The way that automake and GNU make work together causes some files to depend on this header, even if we're not building with Berkeley DB. Obviously, if this file *is* used, it'll break and hopefully we can find out why this file was generated by ${top_srcdir}/configure instead of the real db.h. If you run into some problems because of this file, please use mysql_bug to generate a bug report, and give the exact output of make and any details you can think of. Send the message to bugs@lists.mysql.com. Thank you! EOF fi fi if test X"$have_innodb" = Xyes then innodb_conf_flags="" sql_server_dirs="$sql_server_dirs innobase" AC_CONFIG_SUBDIRS(innobase) fi if test X"$have_ndbcluster" = Xyes then if test X"$mysql_cv_compress" != Xyes then echo echo "MySQL Cluster table handler ndbcluster requires compress/uncompress." echo "Commonly available in libzlib.a. Please install and rerun configure." echo exit 1 fi sql_server_dirs="$sql_server_dirs ndb" fi # # END of configuration for optional table handlers # sql_server_dirs="$sql_server_dirs myisam myisammrg heap vio sql" if test "$with_posix_threads" = "no" -o "$with_mit_threads" = "yes" then # MIT user level threads thread_dirs="mit-pthreads" AC_DEFINE([HAVE_mit_thread], [1], [Do we use user level threads]) MT_INCLUDES="-I\$(top_srcdir)/mit-pthreads/include" AC_SUBST(MT_INCLUDES) if test -n "$OVERRIDE_MT_LD_ADD" then MT_LD_ADD="$OVERRIDE_MT_LD_ADD" else MT_LD_ADD="-L \$(top_srcdir)/mit-pthreads/obj/ -lpthread" fi AC_SUBST(MT_LD_ADD) echo "" echo "Configuring MIT Pthreads" # We will never install so installation paths are not needed. (cd mit-pthreads && sh ./configure) || exit 1 echo "End of MIT Pthreads configuration" echo "" LIBS="$MT_LD_ADD $LIBS" fi fi # IMPORTANT - do not modify LIBS past this line - this hack is the only way # I know to add the static NSS magic if we have static NSS libraries with # glibc - Sasha LDFLAGS="$LDFLAGS $OTHER_LIBC_LIB" LIBS="$LIBS $STATIC_NSS_FLAGS" AC_SUBST(sql_server_dirs) AC_SUBST(thread_dirs) AC_SUBST(server_scripts) # Now that sql_client_dirs and sql_server_dirs are stable, determine the union. # Start with the (longer) server list, add each client item not yet present. sql_union_dirs=" $sql_server_dirs " for DIR in $sql_client_dirs do if echo $sql_union_dirs | grep " $DIR " >/dev/null then : # already present, skip else sql_union_dirs="$sql_union_dirs $DIR " fi done AC_SUBST(sql_union_dirs) #if test "$with_posix_threads" = "no" -o "$with_mit_threads" = "yes" #then # MIT pthreads does now support connecting with unix sockets # AC_DEFINE([HAVE_THREADS_WITHOUT_SOCKETS], [], [MIT pthreads does not support connecting with unix sockets]) #fi # Some usefull subst AC_SUBST(CC) AC_SUBST(GXX) #Remove TOOLS_LIBS, because this is included in LIBRARIES #AC_SUBST(TOOLS_LIBS) # Set configuration options for make_binary_distribution case $SYSTEM_TYPE in *netware*) MAKE_BINARY_DISTRIBUTION_OPTIONS=--no-strip ;; *) MAKE_BINARY_DISTRIBUTION_OPTIONS= ;; esac if test X"$have_ndbcluster" = Xyes then MAKE_BINARY_DISTRIBUTION_OPTIONS="$MAKE_BINARY_DISTRIBUTION_OPTIONS --with-ndbcluster" CXXFLAGS="$CXXFLAGS \$(NDB_CXXFLAGS)" if test "$have_ndb_debug" = "default" then have_ndb_debug=$with_debug fi if test "$have_ndb_debug" = "yes" then # Medium debug. NDB_DEFS="-DNDB_DEBUG -DVM_TRACE -DERROR_INSERT -DARRAY_GUARD" elif test "$have_ndb_debug" = "full" then NDB_DEFS="-DNDB_DEBUG_FULL -DVM_TRACE -DERROR_INSERT -DARRAY_GUARD" else # no extra ndb debug but still do asserts if debug version if test "$with_debug" = "yes" -o "$with_debug" = "full" then NDB_DEFS="" else NDB_DEFS="-DNDEBUG" fi fi AC_SUBST([NDB_DEFS]) AC_SUBST([ndb_cxxflags_fix]) if test X"$ndb_port" = Xdefault then ndb_port="1186" fi AC_SUBST([ndb_port]) if test X"$ndb_port_base" = Xdefault then ndb_port_base="2202" fi AC_SUBST([ndb_port_base]) ndb_transporter_opt_objs="" if test "$ac_cv_func_shmget" = "yes" && test "$ac_cv_func_shmat" = "yes" && test "$ac_cv_func_shmdt" = "yes" && test "$ac_cv_func_shmctl" = "yes" then AC_DEFINE([NDB_SHM_TRANSPORTER], [1], [Including Ndb Cluster DB shared memory transporter]) AC_MSG_RESULT([Including ndb shared memory transporter]) ndb_transporter_opt_objs="$ndb_transporter_opt_objs SHM_Transporter.lo SHM_Transporter.unix.lo" else AC_MSG_RESULT([Not including ndb shared memory transporter]) fi if test X"$have_ndb_sci" = Xyes then ndb_transporter_opt_objs="$ndb_transporter_opt_objs SCI_Transporter.lo" fi AC_SUBST([ndb_transporter_opt_objs]) ndb_opt_subdirs= ndb_bin_am_ldflags="-static" if test X"$have_ndb_test" = Xyes then ndb_opt_subdirs="test" ndb_bin_am_ldflags="" fi if test X"$have_ndb_docs" = Xyes then ndb_opt_subdirs="$ndb_opt_subdirs docs" ndb_bin_am_ldflags="" fi AC_SUBST([ndb_bin_am_ldflags]) AC_SUBST([ndb_opt_subdirs]) AC_CONFIG_FILES(ndb/Makefile ndb/include/Makefile dnl ndb/src/Makefile ndb/src/common/Makefile dnl ndb/docs/Makefile dnl ndb/tools/Makefile dnl ndb/src/common/debugger/Makefile ndb/src/common/debugger/signaldata/Makefile dnl ndb/src/common/portlib/Makefile dnl ndb/src/common/util/Makefile dnl ndb/src/common/logger/Makefile dnl ndb/src/common/transporter/Makefile dnl ndb/src/common/mgmcommon/Makefile dnl ndb/src/kernel/Makefile dnl ndb/src/kernel/error/Makefile dnl ndb/src/kernel/blocks/Makefile dnl ndb/src/kernel/blocks/cmvmi/Makefile dnl ndb/src/kernel/blocks/dbacc/Makefile dnl ndb/src/kernel/blocks/dbdict/Makefile dnl ndb/src/kernel/blocks/dbdih/Makefile dnl ndb/src/kernel/blocks/dblqh/Makefile dnl ndb/src/kernel/blocks/dbtc/Makefile dnl ndb/src/kernel/blocks/dbtup/Makefile dnl ndb/src/kernel/blocks/ndbfs/Makefile dnl ndb/src/kernel/blocks/ndbcntr/Makefile dnl ndb/src/kernel/blocks/qmgr/Makefile dnl ndb/src/kernel/blocks/trix/Makefile dnl ndb/src/kernel/blocks/backup/Makefile dnl ndb/src/kernel/blocks/dbutil/Makefile dnl ndb/src/kernel/blocks/suma/Makefile dnl ndb/src/kernel/blocks/grep/Makefile dnl ndb/src/kernel/blocks/dbtux/Makefile dnl ndb/src/kernel/vm/Makefile dnl ndb/src/mgmapi/Makefile dnl ndb/src/ndbapi/Makefile dnl ndb/src/mgmsrv/Makefile dnl ndb/src/mgmclient/Makefile dnl ndb/src/cw/Makefile dnl ndb/src/cw/cpcd/Makefile dnl ndb/test/Makefile dnl ndb/test/src/Makefile dnl ndb/test/ndbapi/Makefile dnl ndb/test/ndbapi/bank/Makefile dnl ndb/test/tools/Makefile dnl ndb/test/run-test/Makefile mysql-test/ndb/Makefile dnl ndb/include/ndb_version.h ndb/include/ndb_global.h dnl ) fi AC_SUBST(MAKE_BINARY_DISTRIBUTION_OPTIONS) # Output results AC_CONFIG_FILES(Makefile extra/Makefile mysys/Makefile dnl strings/Makefile regex/Makefile heap/Makefile dnl myisam/Makefile myisammrg/Makefile dnl os2/Makefile os2/include/Makefile os2/include/sys/Makefile dnl man/Makefile BUILD/Makefile vio/Makefile dnl libmysql_r/Makefile libmysqld/Makefile libmysqld/examples/Makefile dnl libmysql/Makefile client/Makefile dnl pstack/Makefile pstack/aout/Makefile sql/Makefile sql/share/Makefile dnl sql-common/Makefile SSL/Makefile dnl dbug/Makefile scripts/Makefile dnl include/Makefile sql-bench/Makefile tools/Makefile dnl tests/Makefile Docs/Makefile Docs/Images/Makefile support-files/Makefile dnl support-files/MacOSX/Makefile mysql-test/Makefile dnl netware/Makefile dnl include/mysql_version.h dnl cmd-line-utils/Makefile dnl cmd-line-utils/libedit/Makefile dnl zlib/Makefile dnl cmd-line-utils/readline/Makefile) AC_CONFIG_COMMANDS([default], , test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h) AC_OUTPUT rm -f $AVAILABLE_LANGUAGES_ERRORS_RULES echo echo "MySQL has a Web site at http://www.mysql.com/ which carries details on the" echo "latest release, upcoming features, and other information to make your" echo "work or play with MySQL more productive. There you can also find" echo "information about mailing lists for MySQL discussion." echo echo "Remember to check the platform specific part of the reference manual for" echo "hints about installing MySQL on your platform. Also have a look at the" echo "files in the Docs directory." echo # The following text is checked in ./Do-compile to verify that configure # ended sucessfully - don't remove it. echo "Thank you for choosing MySQL!" echo