dovecot: Added --enable-sql-plugins to build SQL drivers as plug...

dovecot at dovecot.org dovecot at dovecot.org
Tue Aug 7 01:02:19 EEST 2007


details:   http://hg.dovecot.org/dovecot/rev/0d86bb9cf286
changeset: 6194:0d86bb9cf286
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Aug 07 00:13:56 2007 +0300
description:
Added --enable-sql-plugins to build SQL drivers as plugins. Based on patch
by Tomas Janousek.

diffstat:

2 files changed, 106 insertions(+), 9 deletions(-)
configure.in            |   48 ++++++++++++++++++++++++++++-----
src/lib-sql/Makefile.am |   67 +++++++++++++++++++++++++++++++++++++++++++++--

diffs (230 lines):

diff -r 0dda1f746d63 -r 0d86bb9cf286 configure.in
--- a/configure.in	Tue Aug 07 00:12:18 2007 +0300
+++ b/configure.in	Tue Aug 07 00:13:56 2007 +0300
@@ -243,6 +243,15 @@ AC_ARG_WITH(sqlite,
 	want_sqlite=yes
 	fi,
 	want_sqlite=no)
+
+AC_ARG_ENABLE(sql-plugins,
+[  --enable-sql-plugins    Build SQL modules as plugins],
+	if test x$enableval = xno; then
+		want_sql_plugins=no
+	else
+		want_sql_plugins=yes
+	fi,
+	want_sql_plugins=no)
 
 AC_ARG_WITH(lucene,
 [  --with-lucene           Build with CLucene full text search support],
@@ -1660,12 +1669,12 @@ if test $want_pgsql = yes; then
 		fi
 		AC_CHECK_HEADER(libpq-fe.h, [
 			if test "$PGSQL_INCLUDE" != ""; then
-				SQL_CFLAGS="$SQL_CFLAGS -I$PGSQL_INCLUDE"
+				PGSQL_CFLAGS="$PGSQL_CFLAGS -I$PGSQL_INCLUDE"
 			fi
 			if test "$PGSQL_LIBDIR" != ""; then
-				SQL_LIBS="$SQL_LIBS -L$PGSQL_LIBDIR"
+				PGSQL_LIBS="$PGSQL_LIBS -L$PGSQL_LIBDIR"
 			fi
-			SQL_LIBS="$SQL_LIBS -lpq"
+			PGSQL_LIBS="$PGSQL_LIBS -lpq"
 			AC_DEFINE(HAVE_PGSQL,, Build with PostgreSQL support)
 			found_sql_drivers="$found_sql_drivers pgsql"
 
@@ -1711,12 +1720,12 @@ if test $want_mysql = yes; then
 		fi
 		AC_CHECK_HEADER(mysql.h, [
 			if test "$MYSQL_INCLUDE" != ""; then
-				SQL_CFLAGS="$SQL_CFLAGS -I$MYSQL_INCLUDE"
+				MYSQL_CFLAGS="$MYSQL_CFLAGS -I$MYSQL_INCLUDE"
 			fi
 			if test "$MYSQL_LIBDIR" != ""; then
-				SQL_LIBS="$SQL_LIBS -L$MYSQL_LIBDIR"
+				MYSQL_LIBS="$MYSQL_LIBS -L$MYSQL_LIBDIR"
 			fi
-			SQL_LIBS="$SQL_LIBS $mysql_lib"
+			MYSQL_LIBS="$MYSQL_LIBS $mysql_lib"
 
 			AC_CHECK_LIB(mysqlclient, mysql_ssl_set, [
 				AC_DEFINE(HAVE_MYSQL_SSL,, Define if your MySQL library has SSL functions)
@@ -1747,12 +1756,17 @@ if test $want_sqlite = yes; then
 if test $want_sqlite = yes; then
 	AC_CHECK_LIB(sqlite3, sqlite3_open, [
 		AC_CHECK_HEADER(sqlite3.h, [
-			SQL_LIBS="$SQL_LIBS -lsqlite3 -lz"
+			SQLITE_LIBS="$SQLITE_LIBS -lsqlite3 -lz"
 
 			AC_DEFINE(HAVE_SQLITE,, Build with SQLite3 support)
 			found_sql_drivers="$found_sql_drivers sqlite"
 		])
 	])
+fi
+	
+SQL_CFLAGS="$MYSQL_CFLAGS $PGSQL_CFLAGS $SQLITE_CFLAGS"
+if test "$want_sql_plugins" = "no"; then
+	SQL_LIBS="$MYSQL_LIBS $PGSQL_LIBS $SQLITE_LIBS"
 fi
 
 if test "$found_sql_drivers" != "" -o "$want_sql" = "yes"; then
@@ -1828,6 +1842,12 @@ AC_SUBST(AUTH_LIBS)
 AC_SUBST(AUTH_LIBS)
 AC_SUBST(SQL_CFLAGS)
 AC_SUBST(SQL_LIBS)
+AC_SUBST(MYSQL_CFLAGS)
+AC_SUBST(MYSQL_LIBS)
+AC_SUBST(PGSQL_CFLAGS)
+AC_SUBST(PGSQL_LIBS)
+AC_SUBST(SQLITE_CFLAGS)
+AC_SUBST(SQLITE_LIBS)
 
 AC_SUBST(DICT_LIBS)
 AC_SUBST(dict_drivers)
@@ -1899,17 +1919,27 @@ dnl ** SQL drivers
 dnl ** SQL drivers
 dnl **
 
+build_pgsql=no
+build_mysql=no
+build_sqlite=no
 for driver in $sql_drivers; do
   if test "$driver" = "pgsql"; then
     AC_DEFINE(BUILD_PGSQL,, Built-in PostgreSQL support)
+    build_pgsql=yes
   elif test "$driver" = "mysql"; then
     AC_DEFINE(BUILD_MYSQL,, Built-in MySQL support)
+    build_mysql=yes
   elif test "$driver" = "sqlite"; then
     AC_DEFINE(BUILD_SQLITE,, Built-in SQLite support)
+    build_sqlite=yes
   fi
 done
 
 AC_SUBST(sql_drivers)
+AM_CONDITIONAL(BUILD_PGSQL, test "$build_pgsql" = "yes")
+AM_CONDITIONAL(BUILD_MYSQL, test "$build_mysql" = "yes")
+AM_CONDITIONAL(BUILD_SQLITE, test "$build_sqlite" = "yes")
+AM_CONDITIONAL(SQL_PLUGINS, test "$want_sql_plugins" = "yes")
 
 dnl **
 dnl ** Plugins
@@ -1997,6 +2027,10 @@ dovecot-config.in])
 
 AC_OUTPUT
 
+if test "$want_sql_plugins" = "yes"; then
+  sql_drivers="$sql_drivers (plugins)"
+fi
+
 echo
 echo "Install prefix ...................... : $prefix"
 echo "File offsets ........................ : ${offt_bits}bit"
diff -r 0dda1f746d63 -r 0d86bb9cf286 src/lib-sql/Makefile.am
--- a/src/lib-sql/Makefile.am	Tue Aug 07 00:12:18 2007 +0300
+++ b/src/lib-sql/Makefile.am	Tue Aug 07 00:13:56 2007 +0300
@@ -1,20 +1,67 @@ noinst_LIBRARIES = libsql.a
 noinst_LIBRARIES = libsql.a
+
+SQL_DRIVER_PLUGINS =
+
+if SQL_PLUGINS
+if BUILD_MYSQL
+MYSQL_LIB = libdriver_mysql.la
+SQL_DRIVER_PLUGINS += mysql
+endif
+if BUILD_PGSQL
+PGSQL_LIB = libdriver_pgsql.la
+SQL_DRIVER_PLUGINS += pgsql
+endif
+if BUILD_SQLITE
+SQLITE_LIB = libdriver_sqlite.la
+SQL_DRIVER_PLUGINS += sqlite
+endif
+
+sql_module_LTLIBRARIES = \
+	$(MYSQL_LIB) \
+	$(PGSQL_LIB) \
+	$(SQLITE_LIB)
+
+sql_moduledir = $(moduledir)/sql
+endif
 
 sql_drivers = @sql_drivers@
 
 AM_CPPFLAGS = \
 	-I$(top_srcdir)/src/lib \
+	-DMODULEDIR=\""$(moduledir)"\" \
 	$(SQL_CFLAGS)
 
 dist_sources = \
+	sql-api.c
+
+if ! SQL_PLUGINS
+driver_sources = \
 	driver-mysql.c \
 	driver-pgsql.c \
-	driver-sqlite.c \
-	sql-api.c
+	driver-sqlite.c
+endif
 
 libsql_a_SOURCES = \
 	$(dist_sources) \
+	$(driver_sources) \
 	sql-drivers-register.c
+
+if SQL_PLUGINS
+libdriver_mysql_la_LDFLAGS = -module -avoid-version
+libdriver_mysql_la_LIBADD = $(MYSQL_LIBS)
+libdriver_mysql_la_CPPFLAGS = -I$(top_srcdir)/src/lib $(MYSQL_CFLAGS)
+libdriver_mysql_la_SOURCES = driver-mysql.c
+
+libdriver_pgsql_la_LDFLAGS = -module -avoid-version
+libdriver_pgsql_la_LIBADD = $(PGSQL_LIBS)
+libdriver_pgsql_la_CPPFLAGS = -I$(top_srcdir)/src/lib $(PGSQL_CFLAGS)
+libdriver_pgsql_la_SOURCES = driver-pgsql.c
+
+libdriver_sqlite_la_LDFLAGS = -module -avoid-version
+libdriver_sqlite_la_LIBADD = $(SQLITE_LIBS)
+libdriver_sqlite_la_CPPFLAGS = -I$(top_srcdir)/src/lib $(SQLITE_CFLAGS)
+libdriver_sqlite_la_SOURCES = driver-sqlite.c
+endif
 
 headers = \
 	sql-api.h \
@@ -32,18 +79,34 @@ sql-drivers-register.c: Makefile
 	echo '/* this file automatically generated by Makefile */' >$@
 	echo '#include "lib.h"' >>$@
 	echo '#include "sql-api.h"' >>$@
+if ! SQL_PLUGINS
 	for i in $(sql_drivers) null; do \
 	  if [ "$${i}" != "null" ]; then \
 	        echo "extern struct sql_db driver_$${i}_db;" >>$@ ; \
 	  fi \
 	done
+endif
 	echo 'void sql_drivers_register_all(void) {' >>$@
+if ! SQL_PLUGINS
 	for i in $(sql_drivers) null; do \
 	  if [ "$${i}" != "null" ]; then \
 	        echo "sql_driver_register(&driver_$${i}_db);" >>$@ ; \
 	  fi \
 	done
+endif
 	echo '}' >>$@
+
+if SQL_PLUGINS
+install-exec-local:
+	for d in auth dict; do \
+	  $(mkdir_p) $(DESTDIR)$(moduledir)/$$d; \
+	  for driver in $(SQL_DRIVER_PLUGINS); do \
+	    rm -f $(DESTDIR)$(moduledir)/$$d/libdriver_$$driver.so; \
+	    $(LN_S) ../sql/libdriver_$$driver.so $(DESTDIR)$(moduledir)/$$d; \
+	  done; \
+	done
+endif
+
 
 DISTFILES = $(DIST_COMMON) $(dist_sources) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 


More information about the dovecot-cvs mailing list