Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6194:0d86bb9cf286 HEAD
Added --enable-sql-plugins to build SQL drivers as plugins. Based on patch
by Tomas Janousek.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 07 Aug 2007 00:13:56 +0300 |
parents | 0dda1f746d63 |
children | 068df1748a57 |
files | configure.in src/lib-sql/Makefile.am |
diffstat | 2 files changed, 106 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/configure.in Tue Aug 07 00:12:18 2007 +0300 +++ b/configure.in Tue Aug 07 00:13:56 2007 +0300 @@ -244,6 +244,15 @@ 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], if test x$withval = xno; then @@ -1660,12 +1669,12 @@ 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 @@ 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,13 +1756,18 @@ 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 if test "$all_sql_drivers" = "yes"; then @@ -1828,6 +1842,12 @@ 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 ** +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 @@ 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"
--- 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,21 +1,68 @@ 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 \ sql-api-private.h @@ -32,19 +79,35 @@ 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) distclean-generic: