dnl -*- ksh -*- dnl Process this file with autoconf to produce a configure script. AC_INIT(sql/mysqld.cc) AC_CANONICAL_SYSTEM # The Docs Makefile.am parses this line! AM_INIT_AUTOMAKE(mysql, 3.23.29-gamma) 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=10:0:0 # Set all version vars based on $VERSION. How do we do this more elegant ? # Remember that regexps needs to quote [ and ] since this is run through m4 MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|-.*$||"` MYSQL_BASE_VERSION=`echo $MYSQL_NO_DASH_VERSION | sed -e "s|\.[[^.]]*$||"` F_PART=`echo $MYSQL_BASE_VERSION | sed -e "s|\.||g"| sed -e "s|[a-zA-Z]\+||"|sed -e "s|^\(..\)$|\\10|"` L_PART=`echo $MYSQL_NO_DASH_VERSION | sed -e "s|^[[0-9]]\.[[0-9]]*\.||" | sed -e "s|^\(.\)$|0\\1|" | sed -e "s|[[a-z]]||"` MYSQL_VERSION_ID=${F_PART}${L_PART} # 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 slovak spanish swedish" ##### ##### AC_SUBST(MYSQL_NO_DASH_VERSION) AC_SUBST(MYSQL_BASE_VERSION) AC_SUBST(MYSQL_VERSION_ID) AC_SUBST(PROTOCOL_VERSION) AC_DEFINE_UNQUOTED(PROTOCOL_VERSION, $PROTOCOL_VERSION) AC_SUBST(DOT_FRM_VERSION) AC_DEFINE_UNQUOTED(DOT_FRM_VERSION, $DOT_FRM_VERSION) AC_SUBST(SHARED_LIB_VERSION) AC_SUBST(AVAILABLE_LANGUAGES) # Canonicalize the configuration name. SYSTEM_TYPE="$host_vendor-$host_os" MACHINE_TYPE="$host_cpu" AC_SUBST(SYSTEM_TYPE) AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE") AC_SUBST(MACHINE_TYPE) AC_DEFINE_UNQUOTED(MACHINE_TYPE, "$MACHINE_TYPE") # Save some variables and the command line options for mysqlbug 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_CFLAGS) AC_SUBST(SAVE_CXXFLAGS) AC_SUBST(SAVE_LDFLAGS) AC_SUBST(SAVE_CXXLDFLAGS) AC_SUBST(CXXLDFLAGS) AC_PREREQ(2.12)dnl Minimum Autoconf version required. AM_MAINTAINER_MODE AC_ARG_PROGRAM 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 CFLAGS="$CFLAGS " CXXFLAGS="$CXXFLAGS " dnl Checks for programs. AC_PROG_AWK AC_PROG_CC AC_PROG_CXX AC_PROG_CPP 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 AM_PROG_LIBTOOL #AC_LIBTOOL_DLOPEN AC_LIBTOOL_WIN32_DLL AC_DISABLE_FAST_INSTALL AC_DISABLE_SHARED AC_DISABLE_STATIC # AC_PROG_INSTALL We should only need a AM_PROG_INSTALL AC_PROG_INSTALL # Not critical since the generated file is distributed AC_PROG_YACC AC_CHECK_PROG(PDFMANUAL, pdftex, manual.pdf) AC_MSG_CHECKING("return type of sprintf") #check the 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) AC_MSG_RESULT("int"), AC_TRY_RUN([ int main() { char* s = "hello"; char buf[6]; if((char*)sprintf(buf,s) == buf + strlen(s)) return 0; return -1; } ], AC_DEFINE(SPRINTF_RETURNS_PTR) AC_MSG_RESULT("ptr"), AC_DEFINE(SPRINTF_RETURNS_GARBAGE) AC_MSG_RESULT("garbage"))) # option, cache_name, variable 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 ;; sysv5uw7*) LIBS="-lsocket -lnsl $LIBS" if test "$GCC" != "yes"; then # We are using built-in inline function CFLAGS="$CFLAGS -Kalloca" CXX="$CXX -DNO_CPLUSPLUS_ALLOCA" else CXX="$CXX -DNO_CPLUSPLUS_ALLOCA" fi ;; esac AC_SUBST(CC) AC_SUBST(CFLAGS) AC_SUBST(CXX) AC_SUBST(CXXFLAGS) AC_SUBST(LD) export CC CFLAGS LD LDFLAGS if test "$GXX" = "yes" then # mysqld requires this when compiled with gcc CXXFLAGS="$CXXFLAGS -fno-implicit-templates" 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 ln -f does not exists use -s (AFS systems) if test -n "$LN_CP_F"; then LN_CP_F="$LN_CP_F -s" 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) dnl We use a path for perl so the script startup works AC_PATH_PROG(PERL5, perl5, no) AC_PATH_PROG(PERL, perl, no) if test "$PERL5" != no then PERL=$PERL5 ac_cv_path_PERL=$ac_cv_path_PERL5 fi AC_SUBST(HOSTNAME) AC_SUBST(PERL) AC_SUBST(PERL5) # Lock for PS AC_PATH_PROG(PS, ps, ps) AC_MSG_CHECKING("how to check if pid exists") PS=$ac_cv_path_PS # Linux style if $PS p $$ 2> /dev/null | grep $0 > /dev/null then FIND_PROC="$PS p \$\$PID | grep mysqld > /dev/null" # Solaris elif $PS -p $$ 2> /dev/null | grep $0 > /dev/null then FIND_PROC="$PS -p \$\$PID | grep mysqld > /dev/null" # BSD style elif $PS -uaxww 2> /dev/null | grep $0 > /dev/null then FIND_PROC="$PS -uaxww | grep mysqld | grep \" \$\$PID \" > /dev/null" # SysV style elif $PS -ef 2> /dev/null | grep $0 > /dev/null then FIND_PROC="$PS -ef | grep mysqld | grep \" \$\$PID \" > /dev/null" # Do anybody use this? elif $PS $$ 2> /dev/null | grep $0 > /dev/null then FIND_PROC="$PS \$\$PID | grep mysqld > /dev/null" else case $SYSTEM_TYPE in *darwin*) FIND_PROC="$PS -uaxww | grep mysqld | grep \" \$\$PID \" > /dev/null" ;; *) AC_MSG_ERROR([Could not find the right ps switches. Which OS is this ?. See the Installation chapter in the Reference Manual.]) esac fi AC_SUBST(FIND_PROC) AC_MSG_RESULT("$FIND_PROC") # Check if a pid is valid AC_PATH_PROG(KILL, kill, kill) AC_MSG_CHECKING("for kill switches") if $ac_cv_path_KILL -0 $$ then CHECK_PID="$ac_cv_path_KILL -0 \$\$PID > /dev/null 2> /dev/null" elif kill -s 0 $$ then CHECK_PID="$ac_cv_path_KILL -s 0 \$\$PID > /dev/null 2> /dev/null" else AC_MSG_WARN([kill -0 to check for pid seems to fail]) CHECK_PID="$ac_cv_path_KILL -s SIGCONT \$\$PID > /dev/null 2> /dev/null" fi AC_SUBST(CHECK_PID) AC_MSG_RESULT("$CHECK_PID") # We need a ANSI C compiler AM_PROG_CC_STDC if test "$am_cv_prog_cc_stdc" = "no" then AC_MSG_ERROR([MySQL requiers a ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.]) fi # Set flags if we wants to have MIT threads. AC_ARG_WITH(mit-threads, [ --with-mit-threads Always use included thread lib.], [ with_mit_threads=$withval ], [ with_mit_threads=no ] ) if test "$with_mit_threads" = "yes" then enable_largefile="no" # Will not work on Linux. fi # Set flags if we want to force to use pthreads AC_ARG_WITH(pthread, [ --with-pthread Force use of pthread library.], [ with_pthread=$withval ], [ with_pthread=no ] ) # Force use of thread libs LIBS AC_ARG_WITH(named-thread-libs, [ --with-named-thread-libs=ARG Use specified thread libraries instead of those automatically found by configure.], [ with_named_thread=$withval ], [ with_named_thread=no ] ) # Force use of a curses libs AC_ARG_WITH(named-curses-libs, [ --with-named-curses-libs=ARG Use specified curses libraries instead of those automatically found by configure.], [ with_named_curses=$withval ], [ with_named_curses=no ] ) # Force use of a zlib (compress) AC_ARG_WITH(named-z-libs, [ --with-named-z-libs=ARG Use specified zlib libraries instead of those automatically found by configure.], [ with_named_zlib=$withval ], [ with_named_zlib=z ] ) # Make thread safe client AC_ARG_ENABLE(thread-safe-client, [ --enable-thread-safe-client Compile the client with threads.], [ THREAD_SAFE_CLIENT=$enableval ], [ THREAD_SAFE_CLIENT=no ] ) # Make thread safe client AC_ARG_ENABLE(assembler, [ --enable-assembler Use assembler versions of some string functions if available.], [ ENABLE_ASSEMBLER=$enableval ], [ ENABLE_ASSEMBLER=no ] ) # For now we only support assembler on i386 and sparc systems AM_CONDITIONAL(ASSEMBLER_x86, test "$ENABLE_ASSEMBLER" = "yes" -a "$MACHINE_TYPE" = "i386") AM_CONDITIONAL(ASSEMBLER_sparc, test "$ENABLE_ASSEMBLER" = "yes" -a "$MACHINE_TYPE" = "sparc") AM_CONDITIONAL(ASSEMBLER, test ASSEMBLER_x86 = "" -o ASSEMBLER_x86 = "") AC_MSG_CHECKING(whether to use RAID) AC_ARG_WITH(raid, [ --with-raid Enable RAID Support], [ AC_DEFINE(USE_RAID) AC_MSG_RESULT(yes) ], [ AC_MSG_RESULT(no) ] ) # 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=root ] ) AC_SUBST(MYSQLD_USER) # Use Paul Eggerts macros from GNU tar to check for large file # support. AC_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) #-------------------------------------------------------------------- # 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_FUNC(gethostbyname_r, [], [ AC_CHECK_LIB(nsl_r, gethostbyname_r, [], AC_CHECK_LIB(nsl, 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_FUNC(crypt, , AC_CHECK_LIB(crypt, crypt)) # For compress in zlib MYSQL_CHECK_ZLIB_WITH_COMPRESS($with_named_zlib) #-------------------------------------------------------------------- # Check for TCP wrapper support #-------------------------------------------------------------------- AC_ARG_WITH(libwrap, [ --with-libwrap[=DIR] Compile in libwrap (tcp_wrappers) support],[ case "$with_libwrap" in no) : ;; yes|*) _cppflags=${CPPFLAGS} _ldflags=${LDFLAGS} if test "$with_libwrap" != "yes"; then CPPFLAGS="${CPPFLAGS} -I$with_libwrap/include" LDFLAGS="${LDFLAGS} -L$with_libwrap/lib" fi _libs=${LIBS} AC_CHECK_HEADER(tcpd.h, LIBS="$LIBS -lwrap" 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) AC_DEFINE(HAVE_LIBWRAP) WRAPLIBS="-L$with_libwrap/lib -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 int main() { atomic_t v; atomic_set(&v, 23); atomic_add(5, &v); return atomic_read(&v) == 28 ? 0 : -1; } ], AC_DEFINE(HAVE_ATOMIC_ADD) atom_ops="${atom_ops}atomic_add ", ) AC_TRY_RUN([ #include int main() { atomic_t v; atomic_set(&v, 23); atomic_sub(5, &v); return atomic_read(&v) == 18 ? 0 : -1; } ], AC_DEFINE(HAVE_ATOMIC_SUB) atom_ops="${atom_ops}atomic_sub ", ) if test -z "$atom_ops"; then atom_ops="no"; fi AC_MSG_RESULT($atom_ops) fi # 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. LIBS_AFTER_SOCKET=$LIBS LIBS="$LIBS_BEFORE_SOCKET $LIBS_SOCKET $LIBS_AFTER_SOCKET" NON_THREADED_CLIENT_LIBS="$LIBS" AC_MSG_CHECKING([for int8]) AC_TRY_RUN([ #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STDDEF_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif int main() { int8 i; return 0; } ], AC_DEFINE(HAVE_INT_8_16_32) AC_MSG_RESULT([yes]), AC_MSG_RESULT([no]) ) # # Some system specific hacks # MAX_C_OPTIMIZE="-O6" 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.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 snprintf workaround for hpux 10.20" CFLAGS="$CFLAGS -DHAVE_BROKEN_SNPRINTF" CXXFLAGS="$CXXFLAGS -DHAVE_BROKEN_SNPRINTF -D_INCLUDE_LONGLONG" ;; *hpux11.*) echo "Enabling pread/pwrite workaround for hpux 11" CFLAGS="$CFLAGS -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -DHAVE_BROKEN_GETPASS" CXXFLAGS="$CXXFLAGS -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -D_INCLUDE_LONGLONG" if test "$with_named_thread" = "no" then echo "Using --with-named-thread=-lpthread" with_named_thread="-lpthread" 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 ;; *darwin*) if test "$ac_cv_prog_gcc" = "yes" then CFLAGS="$CFLAGS -traditional-cpp -DHAVE_DARWIN_THREADS" CXXFLAGS="$CXXFLAGS -traditional-cpp -DHAVE_DARWIN_THREADS" CFLAGS="$CFLAGS -traditional-cpp -DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE" CXXFLAGS="$CXXFLAGS -traditional-cpp -DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE" MAX_C_OPTIMIZE="-O" with_named_curses="" fi ;; *freebsd*) echo "Adding fix for interrupted reads" CXXFLAGS="$CXXFLAGS -DMYSQLD_NET_RETRY_COUNT=1000000" ;; *bsdi*) echo "Adding fix for BSDI" CFLAGS="$CFLAGS -D__BSD__" ;; *sgi-irix6*) if test "$with_named_thread" = "no" then echo "Using --with-named-thread=-lpthread" with_named_thread="-lpthread" fi CXXFLAGS="-D_BOOL" ;; *dec-osf4*) echo "Adding fix to not use gethostbyname_r" CFLAGS="$CFLAGS -DUNDEF_HAVE_GETHOSTBYNAME_R" CXXFLAGS="$CXXFLAGS -DUNDEF_HAVE_GETHOSTBYNAME_R" ;; *aix4.3*) echo "Adding defines for AIX" CFLAGS="$CFLAGS -Wa,-many -DUNDEF_HAVE_INITGROUPS" CXXFLAGS="$CXXFLAGS -Wa,-many -DUNDEF_HAVE_INITGROUPS" ;; esac #---START: Used in for client configure # Check if we threads are in libc or if we should use # -lpthread, -lpthreads or mit-pthreads # We have to check libc last because else it fails on Solaris 2.6 with_posix_threads="no" # Hack for DEC-UNIX (OSF1) if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no" then # Look for LinuxThreads. AC_MSG_CHECKING("LinuxThreads") res=`grep Linuxthreads /usr/include/pthread.h 2>/dev/null | wc -l` if test "$res" -gt 0 then AC_MSG_RESULT("Found") AC_DEFINE(HAVE_LINUXTHREADS) # Linux 2.0 sanity check AC_TRY_COMPILE([#include ], [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 spped 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. So install Linuxthreads (or a new glibc) and try again. See the Installation chapter in the Reference Manual.]) 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" #with_named_thread="-lpthread -lmach -lexc -lc" AC_DEFINE(HAVE_DEC_THREADS) AC_MSG_RESULT("yes") else AC_MSG_RESULT("no") AC_MSG_CHECKING("DEC 3.2 threads") if test -f /usr/shlib/libpthreads.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a then with_named_thread="-lpthreads -lmach -lc_r" AC_DEFINE(HAVE_DEC_THREADS) AC_DEFINE(HAVE_DEC_3_2_THREADS) with_osf32_threads="yes" MYSQLD_DEFAULT_SWITCHES="--skip-thread-priority" AC_MSG_RESULT("yes") else AC_MSG_RESULT("no") fi fi fi fi fi # 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 LIBS="$LIBS_BEFORE_SOCKET $LIBS_AFTER_SOCKET" with_named_thread="-lgthreads -lsocket -lgthreads" # sched.h conflicts with fsu-threads touch ./include/sched.h # We must have gcc if expr "$CC" : ".*gcc.*" then AC_MSG_RESULT("yes") else AC_MSG_ERROR([On SCO UNIX MySQL must be compiled with gcc. See the Installation chapter in the Reference Manual.]); fi AC_MSG_RESULT("yes") elif test -f /usr/local/lib/libpthread.a -o -f /usr/local/lib/libpthread.so then LIBS="$LIBS_BEFORE_SOCKET $LIBS_AFTER_SOCKET" 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 # elif test "$with_named_thread" = "no" then AC_MSG_RESULT("no") AC_MSG_CHECKING("SCO UnixWare 7.1 native threads") if expr "$SYSTEM_TYPE" : ".*sco.*" > /dev/null then if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so then LIBS="$LIBS_BEFORE_SOCKET $LIBS_AFTER_SOCKET" if expr "$CC" : ".*gcc.*" then with_named_thread="-pthread -lsocket -lnsl" else with_named_thread="-Kthread -lsocket -lnsl" fi if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null then AC_DEFINE(HAVE_UNIXWARE7_THREADS) else AC_DEFINE(HAVE_UNIXWARE7_POSIX) fi AC_MSG_RESULT("yes") # We must have cc AC_MSG_CHECKING("for gcc") if expr "$CC" : ".*gcc.*" then CC="$CC -pthread -DUNIXWARE_7"; CXX="$CXX -pthread -DUNIXWARE_7"; else CC="$CC -Kthread -DUNIXWARE_7"; CXX="$CXX -Kthread -DUNIXWARE_7"; 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" : ".*unixware7*" > /dev/null then if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so then LIBS="$LIBS_BEFORE_SOCKET $LIBS_AFTER_SOCKET" with_named_thread="-Kthread -lsocket -lnsl" if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null then AC_DEFINE(HAVE_UNIXWARE7_THREADS) else AC_DEFINE(HAVE_UNIXWARE7_POSIX) fi # We must have cc AC_MSG_CHECKING("for gcc") if expr "$CC" : ".*gcc.*" then { echo "configure: error: On SCO UnixWare7 MySQL must be compiled with cc. See the Installation chapter in the Reference Manual." 1>&2; exit 1; }; else CC="$CC -Kthread -DUNIXWARE_7"; CXX="$CXX -Kthread -DUNIXWARE_7"; 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 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="$LIBS_BEFORE_SOCKET -lxnet $LIBS_AFTER_SOCKET" 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 # Should we use named pthread library ? AC_MSG_CHECKING("named thread libs:") if test "$with_named_thread" != "no" then LIBS="$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 ], [ (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" 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" 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" 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") if test "$with_posix_threads" = "no" then with_mit_threads="yes" LIBS="$ac_save_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 my_save_LIBS="$LIBS" AC_CHECK_LIB(c_r,strtok_r) if test "$with_osf32_threads" = "yes" -o "$target_os" = "FreeBSD" -o "$target_os" = "freebsd" then LIBS="$my_save_LIBS" fi AC_CHECK_FUNCS(strtok_r pthread_init) else AC_CHECK_FUNCS(strtok_r) fi #---END: # for user definable functions (must be checked after threads on AIX) AC_CHECK_LIB(dl,dlopen) # System characteristics AC_SYS_RESTARTABLE_SYSCALLS # 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="-O3" else DEBUG_CXXFLAGS="-g" DEBUG_OPTIMIZE_CXX="" OPTIMIZE_CXXFLAGS="-O" 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 probles/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) # 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" 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(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 # Do the c++ compiler have a bool type MYSQL_CXX_BOOL # Check some common bugs with gcc 2.8.# on sparc MYSQL_CHECK_LONGLONG_TO_FLOAT if test "$ac_cv_conv_longlong_to_float" != "yes" then AC_MSG_ERROR([Your compiler can't 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 ###################################################################### # For readline-4.0 (We simply move the mimimum amount of stuff from # the readline configure.in here) 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) # Already-done: strcasecmp AC_CHECK_FUNCS(lstat putenv select setenv setlocale strcoll tcgetattr) AC_STAT_MACROS_BROKEN MYSQL_SIGNAL_CHECK MYSQL_CHECK_GETPW_FUNCS MYSQL_HAVE_TIOCGWINSZ MYSQL_HAVE_FIONREAD MYSQL_HAVE_TIOCSTAT MYSQL_STRUCT_DIRENT_D_INO MYSQL_TYPE_SIGHANDLER if test $with_named_curses = "no" then MYSQL_CHECK_LIB_TERMCAP else TERMCAP_LIB="$with_named_curses" fi AC_SUBST(TERMCAP_LIB) # End of readline stuff ######################################################################### dnl Checks for library functions. AC_FUNC_MMAP AC_TYPE_SIGNAL MYSQL_TYPE_QSORT AC_FUNC_UTIME_NULL AC_FUNC_VPRINTF AC_CHECK_FUNCS(alarm bmove \ chsize ftruncate rint finite fpsetmask fpresetsticky\ cuserid fcntl fconvert poll \ getrusage getpwuid getcwd getrlimit getwd index stpcpy locking longjmp \ perror pread realpath readlink rename \ socket strnlen madvise mkstemp \ strtol strtoul strtoull snprintf tempnam thr_setconcurrency \ gethostbyaddr_r gethostbyname_r getpwnam \ bfill bzero bcmp strstr strpbrk strerror \ tell atod memcpy memmove \ setupterm strcasecmp sighold \ vidattr setupterm lrand48 localtime_r \ sigset sigthreadmask pthread_sigmask pthread_setprio pthread_setprio_np \ pthread_setschedparam pthread_attr_setprio pthread_attr_setschedparam \ pthread_attr_create pthread_getsequence_np pthread_attr_setstacksize \ pthread_condattr_create rwlock_init pthread_rwlock_rdlock \ crypt dlopen dlerror fchmod getpass getpassphrase initgroups mlockall) # Sanity check: We chould not have any fseeko symbol unless # large_file_support=yes AC_CHECK_FUNCS(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] ) # 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 if test "$ac_cv_prog_gxx" = "yes" then CXXFLAGS="$CXXFLAGS -Werror" fi AC_TRY_COMPILE( [#if !defined(SCO) && !defined(__osf__) #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) 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" then CXXFLAGS="$CXXFLAGS -Werror" fi AC_TRY_COMPILE( [#if !defined(SCO) && !defined(__osf__) #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_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_GLIBC2_STYLE_GETHOSTBYNAME_R) 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" then CXXFLAGS="$CXXFLAGS -Werror" fi AC_TRY_COMPILE( [#if !defined(SCO) && !defined(__osf__) #define _REENTRANT #endif #include #include #include #include #include #include ], [int skr; skr = gethostbyname_r((const char *) 0, (struct hostent*) 0, (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_WITH_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__) #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) 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) 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 #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) fi # Check definition av 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) fi if test "$mysql_cv_sigwait" != "POSIX" then unset mysql_cv_sigwait # Check definition av 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) 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_attr_t thr_attr; pthread_attr_setscope(&thr_attr,0);], mysql_cv_pthread_attr_setscope=yes, mysql_cv_pthread_attr_setscope=no)) if test "$mysql_cv_pthread_attr_setscope" = "yes" then AC_DEFINE(HAVE_PTHREAD_ATTR_SETSCOPE) fi # Check for bad includes AC_MSG_CHECKING("can netinet files be included") AC_TRY_COMPILE( [#include #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) 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] ) # 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 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 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=yes ] ) if test "$with_readline" = "yes" then readline_dir="readline" readline_link="../readline/libreadline.a" else # This requires readline to be in a standard place. Mosty for linux # there readline may be a shared library. readline_dir="" readline_link="-lreadline" fi AC_SUBST(readline_dir) AC_SUBST(readline_link) # Choose a character set dnl in order to add new charset, you must add charset name to dnl CHARSETS_AVAILABLE list and add the charset name to dnl sql/share/charsets/Index. If the character set uses strcoll dnl or other special handling, you must also create dnl strings/ctype-$charset_name.c CHARSETS_AVAILABLE="big5 cp1251 cp1257 croat czech danish dec8 dos estonia euc_kr gb2312 gbk german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr latin1 latin2 latin5 swe7 usa7 win1250 win1251 win1251ukr ujis sjis tis620" DEFAULT_CHARSET=latin1 dnl win1251 is deprecated - it's available, but not listed here in the help AC_ARG_WITH(charset, [ --with-charset=CHARSET Use CHARSET by default (one of: big5 cp1251 cp1257 croat czech danish dec8 dos estonia euc_kr gb2312 gbk german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr latin1 latin2 latin5 swe7 usa7 win1250 win1251ukr ujis sjis tis620; Default is latin1)], [default_charset="$withval"], [default_charset="$DEFAULT_CHARSET"]) 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") if test "$extra_charsets" = none; then CHARSETS="" elif test "$extra_charsets" = complex; then CHARSETS=`/bin/ls -1 $srcdir/strings/ctype-*.c | \ sed -e 's;^.*/ctype-;;' -e 's;.c$;;'` CHARSETS=`echo $CHARSETS` # get rid of line breaks else if test "$extra_charsets" = all; then CHARSETS="$CHARSETS_AVAILABLE" else CHARSETS=`echo $extra_charsets | sed -e 's/,/ /g'` fi fi # Ensure that the default_charset is first in CHARSETS TMP_CHARSETS="$default_charset " for i in $CHARSETS do if test $i != $default_charset then TMP_CHARSETS="$TMP_CHARSETS $i" fi done CHARSETS=$TMP_CHARSETS # Check if charsets are all good for cs in $CHARSETS do charset_okay=0 for charset in $CHARSETS_AVAILABLE do if test $cs = $charset; then charset_okay=1; fi done if test $charset_okay = 0; then AC_MSG_ERROR([Charset $cs not available. (Available $CHARSETS_AVAILABLE). See the Installation chapter in the Reference Manual.]); fi done CHARSET_SRCS="" CHARSETS_NEED_SOURCE="" CHARSET_DECLARATIONS="" CHARSET_COMP_CS_INIT="CHARSET_INFO compiled_charsets[[]] = {" want_use_strcoll=0 want_use_mb=0 index_file="$srcdir/sql/share/charsets/Index" for c in $CHARSETS do # get the charset number from $index_file changequote(,)dnl subpat='^'"${c}"'[ ][ ]*\([0-9][0-9]*\)[^0-9]*$' number=`sed -e "/$subpat/!d" -e 's//\1/' $index_file` changequote([,])dnl # some sanity checking.... if test X"$number" = X then AC_MSG_ERROR([No number was found in $index_file for the $c character set. This is a bug in the MySQL distribution. Please report this message to bugs@lists.mysql.com.]) fi cs_file="$srcdir/strings/ctype-$c.c" if test -f $cs_file then CHARSET_SRCS="${CHARSET_SRCS}ctype-$c.c " # get the strxfrm multiplier and max mb len from files subpat='^.*\\.configure\\. strxfrm_multiply_'"${c}"'=' strx=`$AWK 'sub("'"$subpat"'", "") { print }' $cs_file` subpat='^.*\\.configure\\. mbmaxlen_'"${c}"'=' maxl=`$AWK 'sub("'"$subpat"'", "") { print }' $cs_file` CHARSET_DECLARATIONS="$CHARSET_DECLARATIONS /* declarations for the ${c} character set, filled in by configure */ extern uchar ctype_${c}[[]], to_lower_${c}[[]], to_upper_${c}[[]], sort_order_${c}[[]];" else CHARSETS_NEED_SOURCE="$CHARSETS_NEED_SOURCE $c" strx='' maxl='' fi CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT /* this information is filled in by configure */ { $number, /* number */ \"$c\", /* name */ ctype_${c}, to_lower_${c}, to_upper_${c}, sort_order_${c}," if test -n "$strx" then want_use_strcoll=1 CHARSET_DECLARATIONS="$CHARSET_DECLARATIONS extern int my_strcoll_${c}(const uchar *, const uchar *); extern int my_strxfrm_${c}(uchar *, const uchar *, int); extern int my_strnncoll_${c}(const uchar *, int, const uchar *, int); extern int my_strnxfrm_${c}(uchar *, const uchar *, int, int); extern my_bool my_like_range_${c}(const char *, uint, pchar, uint, char *, char *, uint *, uint *);" CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT $strx, /* strxfrm_multiply */ my_strcoll_${c}, my_strxfrm_${c}, my_strnncoll_${c}, my_strnxfrm_${c}, my_like_range_${c}," else CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT 0, /* strxfrm_multiply */ NULL, /* strcoll */ NULL, /* strxfrm */ NULL, /* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */" fi if test -n "$maxl" then want_use_mb=1 CHARSET_DECLARATIONS="$CHARSET_DECLARATIONS extern int ismbchar_${c}(const char *, const char *); extern my_bool ismbhead_${c}(uint); extern int mbcharlen_${c}(uint);" CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT $maxl, /* mbmaxlen */ ismbchar_${c}, ismbhead_${c}, mbcharlen_${c}" else CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT 0, /* mbmaxlen */ NULL, /* ismbchar */ NULL, /* ismbhead */ NULL /* mbcharlen */" fi CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT }," done CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT /* this information is filled in by configure */ { 0, /* end-of-list marker */ NullS, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL } };" if test $want_use_strcoll = 1 then AC_DEFINE(USE_STRCOLL) fi if test $want_use_mb = 1 then AC_DEFINE(USE_MB) AC_DEFINE(USE_MB_IDENT) fi AC_SUBST(default_charset) AC_SUBST(CHARSET_SRCS) CHARSET_OBJS="`echo "$CHARSET_SRCS" | sed -e 's/\.c /.o /g'`" AC_SUBST(CHARSET_OBJS) AC_SUBST(CHARSETS_NEED_SOURCE) dnl We can't use AC_SUBST because these substitutions are too long. dnl I don't want to use sed, either, because there's a reason why dnl autoconf breaks up the substitution commands. So we'll just dnl write to a file and #include it. dnl AC_SUBST(CHARSET_DECLARATIONS) dnl AC_SUBST(CHARSET_COMP_CS_INIT) dnl sed -e "s%@CHARSET_DECLARATIONS@%$CHARSET_DECLARATIONS%g" \ dnl -e "s%@CHARSET_COMP_CS_INIT@%$CHARSET_COMP_CS_INIT%g" \ dnl $srcdir/strings/ctype.c.in > $srcdir/strings/ctype.c cat < $srcdir/strings/ctype_autoconf.c /* This file is generated automatically by configure. */$CHARSET_DECLARATIONS $CHARSET_COMP_CS_INIT EOF AC_MSG_RESULT([default: $default_charset; compiled in: $CHARSETS]) MYSQL_CHECK_BDB # 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 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) fi AC_SUBST(CLIENT_LIBS) AC_SUBST(sql_client_dirs) AC_SUBST(linked_client_targets) if test "$with_server" = "yes" then AC_DEFINE(THREAD) # Avoid _PROGRAMS names THREAD_LPROGRAMS="test_thr_alarm test_thr_lock" 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) sql_server_dirs="strings dbug mysys extra regex isam merge myisam myisammrg heap sql" server_scripts="safe_mysqld mysql_install_db" 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="$have_berkeley_db/build_unix $sql_server_dirs" echo "CONFIGURING FOR BERKELEY DB" bdb_conf_flags= if test $with_debug = "yes" then bdb_conf_flags="$bdb_conf_flags --enable-debug --enable-diagnostic" fi (cd $bdb && cd build_unix && sh ../dist/configure $bdb_conf_flags) \ || AC_MSG_ERROR([could not configure Berkeley DB]) echo "Modifying Berkeley DB install target" sed -e '/^install:/ c\ install: all # modified by MySQL configure' \ "$bdb/build_unix/Makefile" > ac_BDB_Makefile rm "$bdb/build_unix/Makefile" \ && cp ac_BDB_Makefile "$bdb/build_unix/Makefile" \ && rm ac_BDB_Makefile \ || AC_MSG_ERROR([could not modify Berkeley DB Makefile]) echo "END OF BERKELEY DB CONFIGURATION" fi AC_DEFINE(HAVE_BERKELEY_DB) fi 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) MT_INCLUDES="-I\$(top_srcdir)/mit-pthreads/include" AC_SUBST(MT_INCLUDES) MT_LD_ADD="-L \$(top_srcdir)/mit-pthreads/obj/ -lpthread" AC_SUBST(MT_LD_ADD) LIBS="$MT_LD_ADD $LIBS" echo "" echo "Configuring MIT Pthreads" # We will never install so installation paths are not needed. (cd mit-pthreads; sh ./configure) echo "End of MIT Pthreads configuration" echo "" fi fi AC_SUBST(sql_server_dirs) AC_SUBST(thread_dirs) AC_SUBST(server_scripts) #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) #fi # Some usefull subst AC_SUBST(CC) AC_SUBST(GXX) # Output results AC_OUTPUT(Makefile extra/Makefile mysys/Makefile isam/Makefile \ strings/Makefile regex/Makefile heap/Makefile \ myisam/Makefile myisammrg/Makefile \ man/Makefile \ readline/Makefile libmysql_r/Makefile libmysql/Makefile client/Makefile \ sql/Makefile sql/share/Makefile \ merge/Makefile dbug/Makefile scripts/Makefile \ include/Makefile sql-bench/Makefile \ tests/Makefile Docs/Makefile support-files/Makefile \ mysql-test/Makefile \ include/mysql_version.h , , [test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h]) 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 in the reference manual for" echo "hints about installing on your platfrom. See the Docs directory." echo # This text is checked in ./Do-compile to se that the configure finished. echo "Thank you for choosing MySQL!" echo