]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/autoconf/bacula-macros/db.m4
Move batch insert detection into db.m4
[bacula/bacula] / bacula / autoconf / bacula-macros / db.m4
index ee24d68d79fd3f0ba83071b27035bbc9d3d32bc3..2678af593b78c82d3e7953a72e7eff1ba684f524 100644 (file)
@@ -97,7 +97,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 +121,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
@@ -128,7 +151,6 @@ AC_SUBST(DBI_LIBS)
 AC_SUBST(DBI_INCLUDE)
 AC_SUBST(DBI_BINDIR)
 AC_SUBST(DBI_DBD_DRIVERDIR)  
-AC_SUBST(uncomment_dbi)
 
 ])
 
@@ -199,7 +221,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`
@@ -391,8 +413,11 @@ AC_HELP_STRING([--with-mysql@<:@=DIR@:>@], [Include MySQL support. DIR is the My
      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"
-        MYSQL_LFLAGS="-L$MYSQL_LIBDIR -lmysqlclient_r -lz"
+        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
         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
@@ -411,6 +436,30 @@ AC_HELP_STRING([--with-mysql@<:@=DIR@:>@], [Include MySQL support. DIR is the My
      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"
+
+         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
@@ -491,8 +540,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"
-     MYSQL_LFLAGS="-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}"
 
@@ -510,6 +562,30 @@ 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
@@ -554,7 +630,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)
@@ -636,8 +716,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"
-     SQLITE_LFLAGS="-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}"
 
@@ -654,6 +737,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} -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
@@ -675,7 +779,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`
@@ -736,9 +840,12 @@ 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_LFLAGS=`echo ${POSTGRESQL_LIBS} | sed -e "s#-R $POSTGRESQL_LIBDIR##"`
      POSTGRESQL_LIB=$POSTGRESQL_LIBDIR/libpq.a
      DB_LIBS="${DB_LIBS} ${POSTGRESQL_LIBS}"
 
@@ -752,6 +859,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