dnl -*- ksh -*- dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.52)dnl Minimum Autoconf version required. AC_INIT(sql/mysqld.cc) AC_CANONICAL_SYSTEM # The Docs Makefile.am parses this line! # remember to also update version.c in ndb # # When changing major version number please also check switch statement # in client/mysqlbinlog.cc:check_master_version(). AM_INIT_AUTOMAKE(mysql, 5.5.0-beta) AM_CONFIG_HEADER([include/config.h:config.h.in]) PROTOCOL_VERSION=10 DOT_FRM_VERSION=6 # See the libtool docs for information on how to do shared lib versions. SHARED_LIB_MAJOR_VERSION=16 SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0 NDB_SHARED_LIB_MAJOR_VERSION=3 NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION: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 # We take some made up examples # # VERSION 5.1.40sp1-alpha 5.0.34a # MYSQL_NO_DASH_VERSION 5.1.40sp1 5.0.34a # MYSQL_NUMERIC_VERSION 5.1.40 5.0.34 # MYSQL_BASE_VERSION 5.1 5.0 # MYSQL_VERSION_ID 50140 50034 # MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|-.*$||"` MYSQL_NUMERIC_VERSION=`echo $MYSQL_NO_DASH_VERSION | sed -e "s|[[a-z]][[a-z0-9]]*$||"` MYSQL_BASE_VERSION=`echo $MYSQL_NUMERIC_VERSION | sed -e "s|\.[[^.]]*$||"` MYSQL_VERSION_ID=`echo $MYSQL_NUMERIC_VERSION | \ awk -F. '{printf "%d%0.2d%0.2d", $1, $2, $3}'` MYSQL_COPYRIGHT_YEAR=`date '+%Y'` # Add previous major version for debian package upgrade path MYSQL_PREVIOUS_BASE_VERSION=5.0 # The port should be constant for a LONG time MYSQL_TCP_PORT_DEFAULT=3306 MYSQL_UNIX_ADDR_DEFAULT="/tmp/mysql.sock" dnl Include m4 sinclude(config/ac-macros/alloca.m4) sinclude(config/ac-macros/check_cpu.m4) sinclude(config/ac-macros/character_sets.m4) sinclude(config/ac-macros/compiler_flag.m4) sinclude(config/ac-macros/plugins.m4) sinclude(config/ac-macros/dtrace.m4) sinclude(config/ac-macros/ha_ndbcluster.m4) sinclude(config/ac-macros/large_file.m4) sinclude(config/ac-macros/misc.m4) sinclude(config/ac-macros/readline.m4) sinclude(config/ac-macros/ssl.m4) sinclude(config/ac-macros/zlib.m4) # 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" ##### ##### AC_SUBST(MYSQL_NO_DASH_VERSION) AC_SUBST(MYSQL_BASE_VERSION) AC_SUBST(MYSQL_VERSION_ID) AC_SUBST(MYSQL_PREVIOUS_BASE_VERSION) AC_SUBST(MYSQL_COPYRIGHT_YEAR) 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_MAJOR_VERSION) AC_SUBST(SHARED_LIB_VERSION) AC_SUBST(AVAILABLE_LANGUAGES) # Canonicalize the configuration name. # Check whether --with-system-type or --without-system-type was given. AC_ARG_WITH(system-type, [ --with-system-type Set the system type, like "sun-solaris10"], [SYSTEM_TYPE="$withval"], [SYSTEM_TYPE="$host_vendor-$host_os"]) AC_ARG_WITH(machine-type, [ --with-machine-type Set the machine type, like "powerpc"], [MACHINE_TYPE="$withval"], [MACHINE_TYPE="$host_cpu"]) AC_SUBST(SYSTEM_TYPE) AC_DEFINE_UNQUOTED([SYSTEM_TYPE], ["$SYSTEM_TYPE"], [Name of system, eg sun-solaris]) AC_SUBST(MACHINE_TYPE) AC_DEFINE_UNQUOTED([MACHINE_TYPE], ["$MACHINE_TYPE"], [Machine type name, eg sparc]) # 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_CC="$CC" SAVE_CXX="$CXX" 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_CC) AC_SUBST(SAVE_CXX) AC_SUBST(SAVE_ASFLAGS) AC_SUBST(SAVE_CFLAGS) AC_SUBST(SAVE_CXXFLAGS) AC_SUBST(SAVE_LDFLAGS) AC_SUBST(SAVE_CXXLDFLAGS) AC_SUBST(CXXLDFLAGS) #AC_ARG_PROGRAM # Automaticly invoked by AM_INIT_AUTOMAKE AM_SANITY_CHECK # This is needed is SUBDIRS is set AC_PROG_MAKE_SET ############################################################################## # The below section needs to be done before AC_PROG_CC ############################################################################## # Hack for OS X/Darwin and Metrowerks CodeWarrior AC_ARG_WITH(darwin-mwcc, [ --with-darwin-mwcc Use Metrowerks CodeWarrior wrappers on OS X/Darwin],[ if [ "with_darwin_mwcc" = yes ] ; then builddir=`pwd` ccwrapper="$builddir/support-files/MacOSX/mwcc-wrapper" arwrapper="$builddir/support-files/MacOSX/mwar-wrapper" CC="$ccwrapper" CXX="$ccwrapper" LD="$ccwrapper" AR="$arwrapper" RANLIB=: export CC CXX LD AR RANLIB AC_SUBST(AR) AC_SUBST(RANLIB) fi ]) AM_CONDITIONAL(DARWIN_MWCC, test x$with_darwin_mwcc = xyes) 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 ################ End of section to be done before AC_PROG_CC ################# # 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 AC_SUBST(CC_VERSION) MYSQL_CHECK_CXX_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_SUBST(NM)dnl # NM= "$NM -X64" #archive_expsym_cmds= `echo "$archive_expsym_cmds" | sed -e '/"$(CC)"//'` #archive_expsym_cmds= "$CC -q64 $archive_expsym_cmds" # CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed -e 's/-fbranch-probabilities//; s/-Wall//; s/-ansi//; s/-pedantic//; s/-Wcheck//'` #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_CHECK_PROGS(YACC, ['bison -y -p MYSQL']) AC_CHECK_PROG(PDFMANUAL, pdftex, manual.pdf) AC_CHECK_PROG(DVIS, tex, manual.dvi) #check the return type of sprintf AC_MSG_CHECKING("return type of sprintf") 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")] )], # Cross compile, assume POSIX [AC_DEFINE(SPRINTF_RETURNS_INT, [1], [POSIX sprintf]) AC_MSG_RESULT("int (we assume)")] ) 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*) ;; *) AC_MSG_WARN([Adding -belf option to ldflags.]) LDFLAGS="$LDFLAGS -belf" ;; esac ]) ;; *) AC_SYS_COMPILER_FLAG(-belf,sco_belf_option,CFLAGS,[],[ case "$LDFLAGS" in *-belf*) ;; *) AC_MSG_WARN([Adding -belf option to ldflags.]) LDFLAGS="$LDFLAGS -belf" ;; esac ]) ;; esac ;; sysv5UnixWare* | sysv5OpenUNIX8*) if test "$GCC" != "yes"; then # Use the built-in alloca() CFLAGS="$CFLAGS -Kalloca" fi CXXFLAGS="$CXXFLAGS -DNO_CPLUSPLUS_ALLOCA" ;; sysv5SCO_SV6.0.0*) if test "$GCC" != "yes"; then # Use the built-in alloca() CFLAGS="$CFLAGS -Kalloca" CXXFLAGS="$CFLAGS -Kalloca" # Use no_implicit for templates CXXFLAGS="$CXXFLAGS -Tno_implicit" AC_DEFINE([HAVE_EXPLICIT_TEMPLATE_INSTANTIATION], [1], [Defined by configure. Use explicit template instantiation.]) fi ;; esac AC_SUBST(CC) AC_SUBST(CFLAGS) AC_SUBST(CXX) AC_SUBST(CXXFLAGS) AC_SUBST(ASFLAGS) AC_SUBST(LD) AC_SUBST(INSTALL_SCRIPT) export CC CXX CFLAGS LD LDFLAGS AR ARFLAGS if test "$GCC" = "yes" then # mysqld requires -fno-implicit-templates. # Disable exceptions as they seams to create problems with gcc and threads. # mysqld doesn't use run-time-type-checking, so we disable it. # We should use -Wno-invalid-offsetof flag to disable some warnings from gcc # regarding offset() usage in C++ which are done in a safe manner in the # server CXXFLAGS="$CXXFLAGS -fno-implicit-templates -fno-exceptions -fno-rtti" AC_DEFINE([HAVE_EXPLICIT_TEMPLATE_INSTANTIATION], [1], [Defined by configure. Use explicit template instantiation.]) fi MYSQL_PROG_AR # libmysqlclient versioning when linked with GNU ld. if $LD --version 2>/dev/null| grep GNU >/dev/null 2>&1; then LD_VERSION_SCRIPT="-Wl,--version-script=\$(top_builddir)/libmysql/libmysql.ver" AC_CONFIG_FILES(libmysql/libmysql.ver) fi AC_SUBST(LD_VERSION_SCRIPT) # Avoid bug in fcntl on some versions of linux AC_MSG_CHECKING([if we should use 'skip-external-locking' as default for $target_os]) # Any variation of Linux if expr "$target_os" : "[[Ll]]inux.*" > /dev/null then MYSQLD_DEFAULT_SWITCHES="--skip-external-locking" TARGET_LINUX="true" AC_MSG_RESULT([yes]) AC_DEFINE([TARGET_OS_LINUX], [1], [Whether we build for Linux]) else MYSQLD_DEFAULT_SWITCHES="" TARGET_LINUX="false" AC_MSG_RESULT([no]) fi AC_SUBST(MYSQLD_DEFAULT_SWITCHES) AC_SUBST(TARGET_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) case $SYSTEM_TYPE in *netware*) ;; *) # 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 ;; esac 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) AC_PATH_PROG(DIFF, diff, diff) # 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) # Enable the abi_check rule only if gcc is available if test "$GCC" != "yes" || expr "$CC" : ".*icc.*" then ABI_CHECK="" else ABI_CHECK="abi_check" fi AC_SUBST(ABI_CHECK) # Look for PS usage. We use double dollar-signs in FIND_PROC because this # value is written to a makefile, which interprets away one level of # dollar-signs. So, interpretation stages are m4 and then shell in autoconf, # then Make, then shell. The autoconf substitution uses single quotes, so # no unprotected single quotes should appear in the expression. AC_PATH_PROG(PS, ps, ps) AC_MSG_CHECKING("how to check if pid exists") PS=$ac_cv_path_PS # Linux style if $PS wwwp $$ 2> /dev/null | grep -- "$0" > /dev/null then FIND_PROC="$PS wwwp \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" # Solaris elif $PS -fp $$ 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" # BSD style elif $PS -uaxww 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" # SysV style elif $PS -ef 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -ef | grep -v \" grep\" | grep -v mysqld_safe | 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 -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" else case $SYSTEM_TYPE in *freebsd*|*dragonfly*) FIND_PROC="$PS p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" ;; *darwin*) FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" ;; *cygwin*) FIND_PROC="$PS -e | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" ;; *netware*) FIND_PROC= ;; *) AC_MSG_ERROR([Could not find the right ps and/or grep switches. Which OS is this? See the Installation chapter in the Reference Manual.]) 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 CCASFLAGS="$CCASFLAGS $ASFLAGS" # Check if we need noexec stack for assembler AC_CHECK_NOEXECSTACK 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" 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) # AC_CHECK_TOOL([NM], [nm]) if test "$TARGET_LINUX" = "true" -a "$static_nss" = "" then tmp=`$NM ${other_libc_lib:-/usr/lib*}/libc.a | grep _nss_files_getaliasent_r1` 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 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, [ --disable-thread-safe-client Compile the client without threads.], [ THREAD_SAFE_CLIENT=$enableval ], [ THREAD_SAFE_CLIENT=yes ] ) # 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" && $AS strings/strings-x86.s -o checkassembler >/dev/null 2>&1 && test -f checkassembler && (rm -f checkassembler; exit 0;)) 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 # Add query profiler AC_MSG_CHECKING(if SHOW PROFILE should be enabled.) AC_ARG_ENABLE(profiling, AS_HELP_STRING([--enable-profiling], [Enable profiling of query lifetime.]), [ ENABLED_PROFILING=$enableval ], [ ENABLED_PROFILING=no ]) AC_DEFINE([ENABLED_PROFILING], [1], [If SHOW PROFILE should be enabled]) if test "$ENABLED_PROFILING" = "yes" then AC_MSG_RESULT([yes]) 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 # if we actually defaulted (as opposed to the pathological case of # --with-tcp-port= which might in theory # happen if whole batch of servers was built from a script), set # the default to zero to indicate that; we don't lose information # that way, because 0 obviously indicates that we can get the # default value from MYSQL_TCP_PORT. this seems really evil, but # testing for MYSQL_TCP_PORT==MYSQL_TCP_PORT_DEFAULT would make a # a port of MYSQL_TCP_PORT_DEFAULT magic even if the builder did not # intend it to mean "use the default, in fact, look up a good default # from /etc/services if you can", but really, really meant 3306 when # they passed in 3306. When they pass in a specific value, let them # have it; don't second guess user and think we know better, this will # just make people cross. this makes the the logic work like this # (which is complicated enough): # # - if a port was set during build, use that as a default. # # - otherwise, try to look up a port in /etc/services; if that fails, # use MYSQL_TCP_PORT_DEFAULT (at the time of this writing 3306) # # - allow the MYSQL_TCP_PORT environment variable to override that. # # - allow command-line parameters to override all of the above. # # the top-most MYSQL_TCP_PORT_DEFAULT is read from win/configure.js, # so don't mess with that. MYSQL_TCP_PORT_DEFAULT=0 ] ) 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 # If we should allow init-file, skip-grant-table and bootstrap options AC_MSG_CHECKING(If we should should enable init-file, skip-grant-table options and bootstrap) AC_ARG_ENABLE(grant-options, [ --disable-grant-options Disables the use of --init-file, --skip-grant-tables and --bootstrap options], [ mysql_grant_options_enabled=$enableval ], [ mysql_grant_options_enabled=yes ] ) if test "$mysql_grant_options_enabled" = "yes" then AC_MSG_RESULT([yes]) else AC_DEFINE([DISABLE_GRANT_OPTIONS], [1], [Disables the use of --init-file, --skip-grant-tables and --bootstrap options]) 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 fenv.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 sys/ipc.h sys/shm.h linux/config.h \ sys/prctl.h sys/resource.h sys/param.h port.h ieeefp.h \ execinfo.h) AC_CHECK_HEADERS([xfs/xfs.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_SEARCH_LIBS(setsockopt, socket) # This may get things to compile even if bind-8 is installed AC_SEARCH_LIBS(bind, bind) # Check if crypt() exists in libc or libcrypt, sets LIBS if needed AC_SEARCH_LIBS(crypt, crypt, AC_DEFINE(HAVE_CRYPT, 1, [crypt])) # See if we need a library for address lookup. AC_SEARCH_LIBS(inet_aton, [socket nsl resolv]) # For the sched_yield() function on Solaris AC_SEARCH_LIBS(sched_yield, posix4, AC_DEFINE(HAVE_SCHED_YIELD, 1, [sched_yield])) MYSQL_CHECK_ZLIB_WITH_COMPRESS # For large pages support if test "$TARGET_LINUX" = "true" then # For SHM_HUGETLB on Linux AC_CHECK_DECLS(SHM_HUGETLB, AC_DEFINE([HAVE_LARGE_PAGES], [1], [Define if you have large pages support]) AC_DEFINE([HAVE_LARGE_PAGE_OPTION], [1], [Define if you have large page option]) AC_DEFINE([HUGETLB_USE_PROC_MEMINFO], [1], [Define if /proc/meminfo shows the huge page size (Linux only)]) , , [ #include ] ) else # For large pages support on Solaris AC_CHECK_DECLS(MHA_MAPSIZE_VA, AC_DEFINE([HAVE_SOLARIS_LARGE_PAGES], [1], [Define to 1 if you have large pages support]) AC_DEFINE([HAVE_LARGE_PAGE_OPTION], [1], [Define if you have large page option]) , , [ #include ] ) fi #-------------------------------------------------------------------- # 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 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 "$TARGET_LINUX" = "true"; then AC_ARG_WITH(pstack, [ --with-pstack Use the pstack backtrace library], [ USE_PSTACK=$withval ], [ USE_PSTACK=no ]) pstack_libs= pstack_dir= if test "$USE_PSTACK" = yes -a "$TARGET_LINUX" = "true" -a "$BASE_MACHINE_TYPE" = "i386" 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_dir="pstack" pstack_libs="../pstack/libpstack.a -lbfd -liberty" # We must link staticly when using pstack with_mysqld_ldflags="-all-static" AC_SUBST([pstack_dir]) 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 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_SEARCH_LIBS(gtty, compat) fi # We make a special variable for non-threaded version of LIBS to avoid # including thread libs into non-threaded version of MySQL client library. # Later in this script LIBS will be augmented with a threads library. NON_THREADED_LIBS="$LIBS" AC_CHECK_TYPES([int8, uint8, int16, uint16, int32, uint32, int64, uint64, uchar, uint, ulong],[],[], [ #include ]) AC_CHECK_TYPES([in_addr_t], [], [], [ #include #include #include #include ]) AC_CHECK_TYPES([fp_except], [], [], [ #include #include ]) # # 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 AC_MSG_WARN([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 AC_MSG_WARN([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*) AC_MSG_WARN([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*) AC_MSG_WARN([Enabling getpass() workaround for SunOS]) CFLAGS="$CFLAGS -DHAVE_BROKEN_GETPASS -DSOLARIS"; ;; *hpux10.20*) AC_MSG_WARN([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 AC_MSG_WARN([Using --with-named-thread=-lpthread]) with_named_thread="-lcma" fi ;; *hpux11.*) AC_MSG_WARN([Enabling workarounds for hpux 11]) CFLAGS="$CFLAGS -DHPUX11 -DSNPRINTF_RETURN_TRUNC -DHAVE_BROKEN_PREAD -DHAVE_BROKEN_GETPASS -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT" CXXFLAGS="$CXXFLAGS -DHPUX11 -DSNPRINTF_RETURN_TRUNC -DHAVE_BROKEN_PREAD -D_INCLUDE_LONGLONG -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT" if test "$with_named_thread" = "no" then AC_MSG_WARN([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_DARWIN5_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="-D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DHAVE_BROKEN_REALPATH -DDONT_DECLARE_CXA_PURE_VIRTUAL " CFLAGS="$CFLAGS $FLAGS" CXXFLAGS="$CXXFLAGS $FLAGS" MAX_C_OPTIMIZE="-O" fi ;; *darwin*) if test "$ac_cv_prog_gcc" = "yes" then FLAGS="-D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL" CFLAGS="$CFLAGS $FLAGS" CXXFLAGS="$CXXFLAGS $FLAGS" MAX_C_OPTIMIZE="-O" fi ;; *freebsd*|*dragonfly*) AC_MSG_WARN([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*) AC_MSG_WARN([Adding flag -Dunix]) CFLAGS="$CFLAGS -Dunix" CXXFLAGS="$CXXFLAGS -Dunix" OVERRIDE_MT_LD_ADD="\$(top_srcdir)/mit-pthreads/obj/libpthread.a" ;; *bsdi*) AC_MSG_WARN([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 AC_MSG_WARN([Using --with-named-thread=-lpthread]) with_named_thread="-lpthread" fi CXXFLAGS="$CXXFLAGS -D_BOOL" ;; *aix4.3*) AC_MSG_WARN([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 AC_MSG_WARN([Adding defines for DEC OSF on alpha]) CFLAGS="$CFLAGS -mieee" CXXFLAGS="$CXXFLAGS -mieee" fi AC_MSG_WARN([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 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 extra/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="\$(pstack_libs) \$(openssl_libs) \$(yassl_libs)" cat > $filesed << EOF s,\(\./gen_lex_hash\)\$(EXEEXT),\1.linux, s%\(mysqld_DEPENDENCIES = \)%\1$lib_DEPENDENCIES % EOF ;; extra/Makefile.in) cat > $filesed << EOF s,\(extra/comp_err\)\$(EXEEXT),\1.linux, EOF ;; libmysql/Makefile.in) cat > $filesed << EOF s,libyassl.la,.libs/libyassl.a, s,libtaocrypt.la,.libs/libtaocrypt.a, EOF ;; libmysql_r/Makefile.in) cat > $filesed << EOF s,libyassl.la,.libs/libyassl.a, s,libtaocrypt.la,.libs/libtaocrypt.a, 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/manual.chm \ Docs/mysql.info \ Docs/INSTALL-BINARY \ INSTALL-SOURCE \ COPYING 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" # Search thread lib on Linux if test "$with_named_thread" = "no" then AC_MSG_CHECKING("Linux threads") if test "$TARGET_LINUX" = "true" then AC_MSG_RESULT("starting") # use getconf to check glibc contents AC_MSG_CHECKING("getconf GNU_LIBPTHREAD_VERSION") case `getconf GNU_LIBPTHREAD_VERSION | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` in NPTL* ) AC_MSG_RESULT("NPTL") AC_DEFINE([HAVE_NPTL], [1], [NPTL threads implementation]) with_named_thread="-lpthread" ;; LINUXTHREADS* ) AC_MSG_RESULT("Linuxthreads") AC_DEFINE([HAVE_LINUXTHREADS], [1], [Whether we are using Xavier Leroy's LinuxThreads]) with_named_thread="-lpthread" ;; * ) AC_MSG_RESULT("unknown") ;; esac if test "$with_named_thread" = "no" then # old method, check headers # Look for LinuxThreads. AC_MSG_CHECKING("LinuxThreads in header file comment") res=`grep Linuxthreads /usr/include/pthread.h 2>/dev/null | wc -l` if test "$res" -gt 0 then AC_MSG_RESULT("Found") AC_DEFINE([HAVE_LINUXTHREADS], [1], [Whether we are using Xavier Leroy's LinuxThreads]) # Linux 2.0 sanity check AC_TRY_COMPILE([#include ], [int a = sched_get_priority_min(1);], , AC_MSG_ERROR([Syntax error in sched.h. Change _P to __P in the /usr/include/sched.h file. See the Installation chapter in the Reference Manual])) # RedHat 5.0 does not work with dynamic linking of this. -static also # gives a speed increase in linux so it does not hurt on other systems. with_named_thread="-lpthread" else AC_MSG_RESULT("Not found") # If this is a linux machine we should barf AC_MSG_ERROR([This is a Linux system without a working getconf, and Linuxthreads was not found. Please install it (or a new glibc) and try again. See the Installation chapter in the Reference Manual for more information.]) fi else AC_MSG_RESULT("no need to check headers") fi AC_MSG_CHECKING("for pthread_create in -lpthread") ac_save_LIBS="$LIBS" LIBS="$LIBS -lpthread" AC_TRY_LINK( [#include ], [ (void) pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ], AC_MSG_RESULT("yes"), [ AC_MSG_RESULT("no") AC_MSG_ERROR([ This is a Linux system claiming to support threads, either Linuxthreads or NPTL, but linking a test program failed. Please install one of these (or a new glibc) and try again. See the Installation chapter in the Reference Manual for more information.]) ] ) LIBS="$ac_save_LIBS" else AC_MSG_RESULT("no") fi # "$TARGET_LINUX" fi # "$with_named_thread" = "no" -a "$with_mit_threads" = "no" # Hack for DEC-UNIX (OSF1 -> Tru64) if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no" then AC_MSG_CHECKING("DEC threads post OSF/1 3.2") if test -f /usr/shlib/libpthread.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a then with_named_thread="-lpthread -lmach -lexc" CFLAGS="$CFLAGS -D_REENTRANT" CXXFLAGS="$CXXFLAGS -D_REENTRANT" AC_DEFINE(HAVE_DEC_THREADS, [1], [Whether we are using DEC threads]) AC_MSG_RESULT("yes") else AC_MSG_RESULT("no") fi # DEC threads fi # "$with_named_thread" = "no" -a "$with_mit_threads" = "no" 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]) 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 AC_MSG_ERROR([configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual.]) 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 # # Check for SCO threading libraries # if test "$with_named_thread" = "no" then AC_MSG_CHECKING([SCO OpenServer 6, UnixWare 7 or OpenUNIX 8 native threads]) if expr "$SYSTEM_TYPE" : ".*UnixWare.*" > /dev/null || \ expr "$SYSTEM_TYPE" : ".*SCO_SV6.*" > /dev/null || \ expr "$SYSTEM_TYPE" : ".*OpenUNIX.*" > /dev/null 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.*" > /dev/null then with_named_thread="-pthread -lsocket -lnsl" CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; else with_named_thread="-Kthread -lsocket -lnsl" CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; fi if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null then AC_DEFINE(HAVE_UNIXWARE7_THREADS, [1], [Have UnixWare 7 (or similar) almost-POSIX threading library]) fi AC_MSG_RESULT(yes) else AC_MSG_ERROR([configure: error: Can't find thread library on SCO/Caldera system. See the Installation chapter in the Reference Manual.]) fi else AC_MSG_RESULT(no) fi fi # Hack for Siemens UNIX if test "$with_named_thread" = "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_LIBS="-lxnet $NON_THREADED_LIBS" 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" then AC_MSG_CHECKING("Solaris threads") if test -f /usr/lib/libpthread.so -a -f /usr/lib/libthread.so then with_named_thread="-lpthread -lthread" AC_MSG_RESULT("yes") else AC_MSG_RESULT("no") fi fi # Should we use named pthread library ? AC_MSG_CHECKING("named thread libs:") if test "$with_named_thread" != "no" then LIBS="$with_named_thread $LIBS $with_named_thread" CLIENT_THREAD_LIBS="$with_named_thread" with_posix_threads="yes" AC_MSG_RESULT("$with_named_thread") else AC_MSG_RESULT("no") # pthread_create is in standard libraries (As in BSDI 3.0) AC_MSG_CHECKING("for pthread_create in -libc"); AC_TRY_LINK( [#include ], [ (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" LIBS="$LIBS -lpthread" CLIENT_THREAD_LIBS="-lpthread" AC_TRY_LINK( [#include ], [ (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" CLIENT_THREAD_LIBS="-lpthreads" AC_MSG_CHECKING("for pthread_create in -lpthreads") AC_TRY_LINK( [#include ], [ 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" CLIENT_THREAD_LIBS="-pthread" AC_MSG_CHECKING("for pthread_create in -pthread") AC_TRY_LINK( [#include ], [ pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ], with_posix_threads=yes, with_posix_threads=no) AC_MSG_RESULT("$with_posix_threads") fi fi fi fi #---START: Used in for client configure # Must be checked after, because strtok_r may be in -lpthread # On AIX strtok_r is in libc_r my_save_LIBS="$LIBS" AC_CHECK_LIB(pthread,strtok_r) LIBS="$my_save_LIBS" if test "$ac_cv_lib_pthread_strtok_r" = "no" then AC_CHECK_LIB(c_r,strtok_r) 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: # dlopen, dlerror case "$with_mysqld_ldflags " in *"-all-static "*) # No need to check for dlopen when mysqld is linked with # -all-static as it won't be able to load any functions. # NOTE! It would be better if it was possible to test if dlopen # can be used, but a good way to test it couldn't be found ;; *) # Check for dlopen, needed for user definable functions # This must be checked after threads on AIX # We only need this for mysqld, not for the clients. my_save_LIBS="$LIBS" LIBS="" AC_CHECK_LIB(dl,dlopen) LIBDL=$LIBS LIBS="$my_save_LIBS" AC_SUBST(LIBDL) my_save_LIBS="$LIBS" LIBS="$LIBS $LIBDL" AC_CHECK_FUNCS(dlopen dlerror) LIBS="$my_save_LIBS" ;; esac # System characteristics case $SYSTEM_TYPE in *netware*) ;; *) AC_SYS_RESTARTABLE_SYSCALLS ;; esac # Build optimized or debug version ? # First check for gcc and g++ if test "$GCC" = "yes" then DEBUG_CFLAGS="-g" DEBUG_OPTIMIZE_CC="-O" OPTIMIZE_CFLAGS="$MAX_C_OPTIMIZE" else DEBUG_CFLAGS="-g" DEBUG_OPTIMIZE_CC="" case $SYSTEM_TYPE in *solaris*) OPTIMIZE_CFLAGS="-O1" ;; *) OPTIMIZE_CFLAGS="-O" ;; esac fi if test "$GXX" = "yes" then DEBUG_CXXFLAGS="-g" DEBUG_OPTIMIZE_CXX="-O" OPTIMIZE_CXXFLAGS="$MAX_CXX_OPTIMIZE" else DEBUG_OPTIMIZE_CXX="" case $SYSTEM_TYPE in *solaris*) DEBUG_CXXFLAGS="-g0" OPTIMIZE_CXXFLAGS="-O1" ;; *) DEBUG_CXXFLAGS="-g" OPTIMIZE_CXXFLAGS="-O" ;; esac fi case $SYSTEM_TYPE in *netware*) DEBUG_CFLAGS="-g -DDEBUG -sym internal,codeview4" DEBUG_CXXFLAGS="-g -DDEBUG -sym internal,codeview4" DEBUG_OPTIMIZE_CC="-DDEBUG" DEBUG_OPTIMIZE_CXX="-DDEBUG" OPTIMIZE_CFLAGS="-O3 -DNDEBUG" OPTIMIZE_CXXFLAGS="-O3 -DNDEBUG" ;; esac # If the user specified CFLAGS, we won't add any optimizations if test -n "$SAVE_CFLAGS" then OPTIMIZE_CFLAGS="" DEBUG_OPTIMIZE_CC="" fi # Ditto for CXXFLAGS if test -n "$SAVE_CXXFLAGS" then OPTIMIZE_CXXFLAGS="" DEBUG_OPTIMIZE_CXX="" fi AC_ARG_WITH(debug, [ --with-debug Add debug code --with-debug=full Add debug code (adds memory checker, very slow)], [with_debug=$withval], [with_debug=no]) if test "$with_debug" = "yes" then # Medium debug. AC_DEFINE([DBUG_ON], [1], [Use libdbug]) CFLAGS="$DEBUG_CFLAGS $DEBUG_OPTIMIZE_CC -DSAFE_MUTEX $CFLAGS" CXXFLAGS="$DEBUG_CXXFLAGS $DEBUG_OPTIMIZE_CXX -DSAFE_MUTEX $CXXFLAGS" elif test "$with_debug" = "full" then # Full debug. Very slow in some cases AC_DEFINE([DBUG_ON], [1], [Use libdbug]) CFLAGS="$DEBUG_CFLAGS -DSAFE_MUTEX -DSAFEMALLOC $CFLAGS" CXXFLAGS="$DEBUG_CXXFLAGS -DSAFE_MUTEX -DSAFEMALLOC $CXXFLAGS" else # Optimized version. No debug AC_DEFINE([DBUG_OFF], [1], [Don't use libdbug]) CFLAGS="$OPTIMIZE_CFLAGS $CFLAGS" CXXFLAGS="$OPTIMIZE_CXXFLAGS $CXXFLAGS" fi # Debug Sync Facility. NOTE: depends on 'with_debug'. Must be behind it. AC_MSG_CHECKING(if Debug Sync Facility should be enabled.) AC_ARG_ENABLE(debug_sync, AS_HELP_STRING([--enable-debug-sync], [Build a version with Debug Sync Facility]), [ enable_debug_sync=$enableval ], [ enable_debug_sync=$with_debug ]) if test "$enable_debug_sync" != "no" then AC_DEFINE([ENABLED_DEBUG_SYNC], [1], [If Debug Sync Facility should be enabled]) AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi # If we should allow error injection tests AC_ARG_WITH(error-inject, AC_HELP_STRING([--with-error-inject],[Enable error injection in MySQL Server]), [ with_error_inject=$withval ], [ with_error_inject=no ]) if test $with_debug != "no" then if test "$with_error_inject" = "yes" then AC_DEFINE([ERROR_INJECT_SUPPORT], [1], [Enable error injection in MySQL Server]) fi fi AC_ARG_WITH([fast-mutexes], AC_HELP_STRING([--with-fast-mutexes], [Compile with fast mutexes (default is disabled)]), [with_fast_mutexes=$withval], [with_fast_mutexes=no]) if test "$with_fast_mutexes" != "no" then if test "$with_debug" != "no" then AC_MSG_WARN(['--with-fast-mutexes' ignored when '--with-debug' is given]) else AC_DEFINE([MY_PTHREAD_FASTMUTEX], [1], [Define to 1 if you want to use fast mutexes]) fi fi AC_ARG_WITH([atomic-ops], AC_HELP_STRING([--with-atomic-ops=rwlocks|smp|up], [Implement atomic operations using pthread rwlocks or atomic CPU instructions for multi-processor (default) or uniprocessor configuration]), , [with_atomic_ops=smp]) case "$with_atomic_ops" in "up") AC_DEFINE([MY_ATOMIC_MODE_DUMMY], [1], [Assume single-CPU mode, no concurrency]) ;; "rwlocks") AC_DEFINE([MY_ATOMIC_MODE_RWLOCKS], [1], [Use pthread rwlocks for atomic ops]) ;; "smp") ;; *) AC_MSG_ERROR(["$with_atomic_ops" is not a valid value for --with-atomic-ops]) ;; esac AC_CACHE_CHECK([whether the compiler provides atomic builtins], [mysql_cv_gcc_atomic_builtins], [AC_TRY_RUN([ int main() { int foo= -10; int bar= 10; if (!__sync_fetch_and_add(&foo, bar) || foo) return -1; bar= __sync_lock_test_and_set(&foo, bar); if (bar || foo != 10) return -1; bar= __sync_val_compare_and_swap(&bar, foo, 15); if (bar) return -1; return 0; } ], [mysql_cv_gcc_atomic_builtins=yes], [mysql_cv_gcc_atomic_builtins=no], [mysql_cv_gcc_atomic_builtins=no])]) if test "x$mysql_cv_gcc_atomic_builtins" = xyes; then AC_DEFINE(HAVE_GCC_ATOMIC_BUILTINS, 1, [Define to 1 if compiler provides atomic builtins.]) fi AC_CACHE_CHECK([whether the OS provides atomic_* functions like Solaris], [mysql_cv_solaris_atomic], [AC_TRY_RUN([ #include int main() { int foo = -10; int bar = 10; if (atomic_add_int_nv((uint_t *)&foo, bar) || foo) return -1; bar = atomic_swap_uint((uint_t *)&foo, (uint_t)bar); if (bar || foo != 10) return -1; bar = atomic_cas_uint((uint_t *)&bar, (uint_t)foo, 15); if (bar) return -1; return 0; } ], [mysql_cv_solaris_atomic=yes], [mysql_cv_solaris_atomic=no], [mysql_cv_solaris_atomic=no])]) if test "x$mysql_cv_solaris_atomic" = xyes; then AC_DEFINE(HAVE_SOLARIS_ATOMIC, 1, [Define to 1 if OS provides atomic_* functions like Solaris.]) fi # 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(mysqld-libs, [ --with-mysqld-libs Extra libraries to link with for mysqld], [MYSQLD_EXTRA_LIBS=$withval], [MYSQLD_EXTRA_LIBS=]) AC_SUBST(MYSQLD_EXTRA_LIBS) 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 "$TARGET_LINUX" = "true" -a "$ac_cv_prog_gcc" = "yes" -a "$all_is_static" != "yes" then LDFLAGS="$LDFLAGS -rdynamic" AC_MSG_RESULT("-rdynamic") else case "$SYSTEM_TYPE$with_mysqld_ldflags " in *freebsd*"-all-static "*|*dragonfly*"-all-static "*) AC_MSG_RESULT("none") ;; *freebsd*|*dragonfly*) MYSQLD_EXTRA_LDFLAGS="$MYSQLD_EXTRA_LDFLAGS -export-dynamic" AC_MSG_RESULT("-export-dynamic") ;; *) AC_MSG_RESULT("none") ;; esac 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 MYSQL_NEEDS_MYSYS_NEW # 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(short, 2) 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 AC_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 dnl dnl check if time_t is unsigned dnl MYSQL_CHECK_TIME_T # do we need #pragma interface/#pragma implementation ? # yes if it's gcc 2.x, and not icc pretending to be gcc, and not cygwin AC_MSG_CHECKING(the need for @%:@pragma interface/implementation) # instead of trying to match SYSTEM_TYPE and CC_VERSION (that doesn't # follow any standard), we'll use well-defined preprocessor macros: AC_TRY_CPP([ #if !defined(__CYGWIN__) && !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ < 3) #error USE_PRAGMA_IMPLEMENTATION #endif ],AC_MSG_RESULT(no) ,AC_MSG_RESULT(yes) ; CXXFLAGS="$CXXFLAGS -DUSE_PRAGMA_IMPLEMENTATION") # 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: # Figure out what type of struct rlimit to use with setrlimit MYSQL_TYPE_STRUCT_RLIMIT # Find where the stack goes MYSQL_STACK_DIRECTION # We want to skip alloca on irix unconditionally. It may work on some version.. MYSQL_FUNC_ALLOCA # Do struct timespec have members tv_sec or ts_sec MYSQL_TIMESPEC_TS # Do we have the tzname variable MYSQL_TZNAME # Do the c++ compiler have a bool type MYSQL_CXX_BOOL # Check some common bugs with gcc 2.8.# on sparc case $SYSTEM_TYPE in *netware*) ;; *) 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 ;; esac AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include ]) AC_CHECK_TYPES([size_t], [], [], [#include ]) AC_CHECK_TYPES([u_int32_t]) 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) dnl Sun compilers have their own vis.h that is about something dnl totally different. So, not to change the libedit source, we dnl do some additional checks before we define HAVE_VIS_H. AC_CHECK_HEADER(vis.h, [AC_CHECK_FUNC(strvis, [AC_DEFINE([HAVE_VIS_H], [1],[Found vis.h and the strvis() function])])]) 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 langinfo.h) # Already-done: strcasecmp AC_CHECK_FUNCS(lstat putenv select setenv setlocale strcoll tcgetattr) AC_CHECK_FUNCS(nl_langinfo) 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 MYSQL_CHECK_MULTIBYTE if test "$with_named_curses" = "no" then MYSQL_CHECK_LIB_TERMCAP else TERMCAP_LIB="$with_named_curses" fi AC_SUBST(TERMCAP_LIB) # Check if the termcap function 'tgoto' is already declared in # system header files or if it need to be declared locally AC_CHECK_DECLS(tgoto,,,[ #ifdef HAVE_CURSES_H # include #elif HAVE_NCURSES_H # include #endif #ifdef HAVE_TERM_H # include #endif ]) 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 bsearch bzero \ chsize cuserid fchmod fcntl \ fconvert fdatasync fesetround finite fpresetsticky fpsetmask fsync ftruncate \ getcwd gethostbyaddr_r gethostbyname_r getpass getpassphrase getpwnam \ getpwuid getrlimit getrusage getwd index initgroups isnan \ localtime_r gethrtime gmtime_r \ locking longjmp lrand48 madvise mallinfo memcpy memmove \ mkstemp mlockall perror poll pread pthread_attr_create mmap mmap64 getpagesize \ 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 sigaction sigemptyset sigaddset \ sighold sigset sigthreadmask port_create sleep \ snprintf socket stpcpy strcasecmp strerror strsignal strnlen strpbrk strstr \ strtol strtoll strtoul strtoull tell tempnam thr_setconcurrency vidattr \ posix_fallocate backtrace backtrace_symbols backtrace_symbols_fd) # # # 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 case "$mysql_cv_sys_os" in OS400) # i5/OS (OS/400) emits a SIGILL (Function not implemented) when # unsupported priority values are passed to pthread_setschedprio. # Since the only supported value is 1, treat it as inexistent. ;; SunOS) # Bug#42599 error: `pthread_setschedprio' was not declared in this scope # In some installations, the pthread.h header used by GCC does not # declare the pthread_setscheprio prototype, but the function is # implemented. Since the function is used in C++ code, ensure that # the function prototype is present. AC_MSG_CHECKING([whether pthread_setschedprio is declared]) AC_LANG_PUSH([C++]) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([#include ], [(void)(pthread_setschedprio);])], [ac_cv_func_pthread_setschedprio=yes], [ac_cv_func_pthread_setschedprio=no]) AC_LANG_POP([C++]) AC_MSG_RESULT([$ac_cv_func_pthread_setschedprio]) if test "$ac_cv_func_pthread_setschedprio" = yes; then AC_DEFINE(HAVE_PTHREAD_SETSCHEDPRIO, 1, [Define to 1 if you have the `pthread_setschedprio' function.]) fi ;; *) AC_CHECK_FUNCS(pthread_setschedprio) ;; esac # Check that isinf() is available in math.h and can be used in both C and C++ # code AC_MSG_CHECKING(for isinf in ) AC_TRY_LINK([#include ], [float f = 0.0; int r = isinf(f); return r], AC_MSG_RESULT(yes) AC_MSG_CHECKING(whether isinf() is safe to use in C code) AC_TRY_RUN([ #include int main() { double a= 10.0; double b= 1e308; return !isinf(a * b); } ], [AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no) AC_DEFINE([HAVE_BROKEN_ISINF], [1], [Define to 1 if isinf() uses 80-bit register for intermediate values]) ], [ # Let's be optimistic when cross-compiling, since the only compiler known # to be affected by this isinf() bug is GCC 4.3 on 32-bit x86. AC_MSG_RESULT([[cross-compiling, assuming 'yes']]) ]) AC_MSG_CHECKING(whether isinf() can be used in C++ code) AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_LINK([#include ], [float f = 0.0; int r = isinf(f); return r], AC_MSG_RESULT(yes) AC_DEFINE(HAVE_ISINF, [1], [isinf() macro or function]), AC_MSG_RESULT(no)) AC_LANG_RESTORE, AC_MSG_RESULT(no)) 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 "$TARGET_LINUX" = "true"; then AC_MSG_ERROR("Found fseeko symbol but large_file_support is not enabled!") fi] ) # Check definition of gethostbyaddr_r (glibc2 defines this with 8 arguments) ac_save_CXXFLAGS="$CXXFLAGS" AC_CACHE_CHECK([style of gethost* routines], mysql_cv_gethost_style, AC_LANG_SAVE AC_LANG_CPLUSPLUS # Test whether madvise() is declared in C++ code -- it is not on some # systems, such as Solaris AC_CHECK_DECLS(madvise, [], [], [#if HAVE_SYS_MMAN_H #include #include #endif]) # 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 # We also must remove -W and -Wcheck which on icc produces warnings that # we don't want to catch with -Werror if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no" then CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed -e 's/-fbranch-probabilities//; s/-Wall//; s/-ansi//; s/-pedantic//; s/-Wcheck//'` fi AC_TRY_COMPILE( [#undef inline #if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT) #define _REENTRANT #endif #include #include #include #include #include #include ], [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 gethostbyname_r routines], mysql_cv_gethostbyname_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 -e 's/-fbranch-probabilities//; s/-Wall//; s/-ansi//; s/-pedantic//; s/-Wcheck//'` fi AC_TRY_COMPILE( [#undef inline #if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT) #define _REENTRANT #endif #include #include #include #include #include #include ], [int skr; skr = gethostbyname_r((const char *) 0, (struct hostent*) 0, (char*) 0, 0, (struct hostent **) 0, &skr);], mysql_cv_gethostbyname_style=glibc2, mysql_cv_gethostbyname_style=other)) AC_LANG_RESTORE CXXFLAGS="$ac_save_CXXFLAGS" if test "$mysql_cv_gethostbyname_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 gethostbyname_r routines], mysql_cv_gethostbyname_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 -e 's/-fbranch-probabilities//; s/-Wall//; s/-ansi//; s/-pedantic//; s/-Wcheck//'` fi AC_TRY_COMPILE( [#undef inline #if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT) #define _REENTRANT #endif #include #include #include #include #include #include ], [int skr; skr = gethostbyname_r((const char *) 0, (struct hostent*) 0, (struct hostent_data*) 0);], mysql_cv_gethostbyname_arg=hostent_data, mysql_cv_gethostbyname_arg=char)) AC_LANG_RESTORE CXXFLAGS="$ac_save_CXXFLAGS" if test "$mysql_cv_gethostbyname_arg" = "hostent_data" then AC_DEFINE([HAVE_GETHOSTBYNAME_R_RETURN_INT], [1], [In OSF 4.0f the 3'd argument to gethostbyname_r is hostent_data *]) fi # 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 ], [ 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_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 #---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 #include ], [ 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 #include ], [#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 #include ], [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 for x86 PAUSE instruction AC_MSG_CHECKING("for x86 PAUSE instruction") # We have to actually try running the test program, because of a bug # in Solaris on x86_64, where it wrongly reports that PAUSE is not # supported when trying to run an application. See # http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6478684 AC_TRY_RUN([ int main() { __asm__ __volatile__ ("pause"); return 0; } ], [x86_pause_exists=yes], [x86_pause_exists=no], [x86_pause_exists=no] # Cross-compile, assume no PAUSE instruction ) AC_TRY_RUN([ int main() { __asm__ __volatile__ ("rep; nop"); return 0; } ], [x86_fake_pause_exists=yes], [x86_fake_pause_exists=no], [x86_fake_pause_exists=no] # Cross-compile, assume no x86 NOP instruction ) if test "$x86_pause_exists" = "yes" then AC_DEFINE([HAVE_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist]) else if test "$x86_fake_pause_exists" = "yes" then AC_DEFINE([HAVE_FAKE_PAUSE_INSTRUCTION], [1], [Does x86 NOP instruction exist]) fi fi # 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_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 #include #include #include #include #include ], [ 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") AC_CACHE_CHECK([support for weak symbols], mysql_cv_weak_symbol, [AC_TRY_LINK([],[ extern void __attribute__((weak)) foo(void); ], [mysql_cv_weak_symbol=yes], [mysql_cv_weak_symbol=no])]) if test "x$mysql_cv_weak_symbol" = xyes; then AC_DEFINE(HAVE_WEAK_SYMBOL, 1, [Define to 1 if compiler supports weak symbol attribute.]) fi AC_CACHE_CHECK([whether __bss_start is defined], mysql_cv_bss_start, [AC_TRY_LINK([],[ extern char *__bss_start; return __bss_start ? 1 : 0; ], [mysql_cv_bss_start=yes], [mysql_cv_bss_start=no])]) if test "x$mysql_cv_bss_start" = xyes; then AC_DEFINE(HAVE_BSS_START, 1, [Define to 1 if compiler defines __bss_start.]) fi AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_CHECK_HEADERS(cxxabi.h) AC_CACHE_CHECK([for abi::__cxa_demangle], mysql_cv_cxa_demangle, [AC_TRY_LINK([#include ], [ char *foo= 0; int bar= 0; foo= abi::__cxa_demangle(foo, foo, 0, &bar); ], [mysql_cv_cxa_demangle=yes], [mysql_cv_cxa_demangle=no])]) AC_LANG_RESTORE if test "x$mysql_cv_cxa_demangle" = xyes; then AC_DEFINE(HAVE_ABI_CXA_DEMANGLE, 1, [Define to 1 if you have the `abi::__cxa_demangle' function.]) fi #-------------------------------------------------------------------- # Check for requested features #-------------------------------------------------------------------- MYSQL_CHECK_BIG_TABLES MYSQL_CHECK_MAX_INDEXES MYSQL_CHECK_VIO MYSQL_CHECK_SSL #-------------------------------------------------------------------- # Declare our plugin modules # Has to be done late, as the plugin may need to check for existence of # functions tested above #-------------------------------------------------------------------- MYSQL_STORAGE_ENGINE(partition, partition, [Partition Support], [MySQL Partitioning Support], [max,max-no-ndb]) dnl -- ndbcluster requires partition to be enabled MYSQL_CONFIGURE_PLUGINS([none]) # 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 #MYSQL_CHECK_CPU 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" if test -f "$srcdir/Docs/manual.chm" ; then extra_docs="manual.chm" fi else docs_dirs="" extra_docs="" fi AC_SUBST(docs_dirs) AC_SUBST(extra_docs) # Shall we build the man pages? AC_ARG_WITH(man, [ --without-man Skip building of the man pages.], [with_man=$withval], [with_man=yes] ) # 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 ] ) if test "$with_readline/$with_libedit" = "undefined/undefined" -a ! -e "$srcdir/cmd-line-utils" then with_readline=no with_libedit=no fi # # 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="" want_to_use_readline="no" case $SYSTEM_TYPE in *netware*) # For NetWare, do not need readline echo "Skipping readline" ;; *) if [test "$with_libedit" = "yes"] || [test "$with_libedit" = "undefined"] && [test "$with_readline" = "undefined"] then readline_topdir="cmd-line-utils" readline_basedir="libedit" readline_dir="$readline_topdir/$readline_basedir" readline_link="\$(top_builddir)/cmd-line-utils/libedit/libedit.a" readline_h_ln_cmd="\$(LN) -s \$(top_srcdir)/cmd-line-utils/libedit/readline readline" compile_libedit=yes AC_DEFINE_UNQUOTED(HAVE_HIST_ENTRY, 1) AC_DEFINE_UNQUOTED(USE_LIBEDIT_INTERFACE, 1) elif test "$with_readline" = "yes" then readline_topdir="cmd-line-utils" readline_basedir="readline" readline_dir="$readline_topdir/$readline_basedir" readline_link="\$(top_builddir)/cmd-line-utils/readline/libreadline.a" readline_h_ln_cmd="\$(LN) -s \$(top_srcdir)/cmd-line-utils/readline readline" compile_readline=yes want_to_use_readline="yes" AC_DEFINE_UNQUOTED(USE_NEW_READLINE_INTERFACE, 1) else # Use system readline library AC_LANG_SAVE AC_LANG_CPLUSPLUS MYSQL_CHECK_LIBEDIT_INTERFACE MYSQL_CHECK_NEW_RL_INTERFACE MYSQL_CHECK_READLINE_DECLARES_HIST_ENTRY AC_LANG_RESTORE if [test "$mysql_cv_new_rl_interface" = "yes"] && [test -d "$srcdir/cmd-line-utils/readline"] then # Use the new readline interface, but only if the package includes a bundled libreadline # this way we avoid linking commercial source with GPL readline readline_link="-lreadline" want_to_use_readline="yes" elif [test "$mysql_cv_libedit_interface" = "yes"] then # Use libedit readline_link="-ledit" else AC_MSG_ERROR([Could not find system readline or libedit libraries Use --with-readline or --with-libedit to use the bundled versions of libedit or readline]) fi fi # if there is no readline, but we want to build with readline, we fail if [test "$want_to_use_readline" = "yes"] && [test ! -d "./cmd-line-utils/readline"] then AC_MSG_ERROR([This commercially licensed MySQL source package can't be built with libreadline. Please use --with-libedit to use the bundled version of libedit instead.]) fi ;; esac AC_SUBST(readline_dir) AC_SUBST(readline_topdir) AC_SUBST(readline_basedir) AC_SUBST(readline_link) AC_SUBST(readline_h_ln_cmd) # Include man pages, if desired, adapted to the configured parts. if test X"$with_man" = Xyes then # First, create the list of all man pages present. MANLISTFIL=manlist.$$ TMPLISTFIL=`echo $MANLISTFIL | sed -e 's/manlist/tmplist/'` if test -f $MANLISTFIL -o -f $TMPLISTFIL then echo "Temp file '$MANLISTFIL' or '$TMPLISTFIL' already exists in '`pwd`' - aborting" exit 1 fi touch $MANLISTFIL $TMPLISTFIL ls $srcdir/man/*.[[18]] > $MANLISTFIL # Then, remove all those pages from the list which are specific to parts # (table handlers, features, ...) which are not configured in this run. AC_MSG_CHECKING("for man pages to remove") MAN_DROP="dropping" if test X"$with_plugin_ndbcluster" != Xyes then MAN_DROP="$MAN_DROP ndbcluster" grep -v '/ndb' $MANLISTFIL > $TMPLISTFIL ; mv -f $TMPLISTFIL $MANLISTFIL fi if test X"$with_embedded_server" != Xyes then MAN_DROP="$MAN_DROP embedded" grep -v 'embedded' $MANLISTFIL > $TMPLISTFIL ; mv -f $TMPLISTFIL $MANLISTFIL fi if test X"$with_plugin_innobase" != Xyes then MAN_DROP="$MAN_DROP innodb" grep -v 'inno' $MANLISTFIL > $TMPLISTFIL ; mv -f $TMPLISTFIL $MANLISTFIL fi AC_MSG_RESULT([$MAN_DROP]) # Finally, split the man pages into sections 1 and 8. # Get rid of line breaks. man1_files=`sed -n -e '/\.1$/s/^.*man\///p' <$MANLISTFIL` man8_files=`sed -n -e '/\.8$/s/^.*man\///p' <$MANLISTFIL` man_dirs="man" man1_files=`echo $man1_files` man8_files=`echo $man8_files` rm -f $MANLISTFIL $TMPLISTFIL else man_dirs="" man1_files="" man8_files="" fi AC_SUBST(man_dirs) AC_SUBST(man1_files) AC_SUBST(man8_files) # If we have threads generate some library functions and test programs sql_server_dirs= sql_server= server_scripts= dnl This probably should be cleaned up more - for now the threaded dnl client is just using plain-old libs. sql_client_dirs="strings mysys dbug extra regex libmysql" AM_CONDITIONAL(THREAD_SAFE_CLIENT, test "$THREAD_SAFE_CLIENT" != "no") if test "$THREAD_SAFE_CLIENT" != "no" then sql_client_dirs="$sql_client_dirs libmysql_r" AC_DEFINE([THREAD_SAFE_CLIENT], [1], [Should the client be thread safe]) fi sql_client_dirs="$sql_client_dirs client" CLIENT_LIBS="$NON_THREADED_LIBS $openssl_libs $ZLIB_LIBS $STATIC_NSS_FLAGS" AC_SUBST(CLIENT_LIBS) AC_SUBST(CLIENT_THREAD_LIBS) AC_SUBST(NON_THREADED_LIBS) AC_SUBST(STATIC_NSS_FLAGS) AC_SUBST(sql_client_dirs) # If configuring for NetWare, build the netware directory netware_dir= if expr "$SYSTEM_TYPE" : ".*netware.*" > /dev/null then netware_dir="netware" fi AC_SUBST(netware_dir) AM_CONDITIONAL(HAVE_NETWARE, test "$netware_dir" = "netware") if test "$with_server" != "no" -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_LOBJECTS="thr_alarm.o thr_lock.o thr_mutex.o thr_rwlock.o my_pthread.o my_thr_init.o mf_keycache.o" AC_SUBST(THREAD_LOBJECTS) fi AM_CONDITIONAL(NEED_THREAD, test "$with_server" != "no" -o "$THREAD_SAFE_CLIENT" != "no") if test "$with_server" != "no" then server_scripts="mysqld_safe mysql_install_db" sql_server_dirs="strings mysys dbug extra regex storage plugin" sql_server="vio sql" fi # "innochecksum" is not in the "innobase/" subdirectory, but should be switched AM_CONDITIONAL([BUILD_INNODB_TOOLS], [test X"$with_plugin_innobase" = Xyes]) # 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(sql_server) AC_SUBST(server_scripts) AC_SUBST(mysql_plugin_dirs) AC_SUBST(mysql_plugin_libs) AC_SUBST(mysql_plugin_defs) # Now that sql_client_dirs and sql_server_dirs are stable, determine the union. # We support client-only builds by "--without-server", but not vice versa, # so we start with the client list, then add each server item not yet present. sql_union_dirs=" $sql_client_dirs " for DIR in $sql_server_dirs 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) # Some usefull subst AC_SUBST(CC) AC_SUBST(GXX) # Set configuration options for make_binary_distribution case $SYSTEM_TYPE in *netware*) MAKE_BINARY_DISTRIBUTION_OPTIONS="$MAKE_BINARY_DISTRIBUTION_OPTIONS --no-strip" ;; *) : # no change for other platforms yet ;; esac AC_SUBST(MAKE_BINARY_DISTRIBUTION_OPTIONS) # Output results if test -d "$srcdir/pstack" ; then AC_CONFIG_FILES(pstack/Makefile pstack/aout/Makefile) fi if test -d "$srcdir/cmd-line-utils/readline" ; then AC_CONFIG_FILES(cmd-line-utils/readline/Makefile) fi AC_CONFIG_FILES(Makefile extra/Makefile mysys/Makefile dnl unittest/Makefile unittest/mytap/Makefile unittest/mytap/t/Makefile dnl unittest/mysys/Makefile unittest/examples/Makefile dnl strings/Makefile regex/Makefile storage/Makefile dnl man/Makefile BUILD/Makefile vio/Makefile dnl libmysql/Makefile libmysql_r/Makefile client/Makefile dnl sql/Makefile sql/share/Makefile dnl sql/sql_builtin.cc sql-common/Makefile libservices/Makefile dnl dbug/Makefile scripts/Makefile include/Makefile dnl tests/Makefile Docs/Makefile support-files/Makefile dnl support-files/MacOSX/Makefile support-files/RHEL4-SElinux/Makefile dnl cmd-line-utils/Makefile cmd-line-utils/libedit/Makefile dnl libmysqld/Makefile libmysqld/examples/Makefile dnl mysql-test/Makefile mysql-test/lib/My/SafeProcess/Makefile dnl netware/Makefile sql-bench/Makefile dnl include/mysql_version.h plugin/Makefile win/Makefile cmake/Makefile ) AC_CONFIG_COMMANDS([default], , test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h) # Ensure that table handlers gets all modifications to CFLAGS/CXXFLAGS AC_CONFIG_COMMANDS_POST(ac_configure_args="$ac_configure_args CFLAGS='$CFLAGS' CXXFLAGS='$CXXFLAGS'") AC_OUTPUT 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