configure.in
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:57k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. dnl -*- ksh -*-
  2. dnl Process this file with autoconf to produce a configure script.
  3. AC_INIT(sql/mysqld.cc)
  4. AC_CANONICAL_SYSTEM
  5. # The Docs Makefile.am parses this line!
  6. AM_INIT_AUTOMAKE(mysql, 3.23.35)
  7. AM_CONFIG_HEADER(config.h)
  8. PROTOCOL_VERSION=10
  9. DOT_FRM_VERSION=6
  10. # See the libtool docs for information on how to do shared lib versions.
  11. SHARED_LIB_VERSION=10:0:0
  12. # Set all version vars based on $VERSION. How do we do this more elegant ?
  13. # Remember that regexps needs to quote [ and ] since this is run through m4
  14. MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|-.*$||"`
  15. MYSQL_BASE_VERSION=`echo $MYSQL_NO_DASH_VERSION | sed -e "s|.[[^.]]*$||"`
  16. F_PART=`echo $MYSQL_BASE_VERSION | sed -e "s|.||g"| sed -e "s|[a-zA-Z]+||"|sed -e "s|^(..)$|\10|"`
  17. L_PART=`echo $MYSQL_NO_DASH_VERSION | sed -e "s|^[[0-9]].[[0-9]]*.||" | sed -e "s|^(.)$|0\1|" | sed -e "s|[[a-z]]||"`
  18. MYSQL_VERSION_ID=${F_PART}${L_PART}
  19. # The port should be constant for a LONG time
  20. MYSQL_TCP_PORT_DEFAULT=3306
  21. MYSQL_UNIX_ADDR_DEFAULT="/tmp/mysql.sock"
  22. # Remember to add a directory sql/share/LANGUAGE
  23. AVAILABLE_LANGUAGES="
  24. czech danish dutch english estonian french german greek hungarian 
  25. italian japanese korean norwegian norwegian-ny polish portuguese 
  26. romanian russian slovak spanish swedish"
  27. # Generate make rules for all error messages
  28. AVAILABLE_LANGUAGES_ERRORS=
  29. AVAILABLE_LANGUAGES_ERRORS_RULES=$srcdir/ac_available_languages_fragment
  30. rm -f $AVAILABLE_LANGUAGES_ERRORS_RULES
  31. for i in $AVAILABLE_LANGUAGES
  32. do
  33.   AVAILABLE_LANGUAGES_ERRORS="$AVAILABLE_LANGUAGES_ERRORS $i/errmsg.sys"
  34.   echo "$i/errmsg.sys: $i/errmsg.txt
  35. $(top_builddir)/extra/comp_err $i/errmsg.txt $i/errmsg.sys" 
  36.     >> $AVAILABLE_LANGUAGES_ERRORS_RULES
  37. done
  38. #####
  39. #####
  40. AC_SUBST(MYSQL_NO_DASH_VERSION)
  41. AC_SUBST(MYSQL_BASE_VERSION)
  42. AC_SUBST(MYSQL_VERSION_ID)
  43. AC_SUBST(PROTOCOL_VERSION)
  44. AC_DEFINE_UNQUOTED(PROTOCOL_VERSION, $PROTOCOL_VERSION)
  45. AC_SUBST(DOT_FRM_VERSION)
  46. AC_DEFINE_UNQUOTED(DOT_FRM_VERSION, $DOT_FRM_VERSION)
  47. AC_SUBST(SHARED_LIB_VERSION)
  48. AC_SUBST(AVAILABLE_LANGUAGES)
  49. AC_SUBST(AVAILABLE_LANGUAGES_ERRORS)
  50. AC_SUBST_FILE(AVAILABLE_LANGUAGES_ERRORS_RULES)
  51. # Canonicalize the configuration name.
  52. SYSTEM_TYPE="$host_vendor-$host_os"
  53. MACHINE_TYPE="$host_cpu"
  54. AC_SUBST(SYSTEM_TYPE)
  55. AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE")
  56. AC_SUBST(MACHINE_TYPE)
  57. AC_DEFINE_UNQUOTED(MACHINE_TYPE, "$MACHINE_TYPE")
  58. # Save some variables and the command line options for mysqlbug
  59. SAVE_CFLAGS="$CFLAGS"
  60. SAVE_CXXFLAGS="$CXXFLAGS"
  61. SAVE_LDFLAGS="$LDFLAGS"
  62. SAVE_CXXLDFLAGS="$CXXLDFLAGS"
  63. CONF_COMMAND="$0 $ac_configure_args"
  64. AC_SUBST(CONF_COMMAND)
  65. AC_SUBST(SAVE_CFLAGS)
  66. AC_SUBST(SAVE_CXXFLAGS)
  67. AC_SUBST(SAVE_LDFLAGS)
  68. AC_SUBST(SAVE_CXXLDFLAGS)
  69. AC_SUBST(CXXLDFLAGS)
  70. AC_PREREQ(2.12)dnl Minimum Autoconf version required.
  71. AM_MAINTAINER_MODE
  72. AC_ARG_PROGRAM
  73. AM_SANITY_CHECK
  74. # This is needed is SUBDIRS is set
  75. AC_PROG_MAKE_SET
  76. # This generates rules for webpage generation for the MySQL homepage.
  77. AM_CONDITIONAL(LOCAL, test -d ../web/SitePages)
  78. # This is need before AC_PROG_CC
  79. #
  80. if test "x${CFLAGS-}" = x ; then
  81.   cflags_is_set=no
  82. else
  83.   cflags_is_set=yes
  84. fi
  85. if test "x${CPPFLAGS-}" = x ; then
  86.   cppflags_is_set=no
  87. else
  88.   cppflags_is_set=yes
  89. fi
  90. if test "x${LDFLAGS-}" = x ; then
  91.   ldflags_is_set=no
  92. else
  93.   ldflags_is_set=yes
  94. fi
  95. # The following hack should ensure that configure doesn't add optimizing
  96. # or debugging flags to CFLAGS or CXXFLAGS
  97. CFLAGS="$CFLAGS "
  98. CXXFLAGS="$CXXFLAGS "
  99. dnl Checks for programs.
  100. AC_PROG_AWK
  101. AC_PROG_CC
  102. AC_PROG_CXX
  103. AC_PROG_CPP
  104. if test "$ac_cv_prog_gcc" = "yes"
  105. then
  106.   AS="$CC -c"
  107.   AC_SUBST(AS)
  108. else
  109.   AC_PATH_PROG(AS, as, as)
  110. fi
  111. # Still need ranlib for readline; local static use only so no libtool.
  112. AC_PROG_RANLIB
  113. # We use libtool
  114. #AC_LIBTOOL_WIN32_DLL
  115. AM_PROG_LIBTOOL
  116. #AC_LIBTOOL_DLOPEN AC_LIBTOOL_WIN32_DLL AC_DISABLE_FAST_INSTALL AC_DISABLE_SHARED AC_DISABLE_STATIC
  117. # AC_PROG_INSTALL We should only need a AM_PROG_INSTALL
  118. AC_PROG_INSTALL
  119. # Not critical since the generated file is distributed
  120. AC_PROG_YACC
  121. AC_CHECK_PROG(PDFMANUAL, pdftex, manual.pdf)
  122. AC_MSG_CHECKING("return type of sprintf")
  123. #check the return type of sprintf
  124. AC_TRY_RUN([
  125.   int main()
  126.     {
  127.       char* s = "hello";
  128.       char buf[6];
  129.       if((int)sprintf(buf, s) == strlen(s))
  130. return 0;
  131.       
  132.       return -1;
  133.      }
  134.    ],
  135. AC_DEFINE(SPRINTF_RETURNS_INT) AC_MSG_RESULT("int"),
  136.  AC_TRY_RUN([
  137.  int main()
  138.    {
  139.      char* s = "hello";
  140.      char buf[6];
  141.      if((char*)sprintf(buf,s) == buf + strlen(s))
  142.        return 0;
  143.      return -1;  
  144.    }
  145. ], AC_DEFINE(SPRINTF_RETURNS_PTR) AC_MSG_RESULT("ptr"),
  146.  AC_DEFINE(SPRINTF_RETURNS_GARBAGE) AC_MSG_RESULT("garbage")))
  147.    
  148. # option, cache_name, variable
  149. AC_DEFUN(AC_SYS_COMPILER_FLAG,
  150. [
  151.   AC_MSG_CHECKING($1)
  152.   OLD_CFLAGS="[$]CFLAGS"
  153.   AC_CACHE_VAL(mysql_cv_option_$2,
  154.   [
  155.     CFLAGS="[$]OLD_CFLAGS $1"
  156.     AC_TRY_RUN([int main(){exit(0);}],mysql_cv_option_$2=yes,mysql_cv_option_$2=no,mysql_cv_option_$2=no)
  157.   ])
  158.   CFLAGS="[$]OLD_CFLAGS"
  159.   
  160.   if test x"[$]mysql_cv_option_$2" = "xyes" ; then
  161.     $3="[$]$3 $1"
  162.     AC_MSG_RESULT(yes)
  163.     $5
  164.   else
  165.     AC_MSG_RESULT(no)
  166.     $4
  167.   fi
  168. ])
  169. # arch, option, cache_name, variable
  170. AC_DEFUN(AC_SYS_CPU_COMPILER_FLAG,
  171. [
  172.  if test "`uname -m 2>/dev/null`" = "$1" ; then
  173.     AC_SYS_COMPILER_FLAG($2,$3,$4)
  174.  fi
  175. ])
  176. # os, option, cache_name, variable
  177. AC_DEFUN(AC_SYS_OS_COMPILER_FLAG,
  178. [
  179.  if test "x$mysql_cv_sys_os" = "x$1" ; then
  180.     AC_SYS_COMPILER_FLAG($2,$3,$4)
  181.  fi
  182. ])
  183. # We need some special hacks when running slowaris
  184. AC_PATH_PROG(uname_prog, uname, no)
  185. # We should go through this and put all the explictly system dependent
  186. # stuff in one place
  187. AC_MSG_CHECKING(operating system)
  188. AC_CACHE_VAL(mysql_cv_sys_os,
  189. [
  190. if test "$uname_prog" != "no"; then
  191.   mysql_cv_sys_os="`uname`"
  192. else
  193.   mysql_cv_sys_os="Not Solaris"
  194. fi
  195. ])
  196. AC_MSG_RESULT($mysql_cv_sys_os)
  197. # This should be rewritten to use $target_os
  198. case "$target_os" in
  199.   sco3.2v5*) 
  200.      CFLAGS="$CFLAGS -DSCO"
  201.      CXXFLAGS="$CXXFLAGS -DSCO"
  202.      LD='$(CC) $(CFLAGS)'
  203.      case "$CFLAGS" in
  204.        *-belf*) 
  205.          AC_SYS_COMPILER_FLAG(-belf,sco_belf_option,CFLAGS,[],[
  206.          case "$LDFLAGS" in
  207.            *-belf*) ;;
  208.            *) echo "Adding -belf option to ldflags."
  209.               LDFLAGS="$LDFLAGS -belf"
  210.            ;;
  211.          esac
  212.          ])
  213.        ;;
  214.        *)
  215.          AC_SYS_COMPILER_FLAG(-belf,sco_belf_option,CFLAGS,[],[
  216.          case "$LDFLAGS" in
  217.            *-belf*) ;;
  218.            *)
  219.      echo "Adding -belf option to ldflags."
  220.              LDFLAGS="$LDFLAGS -belf"
  221.            ;;
  222.          esac
  223.          ])
  224.        ;;
  225.      esac
  226.   ;;
  227.   sysv5uw7*) 
  228.     if test "$GCC" != "yes"; then
  229.       # We are using built-in inline function
  230.       CFLAGS="$CFLAGS -Kalloca"
  231.       CXX="$CXX -DNO_CPLUSPLUS_ALLOCA"
  232.     else
  233.       CXX="$CXX -DNO_CPLUSPLUS_ALLOCA"
  234.     fi
  235.   ;;
  236. esac
  237. AC_SUBST(CC)
  238. AC_SUBST(CFLAGS)
  239. AC_SUBST(CXX)
  240. AC_SUBST(CXXFLAGS)
  241. AC_SUBST(LD)
  242. export CC CFLAGS LD LDFLAGS
  243. if test "$GXX" = "yes"
  244. then
  245.   # mysqld requires this when compiled with gcc
  246.   CXXFLAGS="$CXXFLAGS -fno-implicit-templates"
  247. fi
  248. # Avoid bug in fcntl on some versions of linux
  249. AC_MSG_CHECKING("if we should use 'skip-locking' as default for $target_os")
  250. # Any wariation of Linux
  251. if expr "$target_os" : "[[Ll]]inux.*" > /dev/null
  252. then
  253.   MYSQLD_DEFAULT_SWITCHES="--skip-locking"
  254.   IS_LINUX="true"
  255.   AC_MSG_RESULT("yes");
  256. else
  257.   MYSQLD_DEFAULT_SWITCHES=""
  258.   IS_LINUX="false"
  259.   AC_MSG_RESULT("no");
  260. fi
  261. AC_SUBST(MYSQLD_DEFAULT_SWITCHES)
  262. AC_SUBST(IS_LINUX)
  263. dnl Find paths to some shell programs
  264. AC_PATH_PROG(LN, ln, ln)
  265. # This must be able to take a -f flag like normal unix ln.
  266. AC_PATH_PROG(LN_CP_F, ln, ln)
  267. # If ln -f does not exists use -s (AFS systems)
  268. if test -n "$LN_CP_F"; then
  269.   LN_CP_F="$LN_CP_F -s"
  270. fi
  271. AC_PATH_PROG(MV, mv, mv)
  272. AC_PATH_PROG(RM, rm, rm)
  273. AC_PATH_PROG(CP, cp, cp)
  274. AC_PATH_PROG(SED, sed, sed)
  275. AC_PATH_PROG(CMP, cmp, cmp)
  276. AC_PATH_PROG(CHMOD, chmod, chmod)
  277. AC_PATH_PROG(HOSTNAME, hostname, hostname)
  278. dnl We use a path for perl so the script startup works
  279. dnl We make sure to use perl, not perl5, in hopes that the RPMs will
  280. dnl not depend on the perl5 binary being installed (probably a bug in RPM)
  281. AC_PATH_PROG(PERL, perl, no)
  282. if test "$PERL" != "no" && $PERL -e 'require 5' > /dev/null 2>&1
  283. then
  284.   PERL5=$PERL
  285. else
  286.   AC_PATH_PROG(PERL5, perl5, no)
  287.   if test "$PERL5" != no
  288.   then
  289.     PERL=$PERL5
  290.     ac_cv_path_PERL=$ac_cv_path_PERL5
  291.   fi
  292. fi
  293. AC_SUBST(HOSTNAME)
  294. AC_SUBST(PERL)
  295. AC_SUBST(PERL5)
  296. # Lock for PS
  297. AC_PATH_PROG(PS, ps, ps)
  298. AC_MSG_CHECKING("how to check if pid exists")
  299. PS=$ac_cv_path_PS
  300. # Linux style
  301. if $PS p $$ 2> /dev/null | grep $0 > /dev/null
  302. then
  303.   FIND_PROC="$PS p $$PID | grep mysqld > /dev/null"
  304. # Solaris
  305. elif $PS -p $$ 2> /dev/null | grep $0 > /dev/null
  306. then
  307.   FIND_PROC="$PS -p $$PID | grep mysqld > /dev/null"
  308. # BSD style
  309. elif $PS -uaxww 2> /dev/null | grep $0 > /dev/null
  310. then
  311.   FIND_PROC="$PS -uaxww | grep mysqld | grep " $$PID " > /dev/null"
  312. # SysV style
  313. elif $PS -ef 2> /dev/null | grep $0 > /dev/null
  314. then
  315.   FIND_PROC="$PS -ef | grep mysqld | grep " $$PID " > /dev/null"
  316. # Do anybody use this?
  317. elif $PS $$ 2> /dev/null | grep $0 > /dev/null
  318. then
  319.   FIND_PROC="$PS $$PID | grep mysqld > /dev/null"
  320. else
  321.   case $SYSTEM_TYPE in
  322.     *darwin*)
  323.       FIND_PROC="$PS -uaxww | grep mysqld | grep " $$PID " > /dev/null"
  324.       ;;
  325.     *)
  326.       AC_MSG_ERROR([Could not find the right ps switches. Which OS is this ?. See the Installation chapter in the Reference Manual.])
  327.   esac
  328. fi
  329. AC_SUBST(FIND_PROC)
  330. AC_MSG_RESULT("$FIND_PROC")
  331. # Check if a pid is valid
  332. AC_PATH_PROG(KILL, kill, kill)
  333. AC_MSG_CHECKING("for kill switches")
  334. if $ac_cv_path_KILL -0 $$
  335. then
  336.   CHECK_PID="$ac_cv_path_KILL -0 $$PID > /dev/null 2> /dev/null"
  337. elif kill -s 0 $$
  338. then
  339.   CHECK_PID="$ac_cv_path_KILL -s 0 $$PID > /dev/null 2> /dev/null"
  340. else
  341.   AC_MSG_WARN([kill -0 to check for pid seems to fail])
  342.     CHECK_PID="$ac_cv_path_KILL -s SIGCONT $$PID > /dev/null 2> /dev/null"
  343. fi
  344. AC_SUBST(CHECK_PID)
  345. AC_MSG_RESULT("$CHECK_PID")
  346. # We need a ANSI C compiler
  347. AM_PROG_CC_STDC
  348. if test "$am_cv_prog_cc_stdc" = "no"
  349. then
  350.   AC_MSG_ERROR([MySQL requiers a ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.])
  351. fi
  352. AC_ARG_WITH(server-suffix,
  353.     [  --with-server-suffix    Append value to the version string.],
  354.     # I heard that 'cut' isn't portable.  Isn't there a better way?
  355.     [ MYSQL_SERVER_SUFFIX=`echo "$withval" | sed -e  's/^(...................................)..*$/1/'` ],
  356.     [ MYSQL_SERVER_SUFFIX= ]
  357.     )
  358. AC_SUBST(MYSQL_SERVER_SUFFIX)
  359. # Set flags if we wants to have MIT threads.
  360. AC_ARG_WITH(mit-threads,
  361.     [  --with-mit-threads      Always use included thread lib.],
  362.     [ with_mit_threads=$withval ],
  363.     [ with_mit_threads=no ]
  364.     )
  365. if test "$with_mit_threads" = "yes"
  366. then
  367.   enable_largefile="no" # Will not work on Linux.
  368. fi
  369. # Set flags if we want to force to use pthreads
  370. AC_ARG_WITH(pthread,
  371.     [  --with-pthread          Force use of pthread library.],
  372.     [ with_pthread=$withval ],
  373.     [ with_pthread=no ]
  374.     )
  375. # Force use of thread libs LIBS
  376. AC_ARG_WITH(named-thread-libs,
  377.     [  --with-named-thread-libs=ARG
  378.                           Use specified thread libraries instead of 
  379.                           those automatically found by configure.],
  380.     [ with_named_thread=$withval ],
  381.     [ with_named_thread=no ]
  382.     )
  383. # Force use of a curses libs
  384. AC_ARG_WITH(named-curses-libs,
  385.     [  --with-named-curses-libs=ARG
  386.                           Use specified curses libraries instead of 
  387.                           those automatically found by configure.],
  388.     [ with_named_curses=$withval ],
  389.     [ with_named_curses=no ]
  390.     )
  391. # Force use of a zlib (compress)
  392. AC_ARG_WITH(named-z-libs,
  393.     [  --with-named-z-libs=ARG
  394.                           Use specified zlib libraries instead of
  395.                           those automatically found by configure.],
  396.     [ with_named_zlib=$withval ],
  397.     [ with_named_zlib=z ]
  398.     )
  399. # Make thread safe client
  400. AC_ARG_ENABLE(thread-safe-client,
  401.     [  --enable-thread-safe-client   
  402.                           Compile the client with threads.],
  403.     [ THREAD_SAFE_CLIENT=$enableval ],
  404.     [ THREAD_SAFE_CLIENT=no ]
  405.     )
  406. # Make thread safe client
  407. AC_ARG_ENABLE(assembler,
  408.     [  --enable-assembler      Use assembler versions of some string 
  409.                           functions if available.],
  410.     [ ENABLE_ASSEMBLER=$enableval ],
  411.     [ ENABLE_ASSEMBLER=no ]
  412.     )
  413. # For now we only support assembler on i386 and sparc systems
  414. AM_CONDITIONAL(ASSEMBLER_x86, test "$ENABLE_ASSEMBLER" = "yes" -a "$MACHINE_TYPE" = "i386")
  415. AM_CONDITIONAL(ASSEMBLER_sparc, test "$ENABLE_ASSEMBLER" = "yes" -a "$MACHINE_TYPE" = "sparc")
  416. AM_CONDITIONAL(ASSEMBLER, test ASSEMBLER_x86 = "" -o ASSEMBLER_x86 = "")
  417. AC_MSG_CHECKING(whether to use RAID)
  418. AC_ARG_WITH(raid,
  419.     [  --with-raid             Enable RAID Support],
  420.     [   USE_RAID=$withval ],
  421.     [   USE_RAID=no ]
  422.     )
  423. if test "$USE_RAID" = "yes"
  424. then
  425.   AC_MSG_RESULT([yes])
  426.   AC_DEFINE([USE_RAID])
  427. else
  428.   AC_MSG_RESULT([no])
  429. fi
  430. # Use this to set the place used for unix socket used to local communication.
  431. AC_ARG_WITH(unix-socket-path,
  432.     [  --with-unix-socket-path=SOCKET
  433.                           Where to put the unix-domain socket.  SOCKET must be 
  434.                           an absolute file name.],
  435.     [ MYSQL_UNIX_ADDR=$withval ],
  436.     [ MYSQL_UNIX_ADDR=$MYSQL_UNIX_ADDR_DEFAULT ]
  437.     )
  438. AC_SUBST(MYSQL_UNIX_ADDR)
  439. AC_ARG_WITH(tcp-port,
  440.     [  --with-tcp-port=port-number
  441.                           Which port to use for MySQL services (default 3306)],
  442.     [ MYSQL_TCP_PORT=$withval ],
  443.     [ MYSQL_TCP_PORT=$MYSQL_TCP_PORT_DEFAULT ]
  444.     )
  445. AC_SUBST(MYSQL_TCP_PORT)
  446. # We might want to document the assigned port in the manual.
  447. AC_SUBST(MYSQL_TCP_PORT_DEFAULT)
  448. # Use this to set the place used for unix socket used to local communication.
  449. AC_ARG_WITH(mysqld-user,
  450.     [  --with-mysqld-user=username   
  451.                           What user the mysqld daemon shall be run as.],
  452.     [ MYSQLD_USER=$withval ],
  453.     [ MYSQLD_USER=root ]
  454.     )
  455. AC_SUBST(MYSQLD_USER)
  456. # Use Paul Eggerts macros from GNU tar to check for large file
  457. # support.
  458. AC_SYS_LARGEFILE
  459. # Types that must be checked AFTER large file support is checked
  460. AC_TYPE_SIZE_T
  461. #--------------------------------------------------------------------
  462. # Check for system header files
  463. #--------------------------------------------------------------------
  464. AC_HEADER_DIRENT
  465. AC_HEADER_STDC
  466. AC_HEADER_SYS_WAIT
  467. AC_CHECK_HEADERS(fcntl.h float.h floatingpoint.h ieeefp.h limits.h 
  468.  memory.h pwd.h select.h 
  469.  stdlib.h stddef.h 
  470.  strings.h string.h synch.h sys/mman.h sys/socket.h netinet/in.h arpa/inet.h 
  471.  sys/timeb.h sys/types.h sys/un.h sys/vadvise.h sys/wait.h term.h 
  472.  unistd.h utime.h sys/utime.h termio.h termios.h sched.h crypt.h alloca.h 
  473.  sys/ioctl.h)
  474. #--------------------------------------------------------------------
  475. # Check for system libraries. Adds the library to $LIBS
  476. # and defines HAVE_LIBM etc
  477. #--------------------------------------------------------------------
  478. AC_CHECK_LIB(m, floor, [], AC_CHECK_LIB(m, __infinity))
  479. AC_CHECK_FUNC(gethostbyname_r, [], [
  480.   AC_CHECK_LIB(nsl_r, gethostbyname_r, [],
  481.     AC_CHECK_LIB(nsl, gethostbyname_r))])
  482. AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt))
  483. AC_CHECK_FUNC(yp_get_default_domain, ,
  484.   AC_CHECK_LIB(nsl, yp_get_default_domain))
  485. AC_CHECK_FUNC(p2open, , AC_CHECK_LIB(gen, p2open))
  486. # This may get things to compile even if bind-8 is installed
  487. AC_CHECK_FUNC(bind, , AC_CHECK_LIB(bind, bind))
  488. # For crypt() on Linux
  489. AC_CHECK_LIB(crypt, crypt)
  490. AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT)) 
  491. # For compress in zlib
  492. MYSQL_CHECK_ZLIB_WITH_COMPRESS($with_named_zlib)
  493. #--------------------------------------------------------------------
  494. # Check for TCP wrapper support
  495. #--------------------------------------------------------------------
  496. AC_ARG_WITH(libwrap,
  497. [  --with-libwrap[=DIR]    Compile in libwrap (tcp_wrappers) support],[
  498.   case "$with_libwrap" in
  499.   no) : ;;
  500.   yes|*)
  501.     _cppflags=${CPPFLAGS}
  502.     _ldflags=${LDFLAGS}
  503.     if test "$with_libwrap" != "yes"; then
  504.       CPPFLAGS="${CPPFLAGS} -I$with_libwrap/include"
  505.       LDFLAGS="${LDFLAGS} -L$with_libwrap/lib"
  506.     fi
  507.     _libs=${LIBS}
  508.     AC_CHECK_HEADER(tcpd.h,
  509.       LIBS="$LIBS -lwrap"
  510.       AC_MSG_CHECKING(for TCP wrappers library -lwrap)
  511.       AC_TRY_LINK([#include <tcpd.h>
  512. int allow_severity = 0;
  513. int deny_severity  = 0;
  514. struct request_info *req;
  515. ],[hosts_access (req)],
  516.         AC_MSG_RESULT(yes)
  517.         AC_DEFINE(LIBWRAP)
  518.         AC_DEFINE(HAVE_LIBWRAP)
  519.         WRAPLIBS="-L$with_libwrap/lib -lwrap",
  520.         AC_MSG_RESULT(no)
  521.         CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
  522.       CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
  523.     LDFLAGS=${_ldflags} LIBS=${_libs}
  524.     ;;
  525.   esac
  526. ])
  527. AC_SUBST(WRAPLIBS)
  528. if test "$IS_LINUX" = "true"; then
  529.   AC_MSG_CHECKING([for atomic operations])
  530.   atom_ops=
  531.   AC_TRY_RUN([
  532. #include <asm/atomic.h>
  533. int main()
  534. {
  535.   atomic_t v;
  536.   atomic_set(&v, 23);
  537.   atomic_add(5, &v);
  538.   return atomic_read(&v) == 28 ? 0 : -1;
  539. }
  540.   ], AC_DEFINE(HAVE_ATOMIC_ADD) atom_ops="${atom_ops}atomic_add ",
  541.   )
  542.   AC_TRY_RUN([
  543. #include <asm/atomic.h>
  544. int main()
  545. {
  546.   atomic_t v;
  547.   atomic_set(&v, 23);
  548.   atomic_sub(5, &v);
  549.   return atomic_read(&v) == 18 ? 0 : -1;
  550. }
  551.   ], AC_DEFINE(HAVE_ATOMIC_SUB) atom_ops="${atom_ops}atomic_sub ",
  552.   )
  553.   if test -z "$atom_ops"; then atom_ops="no"; fi
  554.   AC_MSG_RESULT($atom_ops)
  555. fi
  556. # Check for gtty if termio.h doesn't exists
  557. if test "$ac_cv_header_termio_h" = "no" -a "$ac_cv_header_termios_h" = "no"
  558. then
  559.   AC_CHECK_FUNC(gtty, , AC_CHECK_LIB(compat, gtty))
  560. fi
  561. # We make a special variable for client library's to avoid including
  562. # thread libs in the client.
  563. NON_THREADED_CLIENT_LIBS="$LIBS"
  564. AC_MSG_CHECKING([for int8])
  565. AC_TRY_RUN([
  566. #ifdef HAVE_STDLIB_H
  567. #include <stdlib.h>
  568. #endif
  569. #ifdef HAVE_STDDEF_H
  570. #include <stddef.h>
  571. #endif
  572. #ifdef HAVE_SYS_TYPES_H
  573. #include <sys/types.h>
  574. #endif
  575. int main()
  576. {
  577.   int8 i;
  578.   return 0;
  579. }
  580. ], AC_DEFINE(HAVE_INT_8_16_32) AC_MSG_RESULT([yes]), AC_MSG_RESULT([no])
  581. )
  582. #
  583. # Some system specific hacks
  584. #
  585. MAX_C_OPTIMIZE="-O6"
  586. case $SYSTEM_TYPE in
  587.   *solaris2.7*)
  588.     # Solaris 2.7 has a broken /usr/include/widec.h
  589.     # Make a fixed copy in ./include
  590.     echo "Fixing broken include files for $SYSTEM_TYPE"
  591.     echo "  - Creating local copy of widec.h"
  592.     if test ! -d include
  593.     then
  594.       mkdir ./include
  595.     fi
  596.     builddir=`pwd`
  597.     sed -e "s|^#if[  ]*!defined(lint) && !defined(__lint)|#if !defined(lint) && !defined(__lint) && !defined(getwc)|" < /usr/include/widec.h > include/widec.h
  598.     CFLAGS="$CFLAGS -DHAVE_CURSES_H -I$builddir/include -DHAVE_RWLOCK_T"
  599.     CXXFLAGS="$CXXFLAGS -DHAVE_CURSES_H -I$builddir/include -DHAVE_RWLOCK_T"
  600.     ;;
  601.   *solaris2.8*)
  602.     # Solaris 2.8 has a broken /usr/include/widec.h
  603.     # Make a fixed copy in ./include
  604.     echo "Fixing broken include files for $SYSTEM_TYPE"
  605.     echo "  - Creating local copy of widec.h"
  606.     if test ! -d include
  607.     then
  608.       mkdir ./include
  609.     fi
  610.     builddir=`pwd`
  611.     sed -e "s|^#if[  ]*!defined(__lint)|#if !defined(__lint) && !defined(getwc)|" < /usr/include/widec.h > include/widec.h
  612.     CFLAGS="$CFLAGS -DHAVE_CURSES_H -I$builddir/include -DHAVE_RWLOCK_T"
  613.     CXXFLAGS="$CXXFLAGS -DHAVE_CURSES_H -I$builddir/include -DHAVE_RWLOCK_T"
  614.     ;;
  615.   *solaris2.5.1*)
  616.     echo "Enabling getpass() workaround for Solaris 2.5.1"
  617.     CFLAGS="$CFLAGS -DHAVE_BROKEN_GETPASS -DSOLARIS -DHAVE_RWLOCK_T";
  618.     CXXFLAGS="$CXXFLAGS -DHAVE_RWLOCK_T -DSOLARIS"
  619.     ;;
  620.   *solaris*)
  621.     CFLAGS="$CFLAGS -DHAVE_RWLOCK_T"
  622.     CXXFLAGS="$CXXFLAGS -DHAVE_RWLOCK_T"
  623.     ;;
  624.   *SunOS*)
  625.     echo "Enabling getpass() workaround for SunOS"
  626.     CFLAGS="$CFLAGS -DHAVE_BROKEN_GETPASS -DSOLARIS";
  627.     ;;
  628.   *hpux10.20*)
  629.     echo "Enabling snprintf workaround for hpux 10.20"
  630.     CFLAGS="$CFLAGS -DHAVE_BROKEN_SNPRINTF"
  631.     CXXFLAGS="$CXXFLAGS -DHAVE_BROKEN_SNPRINTF -D_INCLUDE_LONGLONG"
  632.     ;;
  633.   *hpux11.*)
  634.     echo "Enabling pread/pwrite workaround for hpux 11"
  635.     CFLAGS="$CFLAGS -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -DHAVE_BROKEN_GETPASS -DNO_FCNTL_NONBLOCK"
  636.     CXXFLAGS="$CXXFLAGS -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -D_INCLUDE_LONGLONG -DNO_FCNTL_NONBLOCK"
  637.     if test "$with_named_thread" = "no"
  638.     then 
  639.       echo "Using --with-named-thread=-lpthread"
  640.       with_named_thread="-lpthread"
  641.     fi
  642.     ;;
  643.   *rhapsody*)
  644.     if test "$ac_cv_prog_gcc" = "yes"
  645.     then
  646.       CPPFLAGS="$CPPFLAGS -traditional-cpp "
  647.       CFLAGS="-DHAVE_CTHREADS_WRAPPER -DDO_NOT_REMOVE_THREAD_WRAPPERS"
  648.       CXXFLAGS="-DHAVE_CTHREADS_WRAPPER"
  649.       if test $with_named_curses = "no"
  650.       then
  651. with_named_curses=""
  652.       fi
  653.     fi
  654.     ;;
  655.   *darwin*)
  656.     if test "$ac_cv_prog_gcc" = "yes"
  657.     then
  658.       CFLAGS="$CFLAGS -traditional-cpp -DHAVE_DARWIN_THREADS"
  659.       CXXFLAGS="$CXXFLAGS -traditional-cpp -DHAVE_DARWIN_THREADS"
  660.       CFLAGS="$CFLAGS -traditional-cpp -DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE"
  661.       CXXFLAGS="$CXXFLAGS -traditional-cpp -DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE"
  662.       MAX_C_OPTIMIZE="-O"
  663.       with_named_curses=""
  664.     fi
  665.     ;;
  666.   *freebsd*)
  667.     echo "Adding fix for interrupted reads"
  668.     CXXFLAGS="$CXXFLAGS -DMYSQLD_NET_RETRY_COUNT=1000000"
  669.     ;;
  670.   *bsdi*)
  671.     echo "Adding fix for BSDI"
  672.     CFLAGS="$CFLAGS -D__BSD__ -DHAVE_BROKEN_REALPATH"
  673.     AC_DEFINE_UNQUOTED(SOCKOPT_OPTLEN_TYPE, size_t)
  674.     ;;
  675.    *sgi-irix6*)
  676.     if test "$with_named_thread" = "no"
  677.     then 
  678.       echo "Using --with-named-thread=-lpthread"
  679.       with_named_thread="-lpthread"
  680.     fi
  681.     CXXFLAGS="-D_BOOL"
  682.     ;;
  683.     *aix4.3*)
  684.       echo "Adding defines for AIX"
  685.       CFLAGS="$CFLAGS -Wa,-many -DUNDEF_HAVE_INITGROUPS"
  686.       CXXFLAGS="$CXXFLAGS -Wa,-many -DUNDEF_HAVE_INITGROUPS"
  687.     ;;
  688. esac
  689. #---START: Used in for client configure
  690. # Check if we threads are in libc or if we should use
  691. # -lpthread, -lpthreads or mit-pthreads
  692. # We have to check libc last because else it fails on Solaris 2.6
  693. with_posix_threads="no"
  694. # Hack for DEC-UNIX (OSF1)
  695. if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no"
  696. then
  697.   # Look for LinuxThreads.
  698.   AC_MSG_CHECKING("LinuxThreads")
  699.     res=`grep Linuxthreads /usr/include/pthread.h 2>/dev/null | wc -l`
  700.     if test "$res" -gt 0
  701.     then
  702.       AC_MSG_RESULT("Found")
  703.       AC_DEFINE(HAVE_LINUXTHREADS)
  704.       # Linux 2.0 sanity check
  705.       AC_TRY_COMPILE([#include <sched.h>], [int a = sched_get_priority_min(1);], ,
  706.       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]))
  707.       # RedHat 5.0 does not work with dynamic linking of this. -static also
  708.       # gives a spped increase in linux so it does not hurt on other systems.
  709.       with_named_thread="-lpthread"
  710.     else
  711.       AC_MSG_RESULT("Not found")
  712.       # If this is a linux machine we should barf
  713.       if test "$IS_LINUX" = "true"
  714.       then
  715. AC_MSG_ERROR([This is a linux system and Linuxthreads was not
  716. found. On linux Linuxthreads should be used. So install Linuxthreads
  717. (or a new glibc) and try again. See the Installation chapter in the
  718. Reference Manual.])
  719.       else
  720. AC_MSG_CHECKING("DEC threads")
  721.         if test -f /usr/shlib/libpthread.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a
  722. then
  723.   with_named_thread="-lpthread -lmach -lexc"
  724.   #with_named_thread="-lpthread -lmach -lexc -lc"
  725.   AC_DEFINE(HAVE_DEC_THREADS)
  726.   AC_MSG_RESULT("yes")
  727. else
  728.   AC_MSG_RESULT("no")
  729.   AC_MSG_CHECKING("DEC 3.2 threads")
  730.           if test -f /usr/shlib/libpthreads.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a
  731.   then
  732.     with_named_thread="-lpthreads -lmach -lc_r"
  733.     AC_DEFINE(HAVE_DEC_THREADS)
  734.     AC_DEFINE(HAVE_DEC_3_2_THREADS)
  735.             with_osf32_threads="yes"
  736.             MYSQLD_DEFAULT_SWITCHES="--skip-thread-priority"
  737.     AC_MSG_RESULT("yes")
  738.   else
  739.     AC_MSG_RESULT("no")
  740.           fi
  741. fi
  742.      fi
  743.    fi
  744. fi
  745. dnl This is needed because -lsocket has to come after the thread
  746. dnl library on SCO.
  747. AC_DEFUN([MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK], [
  748.   LIBS=`echo " $LIBS " | sed -e 's/ -lsocket / /g'`
  749. ])
  750. # Hack for SCO UNIX
  751. if test "$with_named_thread" = "no"
  752. then
  753.   AC_MSG_CHECKING("SCO threads")
  754.   if expr "$SYSTEM_TYPE" : ".*sco.*" > /dev/null
  755.   then
  756.     if test -f /usr/lib/libgthreads.a -o -f /usr/lib/libgthreads.so
  757.     then
  758.       MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK
  759.       with_named_thread="-lgthreads -lsocket -lgthreads"
  760.       # sched.h conflicts with fsu-threads
  761.       touch ./include/sched.h
  762.       # We must have gcc
  763.       if expr "$CC" : ".*gcc.*"
  764.       then
  765. AC_MSG_RESULT("yes")
  766.       else
  767. AC_MSG_ERROR([On SCO UNIX MySQL must be compiled with gcc. See the Installation chapter in the Reference Manual.]);
  768.       fi
  769.       AC_MSG_RESULT("yes")
  770.     elif test -f /usr/local/lib/libpthread.a -o -f /usr/local/lib/libpthread.so
  771.     then
  772.       MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK
  773.       with_named_thread="-lpthread -lsocket"
  774.       # sched.h conflicts with fsu-threads
  775.       # touch ./include/sched.h
  776.       AC_MSG_CHECKING("for gcc")
  777.       # We must have gcc
  778.       if expr "$CC" : ".*gcc.*"
  779.       then
  780. AC_MSG_RESULT("yes")
  781.       else
  782. AC_MSG_ERROR([On SCO UNIX MySQL must be compiled with gcc. See the Installation chapter in the Reference Manual.]);
  783.       fi
  784.       AC_MSG_RESULT("yes")
  785.     # Hack for SCO UnixWare 7.1
  786.     #
  787.     elif test "$with_named_thread" = "no"
  788.     then
  789.       AC_MSG_RESULT("no")
  790.       AC_MSG_CHECKING("SCO UnixWare 7.1 native threads")
  791.       if expr "$SYSTEM_TYPE" : ".*sco.*" > /dev/null
  792.       then
  793.         if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so
  794.         then
  795.   MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK
  796.           if expr "$CC" : ".*gcc.*"
  797.           then
  798.             with_named_thread="-pthread -lsocket -lnsl"
  799.           else
  800.             with_named_thread="-Kthread -lsocket -lnsl"
  801.           fi
  802.           if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null
  803.           then
  804.             AC_DEFINE(HAVE_UNIXWARE7_THREADS)
  805.           else
  806.             AC_DEFINE(HAVE_UNIXWARE7_POSIX)
  807.           fi
  808.           AC_MSG_RESULT("yes")
  809.           # We must have cc
  810.           AC_MSG_CHECKING("for gcc")
  811.           if expr "$CC" : ".*gcc.*"
  812.           then
  813.     CC="$CC -pthread -DUNIXWARE_7";
  814.     CXX="$CXX -pthread -DUNIXWARE_7";
  815.           else
  816.     CC="$CC -Kthread -DUNIXWARE_7";
  817.     CXX="$CXX -Kthread -DUNIXWARE_7";
  818.           fi
  819.         else
  820.           { echo "configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual." 1>&2; exit 1; };
  821.         fi
  822.       else
  823.         AC_MSG_RESULT("no")
  824.       fi
  825.     else
  826.       AC_MSG_ERROR([On SCO UNIX MySQL requires that the FSUThreads package is installed. See the Installation chapter in the Reference Manual.]);
  827.     fi
  828.   else
  829.     AC_MSG_RESULT("no")
  830.   fi
  831. fi
  832. # Hack for SCO UnixWare7
  833. #
  834. if test "$with_named_thread" = "no"
  835. then
  836.   AC_MSG_CHECKING("SCO UnixWare7 native threads")
  837.   if expr "$SYSTEM_TYPE" : ".*unixware7*" > /dev/null
  838.   then
  839.     if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so
  840.     then
  841.       MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK
  842.       with_named_thread="-Kthread -lsocket -lnsl"
  843.       if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null
  844.       then
  845.         AC_DEFINE(HAVE_UNIXWARE7_THREADS)
  846.       else
  847.         AC_DEFINE(HAVE_UNIXWARE7_POSIX)
  848.       fi
  849.       # We must have cc
  850.       AC_MSG_CHECKING("for gcc")
  851.       if expr "$CC" : ".*gcc.*"
  852.       then
  853. { echo "configure: error: On SCO UnixWare7 MySQL must be compiled with cc. See the Installation chapter in the Reference Manual." 1>&2; exit 1; };
  854.       else
  855. CC="$CC -Kthread -DUNIXWARE_7";
  856. CXX="$CXX -Kthread -DUNIXWARE_7";
  857.       fi
  858.       AC_MSG_RESULT("yes")
  859.     else
  860.       { echo "configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual." 1>&2; exit 1; };
  861.     fi
  862.   else
  863.     AC_MSG_RESULT("no")
  864.   fi
  865. fi
  866. # Hack for Siemens UNIX
  867. if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no"
  868. then
  869.   AC_MSG_CHECKING("Siemens threads")
  870.   if test -f /usr/lib/libxnet.so -a "$SYSTEM_TYPE" = "sni-sysv4"
  871.   then
  872.     LIBS="-lxnet $LIBS"
  873.     NON_THREADED_CLIENT_LIBS="$NON_THREADED_CLIENT_LIBS -lxnet"
  874.     with_named_thread="-Kthread $LDFLAGS -lxnet"
  875.     LD_FLAGS=""
  876.     CFLAGS="-Kthread $CFLAGS"
  877.     CXXFLAGS="-Kthread $CXXFLAGS"
  878.     AC_MSG_RESULT("yes")
  879.   else
  880.     AC_MSG_RESULT("no")
  881.   fi
  882. fi
  883. # Use library named -lpthread
  884. if test "$with_named_thread" = "no" -a "$with_pthread" = "yes"
  885. then
  886.     with_named_thread="-lpthread"
  887. fi
  888. #---END:
  889. # Hack for Solaris >= 2.5
  890. # We want both the new and the old interface
  891.  
  892. if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no"
  893. then
  894.   AC_MSG_CHECKING("Solaris threads")
  895.   if test -f /usr/lib/libpthread.so -a -f /usr/lib/libthread.so
  896.   then
  897.     with_named_thread="-lpthread -lthread"
  898.     AC_MSG_RESULT("yes")
  899.   else
  900.     AC_MSG_RESULT("no")
  901.   fi
  902. fi
  903. # Should we use named pthread library ?
  904. AC_MSG_CHECKING("named thread libs:")
  905. if test "$with_named_thread" != "no"
  906. then
  907.   LIBS="$LIBS $with_named_thread"
  908.   with_posix_threads="yes"
  909.   with_mit_threads="no"
  910.   AC_MSG_RESULT("$with_named_thread")
  911. else
  912.   AC_MSG_RESULT("no")
  913.   if test "$with_mit_threads" = "no"
  914.   then
  915.     # pthread_create is in standard libraries (As in BSDI 3.0)
  916.     AC_MSG_CHECKING("for pthread_create in -libc");
  917.     AC_TRY_LINK(
  918.     [#include <pthread.h>],
  919.     [ (void) pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ],
  920.     with_posix_threads=yes, with_posix_threads=no)
  921.     AC_MSG_RESULT("$with_posix_threads")
  922.     if test "$with_posix_threads" = "no"
  923.     then
  924.       AC_MSG_CHECKING("for pthread_create in -lpthread");
  925.       ac_save_LIBS="$LIBS"
  926.       LIBS="$LIBS -lpthread"
  927.       AC_TRY_LINK(
  928.       [#include <pthread.h>],
  929.       [ (void) pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ],
  930.       with_posix_threads=yes, with_posix_threads=no)
  931.       AC_MSG_RESULT("$with_posix_threads")
  932.       if test "$with_posix_threads" = "no"
  933.       then
  934.         LIBS=" $ac_save_LIBS -lpthreads"
  935.         AC_MSG_CHECKING("for pthread_create in -lpthreads");
  936.         AC_TRY_LINK(
  937.         [#include <pthread.h>],
  938.         [ pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ],
  939.         with_posix_threads=yes, with_posix_threads=no)
  940.         AC_MSG_RESULT("$with_posix_threads")
  941.         if test "$with_posix_threads" = "no"
  942.         then
  943.   # This is for FreeBSD
  944.   LIBS="$ac_save_LIBS -pthread"
  945.   AC_MSG_CHECKING("for pthread_create in -pthread");
  946.   AC_TRY_LINK(
  947.   [#include <pthread.h>],
  948.   [ pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ],
  949.   with_posix_threads=yes, with_posix_threads=no)
  950.           AC_MSG_RESULT("$with_posix_threads")
  951.           if test "$with_posix_threads" = "no"
  952.   then
  953.     with_mit_threads="yes"
  954.     LIBS="$ac_save_LIBS"
  955.   fi
  956. fi
  957.       fi
  958.     fi
  959.   fi
  960. fi
  961. #---START: Used in for client configure
  962. # Must be checked after, because strtok_r may be in -lpthread
  963. # On AIX strtok_r is in libc_r
  964. my_save_LIBS="$LIBS"
  965. AC_CHECK_LIB(pthread,strtok_r)
  966. LIBS="$my_save_LIBS"
  967. if test "$ac_cv_lib_pthread_strtok_r" = "no"
  968. then
  969.   my_save_LIBS="$LIBS"
  970.   AC_CHECK_LIB(c_r,strtok_r)
  971.   if test "$with_osf32_threads" = "yes" -o "$target_os" = "FreeBSD" -o "$target_os" = "freebsd" 
  972.   then
  973.     LIBS="$my_save_LIBS"
  974.   fi
  975.   AC_CHECK_FUNCS(strtok_r pthread_init)
  976. else
  977.   AC_CHECK_FUNCS(strtok_r)
  978. fi
  979. #---END:
  980. # for user definable functions (must be checked after threads on AIX)
  981. AC_CHECK_LIB(dl,dlopen)
  982. # System characteristics
  983. AC_SYS_RESTARTABLE_SYSCALLS
  984. # Build optimized or debug version ?
  985. # First check for gcc and g++
  986. if test "$ac_cv_prog_gcc" = "yes"
  987. then
  988.   DEBUG_CFLAGS="-g"
  989.   DEBUG_OPTIMIZE_CC="-O"
  990.   OPTIMIZE_CFLAGS="$MAX_C_OPTIMIZE"
  991. else
  992.   DEBUG_CFLAGS="-g"
  993.   DEBUG_OPTIMIZE_CC=""
  994.   OPTIMIZE_CFLAGS="-O"
  995. fi
  996. if test "$ac_cv_prog_cxx_g" = "yes"
  997. then
  998.   DEBUG_CXXFLAGS="-g"
  999.   DEBUG_OPTIMIZE_CXX="-O"
  1000.   OPTIMIZE_CXXFLAGS="-O3"
  1001. else
  1002.   DEBUG_CXXFLAGS="-g"
  1003.   DEBUG_OPTIMIZE_CXX=""
  1004.   OPTIMIZE_CXXFLAGS="-O"
  1005. fi
  1006. AC_ARG_WITH(debug,
  1007.     [  --without-debug         Build a production version without debugging code],
  1008.     [with_debug=$withval],
  1009.     [with_debug=no])
  1010. if test "$with_debug" = "yes"
  1011. then
  1012.   # Medium debug.
  1013.   CFLAGS="$DEBUG_CFLAGS $DEBUG_OPTIMIZE_CC -DDBUG_ON -DSAFE_MUTEX $CFLAGS"
  1014.   CXXFLAGS="$DEBUG_CXXFLAGS $DEBUG_OPTIMIZE_CXX -DSAFE_MUTEX $CXXFLAGS"
  1015. elif test "$with_debug" = "full"
  1016. then
  1017.   # Full debug. Very slow in some cases
  1018.   CFLAGS="$DEBUG_CFLAGS -DDBUG_ON -DSAFE_MUTEX -DSAFEMALLOC $CFLAGS"
  1019.   CXXFLAGS="$DEBUG_CXXFLAGS -DSAFE_MUTEX -DSAFEMALLOC $CXXFLAGS"
  1020. else
  1021.   # Optimized version. No debug
  1022.   CFLAGS="$OPTIMIZE_CFLAGS -DDBUG_OFF $CFLAGS"
  1023.   CXXFLAGS="$OPTIMIZE_CXXFLAGS -DDBUG_OFF $CXXFLAGS"
  1024. fi
  1025. # Force static compilation to avoid linking probles/get more speed
  1026. AC_ARG_WITH(mysqld-ldflags,
  1027.     [  --with-mysqld-ldflags   Extra linking arguments for mysqld],
  1028.     [MYSQLD_EXTRA_LDFLAGS=$withval],
  1029.     [MYSQLD_EXTRA_LDFLAGS=])
  1030. AC_SUBST(MYSQLD_EXTRA_LDFLAGS)
  1031. AC_ARG_WITH(client-ldflags,
  1032.     [  --with-client-ldflags   Extra linking arguments for clients],
  1033.     [CLIENT_EXTRA_LDFLAGS=$withval],
  1034.     [CLIENT_EXTRA_LDFLAGS=])
  1035. AC_SUBST(CLIENT_EXTRA_LDFLAGS)
  1036. # Avoid stupid bug on some OS 
  1037. AC_ARG_WITH(low-memory,
  1038.     [  --with-low-memory       Try to use less memory to compile to avoid 
  1039.                           memory limitations.],
  1040.     [with_lowmem=$withval],
  1041.     [with_lowmem=no])
  1042. if test "$with_lowmem" = "yes"
  1043. then
  1044.   if test "$ac_cv_prog_gcc" = "yes" 
  1045.   then 
  1046.     LM_CFLAGS="-fno-inline"
  1047.   else
  1048.     LM_CFLAGS="-O0"
  1049.   fi
  1050. else
  1051.   LM_CFLAGS=""
  1052. fi
  1053. AC_SUBST(LM_CFLAGS)
  1054. AC_ARG_WITH(comment,
  1055.     [  --with-comment          Comment about compilation environment.],
  1056.     [with_comment=$withval],
  1057.     [with_comment=no])
  1058. if test "$with_comment" != "no"
  1059. then
  1060.   COMPILATION_COMMENT=$with_comment
  1061. else
  1062.   COMPILATION_COMMENT="Source distribution"
  1063. fi
  1064. AC_SUBST(COMPILATION_COMMENT)
  1065. AC_MSG_CHECKING("need of special linking flags")
  1066. if test "$IS_LINUX" = "true"
  1067. then
  1068.   LDFLAGS="$LDFLAGS -rdynamic"
  1069.   AC_MSG_RESULT("-rdynamic")
  1070. else
  1071.   AC_MSG_RESULT("none")
  1072. fi
  1073. dnl Checks for typedefs, structures, and compiler characteristics.
  1074. AC_C_CONST
  1075. AC_C_INLINE
  1076. AC_TYPE_OFF_T
  1077. AC_STRUCT_ST_RDEV
  1078. AC_HEADER_TIME
  1079. AC_STRUCT_TM
  1080. # AC_CHECK_SIZEOF return 0 when it does not find the size of a
  1081. # type. We want a error instead.
  1082. AC_CHECK_SIZEOF(char, 1)
  1083. if test "$ac_cv_sizeof_char" -eq 0
  1084. then
  1085.   AC_MSG_ERROR([No size for char type.
  1086. A likely cause for this could be that there isn't any
  1087. static libraries installed. You can verify this by checking if you have libm.a
  1088. in /lib, /usr/lib or some other standard place.  If this is the problem,
  1089. install the static libraries and try again.  If this isn't the problem,
  1090. examine config.log for possible errors.  If you want to report this, use
  1091. 'scripts/mysqlbug' and include at least the last 20 rows from config.log!])
  1092. fi
  1093. AC_CHECK_SIZEOF(int, 4)
  1094. if test "$ac_cv_sizeof_int" -eq 0
  1095. then
  1096.   AC_MSG_ERROR("No size for int type.")
  1097. fi
  1098. AC_CHECK_SIZEOF(long, 4)
  1099. if test "$ac_cv_sizeof_long" -eq 0
  1100. then
  1101.   AC_MSG_ERROR("No size for long type.")
  1102. fi
  1103. AC_CHECK_SIZEOF(long long, 8)
  1104. if test "$ac_cv_sizeof_long_long" -eq 0
  1105. then
  1106.   AC_MSG_ERROR("MySQL needs a long long type.")
  1107. fi
  1108. # off_t is not a builtin type
  1109. MYSQL_CHECK_SIZEOF(off_t, 4)
  1110. if test "$ac_cv_sizeof_off_t" -eq 0
  1111. then
  1112.   AC_MSG_ERROR("MySQL needs a off_t type.")
  1113. fi
  1114. # This always gives a warning. Ignore it unless you are cross compiling
  1115. AC_C_BIGENDIAN
  1116. #---START: Used in for client configure
  1117. # Check base type of last arg to accept
  1118. MYSQL_TYPE_ACCEPT
  1119. #---END:
  1120. # Find where the stack goes
  1121. MYSQL_STACK_DIRECTION
  1122. # We want to skip alloca on irix unconditionally. It may work on some version..
  1123. MYSQL_FUNC_ALLOCA
  1124. # Do struct timespec have members tv_sec or ts_sec
  1125. MYSQL_TIMESPEC_TS
  1126. # Do we have the tzname variable
  1127. MYSQL_TZNAME
  1128. # Do the system files define ulong
  1129. MYSQL_CHECK_ULONG
  1130. # Do the system files define uchar
  1131. MYSQL_CHECK_UCHAR
  1132. # Do the system files define uint
  1133. MYSQL_CHECK_UINT
  1134. #Check for fp_except in ieeefp.h
  1135. MYSQL_CHECK_FP_EXCEPT
  1136. # Do the c++ compiler have a bool type
  1137. MYSQL_CXX_BOOL
  1138. # Check some common bugs with gcc 2.8.# on sparc
  1139. MYSQL_CHECK_LONGLONG_TO_FLOAT
  1140. if test "$ac_cv_conv_longlong_to_float" != "yes"
  1141. then
  1142.   AC_MSG_ERROR([Your compiler can't convert a longlong value to a float!
  1143. If you are using gcc 2.8.# you should upgrade to egcs 1.0.3 or newer and try
  1144. again]);
  1145. fi
  1146. ######################################################################
  1147. # For readline-4.0 (We simply move the mimimum amount of stuff from
  1148. # the readline configure.in here)
  1149. MAKE_SHELL=/bin/sh
  1150. AC_SUBST(MAKE_SHELL)
  1151. # Already-done: stdlib.h string.h unistd.h termios.h
  1152. AC_CHECK_HEADERS(varargs.h stdarg.h dirent.h locale.h ndir.h sys/dir.h 
  1153.  sys/file.h sys/ndir.h sys/ptem.h sys/pte.h sys/select.h sys/stream.h 
  1154.  sys/mman.h curses.h termcap.h termio.h termbits.h asm/termbits.h grp.h 
  1155. paths.h)
  1156. # Already-done: strcasecmp
  1157. AC_CHECK_FUNCS(lstat putenv select setenv setlocale strcoll tcgetattr)
  1158. AC_STAT_MACROS_BROKEN
  1159. MYSQL_SIGNAL_CHECK
  1160. MYSQL_CHECK_GETPW_FUNCS
  1161. MYSQL_HAVE_TIOCGWINSZ
  1162. MYSQL_HAVE_FIONREAD
  1163. MYSQL_HAVE_TIOCSTAT
  1164. MYSQL_STRUCT_DIRENT_D_INO
  1165. MYSQL_TYPE_SIGHANDLER
  1166. if test "$with_named_curses" = "no"
  1167. then
  1168.   MYSQL_CHECK_LIB_TERMCAP
  1169. else
  1170.   TERMCAP_LIB="$with_named_curses"
  1171. fi
  1172. AC_SUBST(TERMCAP_LIB)
  1173. # End of readline stuff
  1174. #########################################################################
  1175. dnl Checks for library functions.
  1176. AC_FUNC_MMAP
  1177. AC_TYPE_SIGNAL
  1178. MYSQL_TYPE_QSORT
  1179. AC_FUNC_UTIME_NULL
  1180. AC_FUNC_VPRINTF
  1181. AC_CHECK_FUNCS(alarm bmove 
  1182.  chsize ftruncate rint finite fpsetmask fpresetsticky
  1183.  cuserid fcntl fconvert poll 
  1184.  getrusage getpwuid getcwd getrlimit getwd index stpcpy locking longjmp 
  1185.  perror pread realpath readlink rename 
  1186.  socket strnlen madvise mkstemp 
  1187.  strtol strtoul strtoull snprintf tempnam thr_setconcurrency 
  1188.  gethostbyaddr_r gethostbyname_r getpwnam 
  1189.  bfill bzero bcmp strstr strpbrk strerror 
  1190.  tell atod memcpy memmove 
  1191.  setupterm strcasecmp sighold vidattr lrand48 localtime_r 
  1192.  sigset sigthreadmask pthread_sigmask pthread_setprio pthread_setprio_np 
  1193.  pthread_setschedparam pthread_attr_setprio pthread_attr_setschedparam 
  1194.  pthread_attr_create pthread_getsequence_np pthread_attr_setstacksize 
  1195.  pthread_condattr_create rwlock_init pthread_rwlock_rdlock 
  1196.  dlopen dlerror fchmod getpass getpassphrase initgroups mlockall)
  1197. # Sanity check: We chould not have any fseeko symbol unless
  1198. # large_file_support=yes
  1199. AC_CHECK_FUNCS(fseeko,
  1200. [if test "$large_file_support" = no -a "$IS_LINUX" = "true";
  1201. then
  1202.   AC_MSG_ERROR("Found fseeko symbol but large_file_support is not enabled!");
  1203. fi]
  1204. )
  1205. # Check definition of gethostbyaddr_r (glibc2 defines this with 8 arguments)
  1206. ac_save_CXXFLAGS="$CXXFLAGS"
  1207. AC_CACHE_CHECK([style of gethost* routines], mysql_cv_gethost_style,
  1208. AC_LANG_SAVE
  1209. AC_LANG_CPLUSPLUS
  1210. if test "$ac_cv_prog_gxx" = "yes"
  1211. then
  1212.   CXXFLAGS="$CXXFLAGS -Werror"
  1213. fi
  1214. AC_TRY_COMPILE(
  1215. [#if !defined(SCO) && !defined(__osf__)
  1216. #define _REENTRANT
  1217. #endif
  1218. #include <pthread.h>
  1219. #include <sys/types.h>
  1220. #include <sys/socket.h>
  1221. #include <netinet/in.h>
  1222. #include <arpa/inet.h>
  1223. #include <netdb.h>],
  1224. [int skr;
  1225.  struct hostent *foo = gethostbyaddr_r((const char *) 0,
  1226.   0, 0, (struct hostent *) 0, (char *) NULL,  0, &skr); return (foo == 0);],
  1227. mysql_cv_gethost_style=solaris, mysql_cv_gethost_style=other))
  1228. AC_LANG_RESTORE
  1229. CXXFLAGS="$ac_save_CXXFLAGS"
  1230. if test "$mysql_cv_gethost_style" = "solaris"
  1231. then
  1232.   AC_DEFINE(HAVE_SOLARIS_STYLE_GETHOST)
  1233. fi
  1234. #---START: Used in for client configure
  1235. # Check definition of gethostbyname_r (glibc2.0.100 is different from Solaris)
  1236. ac_save_CXXFLAGS="$CXXFLAGS"
  1237. AC_CACHE_CHECK([style of gethostname_r routines], mysql_cv_gethostname_style,
  1238. AC_LANG_SAVE
  1239. AC_LANG_CPLUSPLUS
  1240. if test "$ac_cv_prog_gxx" = "yes"
  1241. then
  1242.   CXXFLAGS="$CXXFLAGS -Werror"
  1243. fi
  1244. AC_TRY_COMPILE(
  1245. [#if !defined(SCO) && !defined(__osf__)
  1246. #define _REENTRANT
  1247. #endif
  1248. #include <pthread.h>
  1249. #include <sys/types.h>
  1250. #include <sys/socket.h>
  1251. #include <netinet/in.h>
  1252. #include <arpa/inet.h>
  1253. #include <netdb.h>],
  1254. [int skr;
  1255.  skr = gethostbyname_r((const char *) 0,
  1256.   (struct hostent*) 0, (char*) 0, 0, (struct hostent **) 0, &skr);],
  1257. mysql_cv_gethostname_style=glibc2, mysql_cv_gethostname_style=other))
  1258. AC_LANG_RESTORE
  1259. CXXFLAGS="$ac_save_CXXFLAGS"
  1260. if test "$mysql_cv_gethostname_style" = "glibc2"
  1261. then
  1262.   AC_DEFINE(HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE)
  1263. fi
  1264. # Check 3rd argument of getthostbyname_r
  1265. ac_save_CXXFLAGS="$CXXFLAGS"
  1266. AC_CACHE_CHECK([3 argument to gethostname_r routines], mysql_cv_gethostname_arg,
  1267. AC_LANG_SAVE
  1268. AC_LANG_CPLUSPLUS
  1269. if test "$ac_cv_prog_gxx" = "yes"
  1270. then
  1271.   CXXFLAGS="$CXXFLAGS -Werror"
  1272. fi
  1273. AC_TRY_COMPILE(
  1274. [#if !defined(SCO) && !defined(__osf__)
  1275. #define _REENTRANT
  1276. #endif
  1277. #include <pthread.h>
  1278. #include <sys/types.h>
  1279. #include <sys/socket.h>
  1280. #include <netinet/in.h>
  1281. #include <arpa/inet.h>
  1282. #include <netdb.h>],
  1283. [int skr;
  1284.  skr = gethostbyname_r((const char *) 0, (struct hostent*) 0, (hostent_data*) 0);],
  1285. mysql_cv_gethostname_arg=hostent_data, mysql_cv_gethostname_arg=char))
  1286. AC_LANG_RESTORE
  1287. CXXFLAGS="$ac_save_CXXFLAGS"
  1288. if test "$mysql_cv_gethostname_arg" = "hostent_data"
  1289. then
  1290.   AC_DEFINE(HAVE_GETHOSTBYNAME_R_RETURN_INT)
  1291. fi
  1292. if test "$with_mit_threads" = "no"
  1293. then
  1294.   # Check definition of pthread_getspecific
  1295.   AC_CACHE_CHECK("args to pthread_getspecific", mysql_cv_getspecific_args,
  1296.   AC_TRY_COMPILE(
  1297. [#if !defined(SCO) && !defined(__osf__)
  1298. #define _REENTRANT
  1299. #endif
  1300. #define _POSIX_PTHREAD_SEMANTICS 
  1301. #include <pthread.h> ],
  1302. [ void *pthread_getspecific(pthread_key_t key);
  1303. pthread_getspecific((pthread_key_t) NULL); ],
  1304. mysql_cv_getspecific_args=POSIX, mysql_cv_getspecific_args=other))
  1305.   if test "$mysql_cv_getspecific_args" = "other"
  1306.   then
  1307.     AC_DEFINE(HAVE_NONPOSIX_PTHREAD_GETSPECIFIC)
  1308.   fi
  1309.   # Check definition of pthread_mutex_init
  1310.   AC_CACHE_CHECK("args to pthread_mutex_init", mysql_cv_mutex_init_args,
  1311.   AC_TRY_COMPILE(
  1312. [#if !defined(SCO) && !defined(__osf__)
  1313. #define _REENTRANT
  1314. #endif
  1315. #define _POSIX_PTHREAD_SEMANTICS 
  1316. #include <pthread.h> ],
  1317.   pthread_mutexattr_t attr;
  1318.   pthread_mutex_t mp;
  1319.   pthread_mutex_init(&mp,&attr); ],
  1320. mysql_cv_mutex_init_args=POSIX, mysql_cv_mutex_init_args=other))
  1321.   if test "$mysql_cv_mutex_init_args" = "other"
  1322.   then
  1323.     AC_DEFINE(HAVE_NONPOSIX_PTHREAD_MUTEX_INIT)
  1324.   fi
  1325. fi
  1326. #---END:
  1327. #---START: Used in for client configure
  1328. # Check definition of readdir_r
  1329. AC_CACHE_CHECK("args to readdir_r", mysql_cv_readdir_r,
  1330. AC_TRY_LINK(
  1331. [#if !defined(SCO) && !defined(__osf__)
  1332. #define _REENTRANT
  1333. #endif
  1334. #define _POSIX_PTHREAD_SEMANTICS 
  1335. #include <pthread.h>
  1336. #include <dirent.h>],
  1337. [ int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
  1338. readdir_r((DIR *) NULL, (struct dirent *) NULL, (struct dirent **) NULL); ],
  1339. mysql_cv_readdir_r=POSIX, mysql_cv_readdir_r=other))
  1340. if test "$mysql_cv_readdir_r" = "POSIX"
  1341. then
  1342.   AC_DEFINE(HAVE_READDIR_R)
  1343. fi
  1344. # Check definition av posix sigwait()
  1345. AC_CACHE_CHECK("style of sigwait", mysql_cv_sigwait,
  1346. AC_TRY_LINK(
  1347. [#if !defined(SCO) && !defined(__osf__)
  1348. #define _REENTRANT
  1349. #endif
  1350. #define _POSIX_PTHREAD_SEMANTICS 
  1351. #include <pthread.h>
  1352. #include <signal.h>],
  1353. [#ifndef _AIX
  1354. sigset_t set;
  1355. int sig;
  1356. sigwait(&set,&sig);
  1357. #endif],
  1358. mysql_cv_sigwait=POSIX, mysql_cv_sigwait=other))
  1359. if test "$mysql_cv_sigwait" = "POSIX"
  1360. then
  1361.   AC_DEFINE(HAVE_SIGWAIT)
  1362. fi
  1363. if test "$mysql_cv_sigwait" != "POSIX"
  1364. then
  1365. unset mysql_cv_sigwait
  1366. # Check definition av posix sigwait()
  1367. AC_CACHE_CHECK("style of sigwait", mysql_cv_sigwait,
  1368. AC_TRY_LINK(
  1369. [#if !defined(SCO) && !defined(__osf__)
  1370. #define _REENTRANT
  1371. #endif
  1372. #define _POSIX_PTHREAD_SEMANTICS 
  1373. #include <pthread.h>
  1374. #include <signal.h>],
  1375. [sigset_t set;
  1376. int sig;
  1377. sigwait(&set);],
  1378. mysql_cv_sigwait=NONPOSIX, mysql_cv_sigwait=other))
  1379. if test "$mysql_cv_sigwait" = "NONPOSIX"
  1380. then
  1381.   AC_DEFINE(HAVE_NONPOSIX_SIGWAIT)
  1382. fi
  1383. fi
  1384. #---END:
  1385. # Check if pthread_attr_setscope() exists
  1386. AC_CACHE_CHECK("for pthread_attr_setscope", mysql_cv_pthread_attr_setscope,
  1387. AC_TRY_LINK(
  1388. [#if !defined(SCO) && !defined(__osf__)
  1389. #define _REENTRANT
  1390. #endif
  1391. #define _POSIX_PTHREAD_SEMANTICS 
  1392. #include <pthread.h>],
  1393. [pthread_attr_t thr_attr;
  1394. pthread_attr_setscope(&thr_attr,0);],
  1395. mysql_cv_pthread_attr_setscope=yes, mysql_cv_pthread_attr_setscope=no))
  1396. if test "$mysql_cv_pthread_attr_setscope" = "yes"
  1397. then
  1398.   AC_DEFINE(HAVE_PTHREAD_ATTR_SETSCOPE)
  1399. fi
  1400. # Check for bad includes
  1401. AC_MSG_CHECKING("can netinet files be included")
  1402. AC_TRY_COMPILE(
  1403. [#include <sys/types.h>
  1404. #include <sys/socket.h>
  1405. #include <netinet/in_systm.h>
  1406. #include <netinet/in.h>
  1407. #include <netinet/ip.h>
  1408. #include <netinet/tcp.h>],
  1409. [ printf("1n"); ],
  1410. netinet_inc=yes, netinet_inc=no)
  1411. if test "$netinet_inc" = "no"
  1412. then
  1413.   AC_DEFINE(HAVE_BROKEN_NETINET_INCLUDES)
  1414. fi
  1415. AC_MSG_RESULT("$netinet_inc")
  1416. # Only build client code?
  1417. AC_ARG_WITH(server,
  1418.     [  --without-server        Only build the client.],
  1419.     [with_server=$withval],
  1420.     [with_server=yes]
  1421. )
  1422. # Shall we build the docs?
  1423. AC_ARG_WITH(docs,
  1424.     [  --without-docs          Skip building of the documentation.],
  1425.     [with_docs=$withval],
  1426.     [with_docs=yes]
  1427. )
  1428. if test "$with_docs" = "yes"
  1429. then
  1430.   docs_dirs="Docs"
  1431. else
  1432.   docs_dirs=""
  1433. fi
  1434. AC_SUBST(docs_dirs)
  1435. # Shall we build the bench code?
  1436. AC_ARG_WITH(bench,
  1437.     [  --without-bench         Skip building of the benchmark suite.],
  1438.     [with_bench=$withval],
  1439.     [with_bench=yes]
  1440. )
  1441. if test "$with_bench" = "yes"
  1442. then
  1443.   bench_dirs="sql-bench mysql-test"
  1444. else
  1445.   bench_dirs=""
  1446. fi
  1447. AC_SUBST(bench_dirs)
  1448. # Don't build readline, i have it already
  1449. AC_ARG_WITH(readline,
  1450.     [  --without-readline      Use system readline instead of bundled copy.],
  1451.     [ with_readline=$withval ],
  1452.     [ with_readline=yes ]
  1453.     )
  1454. if test "$with_readline" = "yes"
  1455. then
  1456.   readline_dir="readline"
  1457.   readline_link="../readline/libreadline.a"
  1458. else
  1459.   # This requires readline to be in a standard place. Mosty for linux
  1460.   # there readline may be a shared library.
  1461.   readline_dir=""
  1462.   readline_link="-lreadline"
  1463. fi
  1464. AC_SUBST(readline_dir)
  1465. AC_SUBST(readline_link)
  1466. # Choose a character set
  1467. dnl in order to add new charset, you must add charset name to
  1468. dnl CHARSETS_AVAILABLE list and add the charset name to
  1469. dnl sql/share/charsets/Index.  If the character set uses strcoll
  1470. dnl or other special handling, you must also create
  1471. dnl strings/ctype-$charset_name.c
  1472. 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"
  1473. DEFAULT_CHARSET=latin1
  1474. dnl win1251 is deprecated - it's available, but not listed here in the help
  1475. AC_ARG_WITH(charset,
  1476.   [  --with-charset=CHARSET  Use CHARSET by default (one of: big5 cp1251 cp1257
  1477.                           croat czech danish dec8 dos estonia euc_kr gb2312 gbk
  1478.                           german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr
  1479.                           latin1 latin2 latin5 swe7 usa7 win1250 win1251ukr
  1480.                           ujis sjis tis620; Default is latin1)],
  1481.   [default_charset="$withval"],
  1482.   [default_charset="$DEFAULT_CHARSET"])
  1483. AC_ARG_WITH(extra-charsets,
  1484.   [  --with-extra-charsets=CHARSET[,CHARSET,...]
  1485.                           Use charsets in addition to default (none, complex,
  1486.                           all, or a list selected from the above sets)],
  1487.   [extra_charsets="$withval"],
  1488.   [extra_charsets="none"])
  1489. AC_MSG_CHECKING("character sets")
  1490. if test "$extra_charsets" = none; then
  1491.   CHARSETS=""
  1492. elif test "$extra_charsets" = complex; then
  1493.   CHARSETS=`/bin/ls -1 $srcdir/strings/ctype-*.c | 
  1494.                   sed -e 's;^.*/ctype-;;' -e 's;.c$;;'`
  1495.   CHARSETS=`echo $CHARSETS`     # get rid of line breaks
  1496. else
  1497.   if test "$extra_charsets" = all; then
  1498.     CHARSETS="$CHARSETS_AVAILABLE"
  1499.   else
  1500.     CHARSETS=`echo $extra_charsets | sed -e 's/,/ /g'`
  1501.   fi
  1502. fi
  1503. # Ensure that the default_charset is first in CHARSETS
  1504. TMP_CHARSETS="$default_charset "
  1505. for i in $CHARSETS
  1506. do
  1507.   if test $i != $default_charset
  1508.   then
  1509.     TMP_CHARSETS="$TMP_CHARSETS $i"
  1510.   fi
  1511. done
  1512. CHARSETS=$TMP_CHARSETS
  1513. # Check if charsets are all good
  1514. for cs in $CHARSETS
  1515. do
  1516.   charset_okay=0
  1517.   for charset in $CHARSETS_AVAILABLE
  1518.   do
  1519.     if test $cs = $charset; then charset_okay=1; fi
  1520.   done
  1521.   if test $charset_okay = 0;
  1522.   then
  1523.     AC_MSG_ERROR([Charset $cs not available. (Available $CHARSETS_AVAILABLE).
  1524.     See the Installation chapter in the Reference Manual.]);
  1525.   fi
  1526. done
  1527.   
  1528. CHARSET_SRCS=""
  1529. CHARSETS_NEED_SOURCE=""
  1530. CHARSET_DECLARATIONS=""
  1531. CHARSET_COMP_CS_INIT="CHARSET_INFO compiled_charsets[[]] = {"
  1532. want_use_strcoll=0
  1533. want_use_mb=0
  1534. index_file="$srcdir/sql/share/charsets/Index"
  1535. for c in $CHARSETS
  1536. do
  1537.   # get the charset number from $index_file
  1538. changequote(,)dnl
  1539.   subpat='^'"${c}"'[  ][  ]*([0-9][0-9]*)[^0-9]*$'
  1540.   number=`sed -e "/$subpat/!d" -e 's//1/' $index_file`
  1541. changequote([,])dnl
  1542.   # some sanity checking....
  1543.   if test X"$number" = X
  1544.   then
  1545.     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.])
  1546.   fi
  1547.   cs_file="$srcdir/strings/ctype-$c.c"
  1548.   if test -f $cs_file
  1549.   then
  1550.     CHARSET_SRCS="${CHARSET_SRCS}ctype-$c.c "
  1551.     # get the strxfrm multiplier and max mb len from files
  1552.     subpat='^.*\.configure\. strxfrm_multiply_'"${c}"'='
  1553.     strx=`$AWK 'sub("'"$subpat"'", "") { print }' $cs_file`
  1554.     subpat='^.*\.configure\. mbmaxlen_'"${c}"'='
  1555.     maxl=`$AWK 'sub("'"$subpat"'", "") { print }' $cs_file`
  1556.     CHARSET_DECLARATIONS="$CHARSET_DECLARATIONS
  1557. /* declarations for the ${c} character set, filled in by configure */
  1558. extern uchar ctype_${c}[[]], to_lower_${c}[[]], to_upper_${c}[[]], sort_order_${c}[[]];"
  1559.   else
  1560.     CHARSETS_NEED_SOURCE="$CHARSETS_NEED_SOURCE $c"
  1561.     strx=''
  1562.     maxl=''
  1563.   fi
  1564.   CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT
  1565.   /* this information is filled in by configure */
  1566.   {
  1567.     $number,    /* number */
  1568.     "$c",     /* name */
  1569.     ctype_${c},
  1570.     to_lower_${c},
  1571.     to_upper_${c},
  1572.     sort_order_${c},"
  1573.   if test -n "$strx"
  1574.   then
  1575.     want_use_strcoll=1
  1576.     CHARSET_DECLARATIONS="$CHARSET_DECLARATIONS
  1577. extern int     my_strcoll_${c}(const uchar *, const uchar *);
  1578. extern int     my_strxfrm_${c}(uchar *, const uchar *, int);
  1579. extern int     my_strnncoll_${c}(const uchar *, int, const uchar *, int);
  1580. extern int     my_strnxfrm_${c}(uchar *, const uchar *, int, int);
  1581. extern my_bool my_like_range_${c}(const char *, uint, pchar, uint,
  1582.                           char *, char *, uint *, uint *);"
  1583.     CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT
  1584.     $strx,      /* strxfrm_multiply */
  1585.     my_strcoll_${c},
  1586.     my_strxfrm_${c},
  1587.     my_strnncoll_${c},
  1588.     my_strnxfrm_${c},
  1589.     my_like_range_${c},"
  1590.   else
  1591.     CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT
  1592.     0,          /* strxfrm_multiply */
  1593.     NULL,       /* strcoll    */
  1594.     NULL,       /* strxfrm    */
  1595.     NULL,       /* strnncoll  */
  1596.     NULL,       /* strnxfrm   */
  1597.     NULL,       /* like_range */"
  1598.   fi
  1599.   if test -n "$maxl"
  1600.   then
  1601.     want_use_mb=1
  1602.     CHARSET_DECLARATIONS="$CHARSET_DECLARATIONS
  1603. extern int     ismbchar_${c}(const char *, const char *);
  1604. extern my_bool ismbhead_${c}(uint);
  1605. extern int     mbcharlen_${c}(uint);"
  1606.     CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT
  1607.     $maxl,      /* mbmaxlen */
  1608.     ismbchar_${c},
  1609.     ismbhead_${c},
  1610.     mbcharlen_${c}"
  1611.   else
  1612.     CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT
  1613.     0,          /* mbmaxlen  */
  1614.     NULL,       /* ismbchar  */
  1615.     NULL,       /* ismbhead  */
  1616.     NULL        /* mbcharlen */"
  1617.   fi
  1618.   CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT
  1619.   },"
  1620. done
  1621. CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT
  1622.   /* this information is filled in by configure */
  1623.   {
  1624.     0,          /* end-of-list marker */
  1625.     NullS,
  1626.     NULL,
  1627.     NULL,
  1628.     NULL,
  1629.     NULL,
  1630.     0,
  1631.     NULL,
  1632.     NULL,
  1633.     NULL,
  1634.     NULL,
  1635.     NULL,
  1636.     0,
  1637.     NULL,
  1638.     NULL,
  1639.     NULL
  1640.   }
  1641. };"
  1642. if test $want_use_strcoll = 1
  1643. then
  1644.   AC_DEFINE(USE_STRCOLL)
  1645. fi
  1646. if test $want_use_mb = 1
  1647. then
  1648.   AC_DEFINE(USE_MB)
  1649.   AC_DEFINE(USE_MB_IDENT)
  1650. fi
  1651. AC_SUBST(default_charset)
  1652. AC_SUBST(CHARSET_SRCS)
  1653. CHARSET_OBJS="`echo "$CHARSET_SRCS" | sed -e 's/.c /.o /g'`"
  1654. AC_SUBST(CHARSET_OBJS)
  1655. AC_SUBST(CHARSETS_NEED_SOURCE)
  1656. dnl We can't use AC_SUBST because these substitutions are too long.
  1657. dnl I don't want to use sed, either, because there's a reason why
  1658. dnl autoconf breaks up the substitution commands.  So we'll just
  1659. dnl write to a file and #include it.
  1660. dnl AC_SUBST(CHARSET_DECLARATIONS)
  1661. dnl AC_SUBST(CHARSET_COMP_CS_INIT)
  1662. dnl sed -e "s%@CHARSET_DECLARATIONS@%$CHARSET_DECLARATIONS%g" 
  1663. dnl     -e "s%@CHARSET_COMP_CS_INIT@%$CHARSET_COMP_CS_INIT%g" 
  1664. dnl     $srcdir/strings/ctype.c.in > $srcdir/strings/ctype.c
  1665. cat <<EOF > $srcdir/strings/ctype_autoconf.c
  1666. /* This file is generated automatically by configure. */$CHARSET_DECLARATIONS
  1667. $CHARSET_COMP_CS_INIT
  1668. EOF
  1669. AC_MSG_RESULT([default: $default_charset; compiled in: $CHARSETS])
  1670. MYSQL_CHECK_BDB
  1671. MYSQL_CHECK_INNOBASE
  1672. # If we have threads generate some library functions and test programs
  1673. sql_server_dirs=
  1674. server_scripts=
  1675. thread_dirs=
  1676. dnl This probably should be cleaned up more - for now the threaded
  1677. dnl client is just using plain-old libs.
  1678. sql_client_dirs="libmysql client"
  1679. linked_client_targets="linked_libmysql_sources"
  1680. CLIENT_LIBS=$NON_THREADED_CLIENT_LIBS
  1681. if test "$THREAD_SAFE_CLIENT" != "no"
  1682. then
  1683.   sql_client_dirs="libmysql_r $sql_client_dirs"
  1684.   linked_client_targets="$linked_client_targets linked_libmysql_r_sources"
  1685.   AC_DEFINE(THREAD_SAFE_CLIENT)
  1686. fi
  1687. AC_SUBST(CLIENT_LIBS)
  1688. AC_SUBST(sql_client_dirs)
  1689. AC_SUBST(linked_client_targets)
  1690. if test "$with_server" = "yes"
  1691. then
  1692.   AC_DEFINE(THREAD)
  1693.   # Avoid _PROGRAMS names
  1694.   THREAD_LPROGRAMS="test_thr_alarm test_thr_lock"
  1695.   AC_SUBST(THREAD_LPROGRAMS)
  1696.   THREAD_LOBJECTS="thr_alarm.o thr_lock.o thr_mutex.o thr_rwlock.o my_pthread.o my_thr_init.o"
  1697.   AC_SUBST(THREAD_LOBJECTS)
  1698.   sql_server_dirs="strings dbug mysys extra regex isam merge myisam myisammrg heap sql"
  1699.   server_scripts="safe_mysqld mysql_install_db"
  1700.   if test X"$have_berkeley_db" != Xno; then
  1701.     if test X"$have_berkeley_db" != Xyes; then
  1702.       # we must build berkeley db from source
  1703.       sql_server_dirs="$have_berkeley_db $sql_server_dirs"
  1704.       echo "CONFIGURING FOR BERKELEY DB" 
  1705.       bdb_conf_flags=
  1706.       if test $with_debug = "yes"
  1707.       then
  1708.         bdb_conf_flags="$bdb_conf_flags --enable-debug --enable-diagnostic"
  1709.       fi
  1710.       # NOTICE: if you're compiling BDB, it needs to be a SUBDIR
  1711.       # of $srcdir (i.e., you can 'cd $srcdir/$bdb').  It won't
  1712.       # work otherwise.
  1713.       if test -d "$bdb"; then :
  1714.       else
  1715. # This should only happen when doing a VPATH build
  1716. echo "NOTICE: I have to make the BDB directory: `pwd`:$bdb"
  1717. mkdir "$bdb" || exit 1
  1718.       fi
  1719.       if test -d "$bdb"/build_unix; then :
  1720.       else
  1721. # This should only happen when doing a VPATH build
  1722. echo "NOTICE: I have to make the build_unix directory: `pwd`:$bdb/build_unix"
  1723. mkdir "$bdb/build_unix" || exit 1
  1724.       fi
  1725.       rel_srcdir=
  1726.       case "$srcdir" in
  1727. /* ) rel_srcdir="$srcdir" ;;
  1728. * )  rel_srcdir="../../$srcdir" ;;
  1729.       esac
  1730.       (cd $bdb/build_unix && 
  1731.        sh $rel_srcdir/$bdb/dist/configure $bdb_conf_flags) || 
  1732. AC_MSG_ERROR([could not configure Berkeley DB])
  1733. dnl       echo "bdb = '$bdb'; inc = '$bdb_includes', lib = '$bdb_libs'"
  1734.       echo "END OF BERKELEY DB CONFIGURATION"
  1735.     fi
  1736.     AC_DEFINE(HAVE_BERKELEY_DB)
  1737.   else
  1738.     if test -d bdb; then :
  1739.     else
  1740.       mkdir bdb && mkdir bdb/build_unix
  1741.     fi
  1742.     if test -r bdb/build_unix/db.h; then :
  1743.     else
  1744.       cat <<EOF > bdb/build_unix/db.h
  1745. This file is a placeholder to fool make.  The way that automake
  1746. and GNU make work together causes some files to depend on this
  1747. header, even if we're not building with Berkeley DB.
  1748. Obviously, if this file *is* used, it'll break and hopefully we can find
  1749. out why this file was generated by $(top_srcdir)/configure instead of
  1750. the real db.h.
  1751. If you run into some problems because of this file, please use mysql_bug
  1752. to generate a bug report, and give the exact output of make and any
  1753. details you can think of.  Send the message to bugs@lists.mysql.com.
  1754. Thank you!
  1755. EOF
  1756.     fi
  1757.   fi
  1758.   if test X"$have_innobase_db" = Xyes
  1759.   then
  1760.     sql_server_dirs="innobase $sql_server_dirs"
  1761.     echo "CONFIGURING FOR INNOBASE DB" 
  1762.     (cd innobase && sh ./configure) 
  1763.     || AC_MSG_ERROR([could not configure Innobase DB])
  1764.     echo "END OF INNOBASE DB CONFIGURATION"
  1765.   fi
  1766.   if test "$with_posix_threads" = "no" -o "$with_mit_threads" = "yes"
  1767.   then
  1768.     # MIT user level threads
  1769.     thread_dirs="mit-pthreads"
  1770.     AC_DEFINE(HAVE_mit_thread)
  1771.     MT_INCLUDES="-I$(top_srcdir)/mit-pthreads/include"
  1772.     AC_SUBST(MT_INCLUDES)
  1773.     MT_LD_ADD="-L $(top_srcdir)/mit-pthreads/obj/ -lpthread"
  1774.     AC_SUBST(MT_LD_ADD)
  1775.     LIBS="$MT_LD_ADD $LIBS"
  1776.     echo ""
  1777.     echo "Configuring MIT Pthreads"
  1778.     # We will never install so installation paths are not needed.
  1779.     (cd mit-pthreads; sh ./configure)
  1780.     echo "End of MIT Pthreads configuration"
  1781.     echo ""
  1782.   fi
  1783. fi
  1784. AC_SUBST(sql_server_dirs)
  1785. AC_SUBST(thread_dirs)
  1786. AC_SUBST(server_scripts)
  1787. #if test "$with_posix_threads" = "no" -o "$with_mit_threads" = "yes"
  1788. #then
  1789.   # MIT pthreads does now support connecting with unix sockets
  1790.   # AC_DEFINE(HAVE_THREADS_WITHOUT_SOCKETS)
  1791. #fi
  1792. # Some usefull subst
  1793. AC_SUBST(CC)
  1794. AC_SUBST(GXX)
  1795. # Output results
  1796. AC_OUTPUT(Makefile extra/Makefile mysys/Makefile isam/Makefile 
  1797.  strings/Makefile regex/Makefile heap/Makefile 
  1798.  bdb/Makefile 
  1799.  myisam/Makefile myisammrg/Makefile 
  1800.  man/Makefile 
  1801.  readline/Makefile libmysql_r/Makefile libmysql/Makefile client/Makefile 
  1802.  sql/Makefile sql/share/Makefile 
  1803.  merge/Makefile dbug/Makefile scripts/Makefile 
  1804.  include/Makefile sql-bench/Makefile 
  1805.  tests/Makefile Docs/Makefile support-files/Makefile 
  1806.  mysql-test/Makefile 
  1807.  include/mysql_version.h
  1808.  , , [
  1809.   test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
  1810.   rm -f $AVAILABLE_LANGUAGES_ERRORS_RULES
  1811.  ])
  1812. echo
  1813. echo "MySQL has a Web site at http://www.mysql.com/ which carries details on the"
  1814. echo "latest release, upcoming features, and other information to make your"
  1815. echo "work or play with MySQL more productive. There you can also find"
  1816. echo "information about mailing lists for MySQL discussion."
  1817. echo
  1818. echo "Remember to check the platform specific part in the reference manual for"
  1819. echo "hints about installing on your platfrom. See the Docs directory."
  1820. echo
  1821. # This text is checked in ./Do-compile to se that the configure finished.
  1822. echo "Thank you for choosing MySQL!"
  1823. echo