]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/autoconf/bacula-macros/db.m4
Fix bug where MySQL 5.7 is improperly linked on Ubuntu 16.04
[bacula/bacula] / bacula / autoconf / bacula-macros / db.m4
index debb3c86855cd3165870424b33c0456f9df43211..6ca82a0c4a1348dc55cd7c45f9f68ca4b4cafad4 100644 (file)
@@ -1,3 +1,7 @@
+#
+# Copyright (C) 2000-2016 Kern Sibbald
+# License: BSD 2-Clause; see file LICENSE-FOSS
+#
 AC_DEFUN([BA_CHECK_DBI_DB],
 [
 AC_MSG_CHECKING(for DBI support)
@@ -21,7 +25,7 @@ AC_HELP_STRING([--with-dbi@<:@=DIR@:>@], [Include DBI support. DIR is the DBD ba
            else
               DBI_LIBDIR=/usr/lib
            fi
-           DBI_BINDIR=/usr/bin      
+           DBI_BINDIR=/usr/bin
         elif test -f $prefix/include/dbi/dbi.h; then
            DBI_INCDIR=$prefix/include
            if test -d $prefix/lib64; then
@@ -29,7 +33,7 @@ AC_HELP_STRING([--with-dbi@<:@=DIR@:>@], [Include DBI support. DIR is the DBD ba
            else
               DBI_LIBDIR=$prefix/lib
            fi
-           DBI_BINDIR=$prefix/bin      
+           DBI_BINDIR=$prefix/bin
         else
            AC_MSG_RESULT(no)
            AC_MSG_ERROR(Unable to find dbi.h in standard locations)
@@ -97,7 +101,11 @@ AC_HELP_STRING([--with-dbi@<:@=DIR@:>@], [Include DBI support. DIR is the DBD ba
         fi
      fi
      DBI_INCLUDE=-I$DBI_INCDIR
-     DBI_LIBS="-R $DBI_LIBDIR -L$DBI_LIBDIR -ldbi"
+     if test x$use_libtool != xno; then
+        DBI_LIBS="-R $DBI_LIBDIR -L$DBI_LIBDIR -ldbi"
+     else
+        DBI_LIBS="-L$DBI_LIBDIR -ldbi"
+     fi
      DBI_LIB=$DBI_LIBDIR/libdbi.a
      DBI_DBD_DRIVERDIR="-D DBI_DRIVER_DIR=\\\"$DRIVERDIR\\\""
      DB_LIBS="${DB_LIBS} ${DBI_LIBS}"
@@ -117,6 +125,25 @@ AC_HELP_STRING([--with-dbi@<:@=DIR@:>@], [Include DBI support. DIR is the DBD ba
      fi
      uncomment_dbi=" "
 
+     dnl -------------------------------------------
+     dnl Push the DB_PROG onto the stack of supported database backends for DBI
+     dnl -------------------------------------------
+     DB_BACKENDS="${DB_BACKENDS} ${DB_PROG}"
+
+     dnl -------------------------------------------
+     dnl Check if dbi supports batch mode
+     dnl -------------------------------------------
+     if test "x$support_batch_insert" = "xyes"; then
+         if test $DB_PROG = postgresql; then
+             AC_CHECK_LIB(pq, PQisthreadsafe, AC_DEFINE(HAVE_PQISTHREADSAFE))
+             AC_CHECK_LIB(pq, PQputCopyData, AC_DEFINE(HAVE_PQ_COPY))
+             test "x$ac_cv_lib_pq_PQputCopyData" = "xyes"
+             pkg=$?
+             if test $pkg = 0; then
+                 AC_DEFINE(HAVE_DBI_BATCH_FILE_INSERT, 1, [Set if DBI DB batch insert code enabled])
+             fi
+         fi
+     fi
   else
      AC_MSG_RESULT(no)
   fi
@@ -127,8 +154,7 @@ AC_HELP_STRING([--with-dbi@<:@=DIR@:>@], [Include DBI support. DIR is the DBD ba
 AC_SUBST(DBI_LIBS)
 AC_SUBST(DBI_INCLUDE)
 AC_SUBST(DBI_BINDIR)
-AC_SUBST(DBI_DBD_DRIVERDIR)  
-AC_SUBST(uncomment_dbi)
+AC_SUBST(DBI_DBD_DRIVERDIR)
 
 ])
 
@@ -144,7 +170,7 @@ AC_HELP_STRING([--with-dbi-driver@<:@=DRIVER@:>@], [Suport for DBI driver. DRIVE
         "mysql")
            db_prog="mysql"
            if test -f /usr/local/mysql/bin/mysql; then
-              SQL_BINDIR=/usr/local/mysql/bin
+              MYSQL_BINDIR=/usr/local/mysql/bin
               if test -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.a \
                  -o -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.so; then
                  MYSQL_LIBDIR=/usr/local/mysql/lib64/mysql
@@ -152,9 +178,9 @@ AC_HELP_STRING([--with-dbi-driver@<:@=DRIVER@:>@], [Suport for DBI driver. DRIVE
                  MYSQL_LIBDIR=/usr/local/mysql/lib/mysql
               fi
            elif test -f /usr/bin/mysql; then
-              SQL_BINDIR=/usr/bin
+              MYSQL_BINDIR=/usr/bin
               if test -f /usr/lib64/mysql/libmysqlclient_r.a \
-                  -o -f /usr/lib64/mysql/libmysqlclient_r.so; then  
+                  -o -f /usr/lib64/mysql/libmysqlclient_r.so; then
                   MYSQL_LIBDIR=/usr/lib64/mysql
               elif test -f /usr/lib/mysql/libmysqlclient_r.a \
                   -o -f /usr/lib/mysql/libmysqlclient_r.so; then
@@ -163,9 +189,9 @@ AC_HELP_STRING([--with-dbi-driver@<:@=DRIVER@:>@], [Suport for DBI driver. DRIVE
                   MYSQL_LIBDIR=/usr/lib
               fi
            elif test -f /usr/local/bin/mysql; then
-              SQL_BINDIR=/usr/local/bin
+              MYSQL_BINDIR=/usr/local/bin
               if test -f /usr/local/lib64/mysql/libmysqlclient_r.a \
-                  -o -f /usr/local/lib64/mysql/libmysqlclient_r.so; then  
+                  -o -f /usr/local/lib64/mysql/libmysqlclient_r.so; then
                   MYSQL_LIBDIR=/usr/local/lib64/mysql
               elif test -f /usr/local/lib/mysql/libmysqlclient_r.a \
                   -o -f /usr/local/lib/mysql/libmysqlclient_r.so; then
@@ -174,7 +200,7 @@ AC_HELP_STRING([--with-dbi-driver@<:@=DRIVER@:>@], [Suport for DBI driver. DRIVE
                   MYSQL_LIBDIR=/usr/local/lib
               fi
            elif test -f $withval/bin/mysql; then
-              SQL_BINDIR=$withval/bin
+              MYSQL_BINDIR=$withval/bin
               if test -f $withval/lib64/mysql/libmysqlclient_r.a \
                   -o -f $withval/lib64/mysql/libmysqlclient_r.so; then
                   MYSQL_LIBDIR=$withval/lib64/mysql
@@ -187,6 +213,18 @@ AC_HELP_STRING([--with-dbi-driver@<:@=DRIVER@:>@], [Suport for DBI driver. DRIVE
               else
                   MYSQL_LIBDIR=$withval/lib/mysql
               fi
+           elif test -f $prefix/lib/mysql55/bin/mysql; then
+              MYSQL_BINDIR=$prefix/lib/mysql55/bin
+              if test -f $prefix/lib/mysql55/mysql/libmysqlclient_r.a \
+                  -o -f $prefix/lib/mysql55/mysql/libmysqlclient_r.so; then
+                  MYSQL_LIBDIR=$prefix/lib/mysql55/mysql
+              fi
+           elif test -f $prefix/lib/mysql51/bin/mysql; then
+              MYSQL_BINDIR=$prefix/lib/mysql51/bin
+              if test -f $prefix/lib/mysql51/mysql/libmysqlclient_r.a \
+                  -o -f $prefix/lib/mysql51/mysql/libmysqlclient_r.so; then
+                  MYSQL_LIBDIR=$prefix/lib/mysql51/mysql
+              fi
            else
               AC_MSG_RESULT(no)
               AC_MSG_ERROR(Unable to find mysql in standard locations)
@@ -199,7 +237,7 @@ AC_HELP_STRING([--with-dbi-driver@<:@=DRIVER@:>@], [Suport for DBI driver. DRIVE
         ;;
         "postgresql")
            db_prog="postgresql"
-           PG_CONFIG=`which pg_config`
+           PG_CONFIG=`which pg_config 2>/dev/null`
            if test -n "$PG_CONFIG"; then
               POSTGRESQL_BINDIR=`"$PG_CONFIG" --bindir`
               POSTGRESQL_LIBDIR=`"$PG_CONFIG" --libdir`
@@ -253,14 +291,14 @@ AC_HELP_STRING([--with-dbi-driver@<:@=DRIVER@:>@], [Suport for DBI driver. DRIVE
                  SQLITE_LIBDIR=/usr/lib64
               else
                  SQLITE_LIBDIR=/usr/lib
-              fi                 
+              fi
            elif test -f $withval/bin/sqlite3; then
               SQLITE_BINDIR=$withval/bin
               if test -d $withval/lib64; then
                  SQLITE_LIBDIR=$withval/lib64
               else
                  SQLITE_LIBDIR=$withval/lib
-              fi                 
+              fi
            else
               AC_MSG_RESULT(no)
               AC_MSG_ERROR(Unable to find sqlite in standard locations)
@@ -270,7 +308,7 @@ AC_HELP_STRING([--with-dbi-driver@<:@=DRIVER@:>@], [Suport for DBI driver. DRIVE
            else
               DB_PROG_LIB=$SQLITE_LIBDIR/libsqlite3.a
            fi
-        ;;                
+        ;;
         *)
            AC_MSG_RESULT(no)
            AC_MSG_ERROR(Unable to set DBI driver. $withval is not supported)
@@ -301,121 +339,218 @@ AC_MSG_CHECKING(for MySQL support)
 AC_ARG_WITH(mysql,
 AC_HELP_STRING([--with-mysql@<:@=DIR@:>@], [Include MySQL support. DIR is the MySQL base install directory, default is to search through a number of common places for the MySQL files.]),
 [
+  HAVE_LIBSR="no"
   if test "$withval" != "no"; then
-        if test "$withval" = "yes"; then
+     if test "$withval" = "yes"; then
+        MYSQL_CONFIG=`which mysql_config 2>/dev/null`
+        if test "x${MYSQL_CONFIG}" != x; then
+           MYSQL_BINDIR="${MYSQL_CONFIG%/*}"
+           ${MYSQL_CONFIG} --libs_r >/dev/null 2>&1
+           if test $? = 0; then
+              MYSQL_LIBDIR=`${MYSQL_CONFIG} --libs_r`
+              MYSQL_INCDIR=`${MYSQL_CONFIG} --include`
+              HAVE_LIBSR="yes"
+           else
+              ${MYSQL_CONFIG} --variable=pkglibdir > /dev/null 2>&1
+              if test $? = 0 ; then
+                 MYSQL_LIBDIR=`${MYSQL_CONFIG} --variable=pkglibdir`
+                 MYSQL_INCDIR=`${MYSQL_CONFIG} --variable=pkgincludedir`
+              fi
+           fi
+        fi
+        # if something wrong fall back to old method
+        if test "x${MYSQL_LIBDIR}" = x -o "x${MYSQL_INCDIR}" = x ; then
            if test -f /usr/local/mysql/include/mysql/mysql.h; then
-                   MYSQL_INCDIR=/usr/local/mysql/include/mysql
-                   if test -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.a \
-                        -o -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/local/mysql/lib64/mysql
-                   else
-                           MYSQL_LIBDIR=/usr/local/mysql/lib/mysql
-                   fi
-                   MYSQL_BINDIR=/usr/local/mysql/bin
+              MYSQL_INCDIR=/usr/local/mysql/include/mysql
+              if test -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.a \
+                      -o -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/local/mysql/lib64/mysql
+              else
+                 MYSQL_LIBDIR=/usr/local/mysql/lib/mysql
+              fi
+              MYSQL_BINDIR=/usr/local/mysql/bin
            elif test -f /usr/include/mysql/mysql.h; then
-                   MYSQL_INCDIR=/usr/include/mysql
-                   if test -f /usr/lib64/mysql/libmysqlclient_r.a \
-                        -o -f /usr/lib64/mysql/libmysqlclient_r.so; then  
-                           MYSQL_LIBDIR=/usr/lib64/mysql
-                   elif test -f /usr/lib64/libmysqlclient_r.a \
+              MYSQL_INCDIR=/usr/include/mysql
+              if test -f /usr/lib64/mysql/libmysqlclient_r.a \
+                      -o -f /usr/lib64/mysql/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/lib64/mysql
+              elif test -f /usr/lib64/libmysqlclient_r.a \
                         -o -f /usr/lib64/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/lib64
-                   elif test -f /usr/lib/mysql/libmysqlclient_r.a \
-                          -o -f /usr/lib/mysql/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/lib/mysql
-                   else
-                           MYSQL_LIBDIR=/usr/lib
-                   fi
-                   MYSQL_BINDIR=/usr/bin
+                 MYSQL_LIBDIR=/usr/lib64
+              elif test -f /usr/lib/x86_64-linux-gnu/libmysqlclient_r.a \
+                        -o -f /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/lib/x86_64-linux-gnu
+              elif test -f /usr/lib/mysql/libmysqlclient_r.a \
+                        -o -f /usr/lib/mysql/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/lib/mysql
+              else
+                 MYSQL_LIBDIR=/usr/lib
+              fi
+              MYSQL_BINDIR=/usr/bin
            elif test -f /usr/include/mysql.h; then
-                   MYSQL_INCDIR=/usr/include
-                   if test -f /usr/lib64/libmysqlclient_r.a \
-                        -o -f /usr/lib64/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/lib64
-                   else
-                           MYSQL_LIBDIR=/usr/lib
-                   fi
-                   MYSQL_BINDIR=/usr/bin
+              MYSQL_INCDIR=/usr/include
+              if test -f /usr/lib64/libmysqlclient_r.a \
+                      -o -f /usr/lib64/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/lib64
+              else
+                 MYSQL_LIBDIR=/usr/lib
+              fi
+              MYSQL_BINDIR=/usr/bin
            elif test -f /usr/local/include/mysql/mysql.h; then
-                   MYSQL_INCDIR=/usr/local/include/mysql
-                   if test -f /usr/local/lib64/mysql/libmysqlclient_r.a \
-                        -o -f /usr/local/lib64/mysql/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/local/lib64/mysql
-                   else
-                           MYSQL_LIBDIR=/usr/local/lib/mysql
-                   fi
-                   MYSQL_BINDIR=/usr/local/bin
+              MYSQL_INCDIR=/usr/local/include/mysql
+              if test -f /usr/local/lib64/mysql/libmysqlclient_r.a \
+                      -o -f /usr/local/lib64/mysql/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/local/lib64/mysql
+              else
+                 MYSQL_LIBDIR=/usr/local/lib/mysql
+              fi
+              MYSQL_BINDIR=/usr/local/bin
            elif test -f /usr/local/include/mysql.h; then
-                   MYSQL_INCDIR=/usr/local/include
-                   if test -f /usr/local/lib64/libmysqlclient_r.a \
-                        -o -f /usr/local/lib64/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/local/lib64
-                   else
-                           MYSQL_LIBDIR=/usr/local/lib
-                   fi
-                   MYSQL_BINDIR=/usr/local/bin
+              MYSQL_INCDIR=/usr/local/include
+              if test -f /usr/local/lib64/libmysqlclient_r.a \
+                      -o -f /usr/local/lib64/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/local/lib64
+              else
+                 MYSQL_LIBDIR=/usr/local/lib
+              fi
+              MYSQL_BINDIR=/usr/local/bin
            else
               AC_MSG_RESULT(no)
               AC_MSG_ERROR(Unable to find mysql.h in standard locations)
            fi
-        else
-           if test -f $withval/include/mysql/mysql.h; then
-              MYSQL_INCDIR=$withval/include/mysql
-              if test -f $withval/lib64/mysql/libmysqlclient_r.a \
-                   -o -f $withval/lib64/mysql/libmysqlclient_r.so; then
-                 MYSQL_LIBDIR=$withval/lib64/mysql
-              elif test -f $withval/lib64/libmysqlclient_r.a \
-                   -o -f $withval/lib64/libmysqlclient_r.so; then
-                 MYSQL_LIBDIR=$withval/lib64
-              elif test -f $withval/lib/libmysqlclient_r.a \
-                   -o -f $withval/lib/libmysqlclient_r.so; then
-                 MYSQL_LIBDIR=$withval/lib
-              else
-                 MYSQL_LIBDIR=$withval/lib/mysql
-              fi
-              MYSQL_BINDIR=$withval/bin
-           elif test -f $withval/include/mysql.h; then
-              MYSQL_INCDIR=$withval/include
-              if test -f $withval/lib64/libmysqlclient_r.a \
-                   -o -f $withval/lib64/libmysqlclient_r.so; then
-                 MYSQL_LIBDIR=$withval/lib64
-              else
-                 MYSQL_LIBDIR=$withval/lib
-              fi
-              MYSQL_BINDIR=$withval/bin
+        fi
+     else
+        if test -f $withval/include/mysql/mysql.h; then
+           MYSQL_INCDIR=$withval/include/mysql
+           if test -f $withval/lib64/mysql/libmysqlclient_r.a \
+                -o -f $withval/lib64/mysql/libmysqlclient_r.so; then
+              MYSQL_LIBDIR=$withval/lib64/mysql
+           elif test -f $withval/lib64/libmysqlclient_r.a \
+                -o -f $withval/lib64/libmysqlclient_r.so; then
+              MYSQL_LIBDIR=$withval/lib64
+           elif test -f $withval/lib/libmysqlclient_r.a \
+                -o -f $withval/lib/libmysqlclient_r.so; then
+              MYSQL_LIBDIR=$withval/lib
            else
+              MYSQL_LIBDIR=$withval/lib/mysql
+           fi
+           MYSQL_BINDIR=$withval/bin
+        elif test -f $withval/include/mysql.h; then
+           MYSQL_INCDIR=$withval/include
+           if test -f $withval/lib64/libmysqlclient_r.a \
+                -o -f $withval/lib64/libmysqlclient_r.so; then
+              MYSQL_LIBDIR=$withval/lib64
+           else
+              MYSQL_LIBDIR=$withval/lib
+           fi
+           MYSQL_BINDIR=$withval/bin
+        elif test -f $withval/mysql.h; then
+           dnl MacPorts on OSX has a special MySQL Layout. See #2079
+           MYSQL_INCDIR=$withval
+           AC_MSG_NOTICE(Got with-mysql variable $MYSQL_INCDIR checking MySQL version)
+           case $MYSQL_INCDIR in
+              *mysql55*)
+                  AC_MSG_NOTICE(Assuming MacPorts MySQL 5.5 variant installed)
+                  dnl with-mysql given contains mysql55 - assuming OSX MacPorts MySQL55 variant
+                  if test -f $prefix/lib/mysql55/mysql/libmysqlclient_r.a \
+                       -o -f $prefix/lib/mysql55/mysql/libmysqlclient_r.so; then
+                     AC_MSG_NOTICE(Found MySQL 5.5 library in $prefix/lib/mysql55/mysql)
+                     MYSQL_LIBDIR=$prefix/lib/mysql55/mysql
+                  fi
+                  MYSQL_BINDIR=$prefix/lib/mysql55/bin
+              ;;
+              *mysql51*)
+                  AC_MSG_NOTICE(Assuming MacPorts MySQL 5.1 variant installed)
+                  dnl with-mysql contains mysql51 - assuming OSX MacPorts MySQL51 variant
+                  if test -f $prefix/lib/mysql51/mysql/libmysqlclient_r.a \
+                       -o -f $prefix/lib/mysql51/mysql/libmysqlclient_r.so; then
+                     AC_MSG_NOTICE(Found MySQL 5.1 library in $prefix/lib/mysql55/mysql)
+                     MYSQL_LIBDIR=$prefix/lib/mysql51/mysql
+                  fi
+                  MYSQL_BINDIR=$prefix/lib/mysql51/bin
+              ;;
+           esac
+           if test -z "${MYSQL_LIBDIR}" ; then
               AC_MSG_RESULT(no)
-              AC_MSG_ERROR(Invalid MySQL directory $withval - unable to find mysql.h under $withval)
+              AC_MSG_ERROR(MySQL $withval - unable to find MySQL libraries)
            fi
+        else
+           AC_MSG_RESULT(no)
+           AC_MSG_ERROR(Invalid MySQL directory $withval - unable to find mysql.h under $withval)
         fi
-     MYSQL_INCLUDE=-I$MYSQL_INCDIR
-     if test -f $MYSQL_LIBDIR/libmysqlclient_r.a \
-          -o -f $MYSQL_LIBDIR/libmysqlclient_r.so; then
-        MYSQL_LIBS="-R $MYSQL_LIBDIR -L$MYSQL_LIBDIR -lmysqlclient_r -lz"
-        AC_DEFINE(HAVE_THREAD_SAFE_MYSQL, 1, [Set if Thread Safe MySQL can be checked using mysql_thread_safe])
-        DB_LIBS="${DB_LIBS} ${MYSQL_LIBS}"
      fi
-     MYSQL_LIB=$MYSQL_LIBDIR/libmysqlclient_r.a
+     if test "x${MYSQL_LIBDIR}" != x; then
+        MYSQL_INCLUDE=-I$MYSQL_INCDIR
+        if test "x$HAVE_LIBSR" = "xyes"; then
+           DB_LIBS="${DB_LIBS} ${MYSQL_LIBS}"
+           MYSQL_LIBS="$MYSQL_LIBDIR"
+           MYSQL_INCLUDE="$MYSQL_INCDIR"
+           if test -z "${batch_insert_db_backends}"; then
+              batch_insert_db_backends="MySQL"
+           else
+              batch_insert_db_backends="${batch_insert_db_backends} MySQL"
+           fi
+        elif test -f $MYSQL_LIBDIR/libmysqlclient_r.a \
+               -o -f $MYSQL_LIBDIR/libmysqlclient_r.so; then
+           if test x$use_libtool != xno; then
+              MYSQL_LIBS="-R $MYSQL_LIBDIR -L$MYSQL_LIBDIR -lmysqlclient_r -lz"
+           else
+              MYSQL_LIBS="-L$MYSQL_LIBDIR -lmysqlclient_r -lz"
+           fi
+           DB_LIBS="${DB_LIBS} ${MYSQL_LIBS}"
+        fi
+        if test "x${MYSQL_LIBS}" = x; then
+           MYSQL_LIBS=$MYSQL_LIBDIR/libmysqlclient_r.a
+        fi
 
-     AC_DEFINE(HAVE_MYSQL, 1, [Set if you have an MySQL Database])
-     AC_MSG_RESULT(yes)
+        AC_DEFINE(HAVE_MYSQL, 1, [Set if you have an MySQL Database])
+        AC_MSG_RESULT(yes)
 
-     if test -z "${db_backends}" ; then
-         db_backends="MySQL"
-     else
-         db_backends="${db_backends} MySQL"
-     fi
-     if test -z "${DB_BACKENDS}" ; then
-         DB_BACKENDS="mysql"
+        if test -z "${db_backends}" ; then
+            db_backends="MySQL"
+        else
+            db_backends="${db_backends} MySQL"
+        fi
+        if test -z "${DB_BACKENDS}" ; then
+            DB_BACKENDS="mysql"
+        else
+            DB_BACKENDS="${DB_BACKENDS} mysql"
+        fi
+
+        dnl -------------------------------------------
+        dnl Check if mysql supports batch mode
+        dnl -------------------------------------------
+        if test "x$HAVE_LIBSR" = "xno"; then
+          if test "x$support_batch_insert" = "xyes"; then
+            dnl For mysql checking
+            saved_LDFLAGS="${LDFLAGS}"
+            LDFLAGS="${saved_LDFLAGS} -L$MYSQL_LIBDIR"
+            saved_LIBS="${LIBS}"
+            LIBS="${saved_LIBS} -lz"
+
+            AC_CHECK_LIB(mysqlclient_r, mysql_thread_safe, AC_DEFINE(HAVE_MYSQL_THREAD_SAFE, 1, [Set if have mysql_thread_safe]))
+            if test "x$ac_cv_lib_mysqlclient_r_mysql_thread_safe" = "xyes"; then
+                if test -z "${batch_insert_db_backends}"; then
+                    batch_insert_db_backends="MySQL"
+                else
+                    batch_insert_db_backends="${batch_insert_db_backends} MySQL"
+                fi
+            fi
+
+            dnl Revert after mysql checks
+            LDFLAGS="${saved_LDFLAGS}"
+            LIBS="${saved_LIBS}"
+          fi
+        fi
      else
-         DB_BACKENDS="${DB_BACKENDS} mysql"
+        AC_MSG_RESULT(no)
      fi
-  else
-     AC_MSG_RESULT(no)
   fi
-]
-)
+],[
+  AC_MSG_RESULT(no)
+])
 
+AC_MSG_CHECKING(for MySQL embedded support)
 AC_ARG_WITH(embedded-mysql,
 AC_HELP_STRING([--with-embedded-mysql@<:@=DIR@:>@], [Include MySQL support. DIR is the MySQL base install directory, default is to search through a number of common places for the MySQL files.]),
 [
@@ -488,7 +623,11 @@ AC_HELP_STRING([--with-embedded-mysql@<:@=DIR@:>@], [Include MySQL support. DIR
                 fi
         fi
      MYSQL_INCLUDE=-I$MYSQL_INCDIR
-     MYSQL_LIBS="-R $MYSQL_LIBDIR -L$MYSQL_LIBDIR -lmysqld -lz -lm -lcrypt"
+     if test x$use_libtool != xno; then
+        MYSQL_LIBS="-R $MYSQL_LIBDIR -L$MYSQL_LIBDIR -lmysqld -lz -lm -lcrypt"
+     else
+        MYSQL_LIBS="-L$MYSQL_LIBDIR -lmysqld -lz -lm -lcrypt"
+     fi
      MYSQL_LIB=$MYSQL_LIBDIR/libmysqld.a
      DB_LIBS="${DB_LIBS} ${MYSQL_LIBS}"
 
@@ -506,16 +645,41 @@ AC_HELP_STRING([--with-embedded-mysql@<:@=DIR@:>@], [Include MySQL support. DIR
      else
          DB_BACKENDS="${DB_BACKENDS} mysql"
      fi
+
+     dnl -------------------------------------------
+     dnl Check if mysql supports batch mode
+     dnl -------------------------------------------
+     if test "x$support_batch_insert" = "xyes"; then
+         dnl For mysql checking
+         saved_LDFLAGS="${LDFLAGS}"
+         LDFLAGS="${saved_LDFLAGS} -L$MYSQL_LIBDIR"
+         saved_LIBS="${LIBS}"
+         LIBS="${saved_LIBS} -lz -lm -lcrypt"
+
+         AC_CHECK_LIB(mysqlclient_r, mysql_thread_safe, AC_DEFINE(HAVE_MYSQL_THREAD_SAFE, 1, [Set if have mysql_thread_safe]))
+         if test "x$ac_cv_lib_mysqlclient_r_mysql_thread_safe" = "xyes"; then
+             if test -z "${batch_insert_db_backends}"; then
+                 batch_insert_db_backends="MySQL"
+             else
+                 batch_insert_db_backends="${batch_insert_db_backends} MySQL"
+             fi
+         fi
+
+         dnl Revert after mysql checks
+         LDFLAGS="${saved_LDFLAGS}"
+         LIBS="${saved_LIBS}"
+     fi
   else
      AC_MSG_RESULT(no)
   fi
-]
-)
+],[
+  AC_MSG_RESULT(no)
+])
 
 AC_SUBST(MYSQL_LIBS)
 AC_SUBST(MYSQL_INCLUDE)
 AC_SUBST(MYSQL_BINDIR)
-  
+
 ])
 
 AC_DEFUN([BA_CHECK_INGRES_DB],
@@ -533,7 +697,7 @@ AC_HELP_STRING([--with-ingres@<:@=DIR@:>@], [Include Ingres support. DIR is the
         elif test -f ${II_SYSTEM}/ingres/files/eqdefc.h; then
            INGRES_INCDIR=${II_SYSTEM}/ingres/files
            INGRES_LIBDIR=${II_SYSTEM}/ingres/lib
-           INGRES_BINDIR=${II_SYSTEM}/ingres/bin      
+           INGRES_BINDIR=${II_SYSTEM}/ingres/bin
         else
            AC_MSG_RESULT(no)
            AC_MSG_ERROR(Unable to find eqdefc.h in standard locations)
@@ -549,7 +713,11 @@ AC_HELP_STRING([--with-ingres@<:@=DIR@:>@], [Include Ingres support. DIR is the
         fi
      fi
      INGRES_INCLUDE=-I$INGRES_INCDIR
-     INGRES_LIBS="-R $INGRES_LIBDIR -L$INGRES_LIBDIR -lq.1 -lcompat.1 -lframe.1"
+     if test x$use_libtool != xno; then
+        INGRES_LIBS="-R $INGRES_LIBDIR -L$INGRES_LIBDIR -lq.1 -lcompat.1 -lframe.1"
+     else
+        INGRES_LIBS="-L$INGRES_LIBDIR -lq.1 -lcompat.1 -lframe.1"
+     fi
      DB_LIBS="${DB_LIBS} ${INGRES_LIBS}"
      AC_DEFINE(HAVE_INGRES, 1, [Set if have Ingres Database])
      AC_MSG_RESULT(yes)
@@ -599,7 +767,7 @@ AC_HELP_STRING([--with-sqlite3@<:@=DIR@:>@], [Include SQLite3 support. DIR is th
            else
               SQLITE_LIBDIR=/usr/lib
            fi
-           SQLITE_BINDIR=/usr/bin      
+           SQLITE_BINDIR=/usr/bin
         elif test -f $prefix/include/sqlite3.h; then
            SQLITE_INCDIR=$prefix/include
            if test -d $prefix/lib64; then
@@ -607,7 +775,7 @@ AC_HELP_STRING([--with-sqlite3@<:@=DIR@:>@], [Include SQLite3 support. DIR is th
            else
               SQLITE_LIBDIR=$prefix/lib
            fi
-           SQLITE_BINDIR=$prefix/bin      
+           SQLITE_BINDIR=$prefix/bin
         else
            AC_MSG_RESULT(no)
            AC_MSG_ERROR(Unable to find sqlite3.h in standard locations)
@@ -631,7 +799,11 @@ AC_HELP_STRING([--with-sqlite3@<:@=DIR@:>@], [Include SQLite3 support. DIR is th
         fi
      fi
      SQLITE_INCLUDE=-I$SQLITE_INCDIR
-     SQLITE_LIBS="-R $SQLITE_LIBDIR -L$SQLITE_LIBDIR -lsqlite3"
+     if test x$use_libtool != xno; then
+        SQLITE_LIBS="-R $SQLITE_LIBDIR -L$SQLITE_LIBDIR -lsqlite3"
+     else
+        SQLITE_LIBS="-L$SQLITE_LIBDIR -lsqlite3"
+     fi
      SQLITE_LIB=$SQLITE_LIBDIR/libsqlite3.a
      DB_LIBS="${DB_LIBS} ${SQLITE_LIBS}"
 
@@ -648,6 +820,27 @@ AC_HELP_STRING([--with-sqlite3@<:@=DIR@:>@], [Include SQLite3 support. DIR is th
      else
          DB_BACKENDS="${DB_BACKENDS} sqlite3"
      fi
+
+     dnl -------------------------------------------
+     dnl Check if sqlite supports batch mode
+     dnl -------------------------------------------
+     if test "x$support_batch_insert" = "xyes"; then
+         dnl For sqlite checking
+         saved_LDFLAGS="${LDFLAGS}"
+         LDFLAGS="${saved_LDFLAGS} -lpthread -L$SQLITE_LIBDIR"
+
+         AC_CHECK_LIB(sqlite3, sqlite3_threadsafe, AC_DEFINE(HAVE_SQLITE3_THREADSAFE, 1, [Set if have sqlite3_threadsafe]))
+         if test "x$ac_cv_lib_sqlite3_sqlite3_threadsafe" = "xyes"; then
+             if test -z "${batch_insert_db_backends}"; then
+                 batch_insert_db_backends="SQLite3"
+             else
+                 batch_insert_db_backends="${batch_insert_db_backends} SQLite3"
+             fi
+         fi
+
+         dnl Revert after sqlite checks
+         LDFLAGS="${saved_LDFLAGS}"
+     fi
   else
      AC_MSG_RESULT(no)
   fi
@@ -657,7 +850,7 @@ AC_HELP_STRING([--with-sqlite3@<:@=DIR@:>@], [Include SQLite3 support. DIR is th
 AC_SUBST(SQLITE_LIBS)
 AC_SUBST(SQLITE_INCLUDE)
 AC_SUBST(SQLITE_BINDIR)
-  
+
 ])
 
 
@@ -669,7 +862,7 @@ AC_HELP_STRING([--with-postgresql@<:@=DIR@:>@], [Include PostgreSQL support. DIR
 [
   if test "$withval" != "no"; then
       if test "$withval" = "yes"; then
-          PG_CONFIG=`which pg_config`
+          PG_CONFIG=`which pg_config 2>/dev/null`
           if test -n "$PG_CONFIG"; then
               POSTGRESQL_INCDIR=`"$PG_CONFIG" --includedir`
               POSTGRESQL_LIBDIR=`"$PG_CONFIG" --libdir`
@@ -730,7 +923,11 @@ AC_HELP_STRING([--with-postgresql@<:@=DIR@:>@], [Include PostgreSQL support. DIR
      AC_MSG_RESULT(yes)
 
      POSTGRESQL_INCLUDE=-I$POSTGRESQL_INCDIR
-     POSTGRESQL_LIBS="-R $POSTGRESQL_LIBDIR -L$POSTGRESQL_LIBDIR -lpq"
+     if test x$use_libtool != xno; then
+        POSTGRESQL_LIBS="-R $POSTGRESQL_LIBDIR -L$POSTGRESQL_LIBDIR -lpq"
+     else
+        POSTGRESQL_LIBS="-L$POSTGRESQL_LIBDIR -lpq"
+     fi
      AC_CHECK_FUNC(crypt, , AC_CHECK_LIB(crypt, crypt, [POSTGRESQL_LIBS="$POSTGRESQL_LIBS -lcrypt"]))
      POSTGRESQL_LIB=$POSTGRESQL_LIBDIR/libpq.a
      DB_LIBS="${DB_LIBS} ${POSTGRESQL_LIBS}"
@@ -745,6 +942,43 @@ AC_HELP_STRING([--with-postgresql@<:@=DIR@:>@], [Include PostgreSQL support. DIR
      else
          DB_BACKENDS="${DB_BACKENDS} postgresql"
      fi
+
+     dnl -------------------------------------------
+     dnl Check if postgresql supports batch mode
+     dnl -------------------------------------------
+     if test "x$support_batch_insert" = "xyes"; then
+         dnl For postgresql checking
+         saved_LDFLAGS="${LDFLAGS}"
+         LDFLAGS="${saved_LDFLAGS} -L$POSTGRESQL_LIBDIR"
+         saved_LIBS="${LIBS}"
+         if test "x$ac_cv_lib_crypt_crypt" = "xyes" ; then
+            LIBS="${saved_LIBS} -lcrypt"
+         fi
+
+         AC_CHECK_LIB(pq, PQisthreadsafe, AC_DEFINE(HAVE_PQISTHREADSAFE, 1, [Set if have PQisthreadsafe]))
+         AC_CHECK_LIB(pq, PQputCopyData, AC_DEFINE(HAVE_PQ_COPY, 1, [Set if have PQputCopyData]))
+         if test "x$ac_cv_lib_pq_PQputCopyData" = "xyes"; then
+             if test $support_batch_insert = yes ; then
+                 AC_DEFINE(HAVE_POSTGRESQL_BATCH_FILE_INSERT, 1, [Set if PostgreSQL DB batch insert code enabled])
+                 if test -z "${batch_insert_db_backends}"; then
+                     batch_insert_db_backends="PostgreSQL"
+                 else
+                     batch_insert_db_backends="${batch_insert_db_backends} PostgreSQL"
+                 fi
+             fi
+         fi
+
+         if test x$ac_cv_lib_pq_PQisthreadsafe != xyes -a x$support_batch_insert = xyes
+         then
+             echo "WARNING: Your PostgreSQL client library is too old to detect "
+             echo "if it was compiled with --enable-thread-safety, consider to "
+             echo "upgrade it in order to avoid problems with Batch insert mode"
+         fi
+
+         dnl Revert after postgresql checks
+         LDFLAGS="${saved_LDFLAGS}"
+         LIBS="${saved_LIBS}"
+     fi
   else
      AC_MSG_RESULT(no)
   fi