From b7354d91569384ba884bd3e391210019037ada2c Mon Sep 17 00:00:00 2001 From: Harri Porten Date: Sat, 28 Dec 2002 09:10:43 +0000 Subject: very basic check for Qt integration. Another proof that Qt's build system needs more work for people using it. I didn't want to copy all of KDEs autoconf magic so this is far from perfect, yet. Can we use pkg-config here ? --- ChangeLog | 14 ++++++++ Makefile.am | 6 +++- configure.in | 45 +++++++++++++++++++++---- dbus/dbus-connection.c | 2 +- qt/.cvsignore | 7 ++++ qt/Makefile.am | 9 +++++ qt/dbus-qthread.cc | 85 ----------------------------------------------- qt/dbus-qthread.cpp | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 164 insertions(+), 93 deletions(-) create mode 100644 qt/.cvsignore create mode 100644 qt/Makefile.am delete mode 100644 qt/dbus-qthread.cc create mode 100644 qt/dbus-qthread.cpp diff --git a/ChangeLog b/ChangeLog index 742c656e..30013d88 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2002-12-28 Harri Porten + + * configure.in: added check for C++ compiler and a very cheesy + check for the Qt integration + + * Makefile.am (SUBDIRS): compile qt subdir if support is enabled + + * qt/Makefile.am: added + + * qt/.cvsignore: added + + * qt/dbus-qthread.cc, qt/dbus-qthread.cpp: renamed former to + latter, added #ifdef QT_THREAD_SUPPORT guard. + 2002-12-28 Kristian Rietveld * dbus/Makefile.am: fixup export-symbols-regex. diff --git a/Makefile.am b/Makefile.am index dc120d35..a197cf39 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,7 +4,11 @@ if HAVE_GLIB GLIB_PC=dbus-glib-1.0.pc endif -SUBDIRS=dbus $(GLIB_SUBDIR) bus test doc +if HAVE_QT + QT_SUBDIR=qt +endif + +SUBDIRS=dbus $(GLIB_SUBDIR) $(QT_SUBDIR) bus test doc pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = dbus-1.0.pc $(GLIB_PC) diff --git a/configure.in b/configure.in index 9806da9e..a2b81699 100644 --- a/configure.in +++ b/configure.in @@ -17,11 +17,12 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[The name of the gettext d AM_MAINTAINER_MODE AC_PROG_CC +AC_PROG_CXX AC_ISC_POSIX AC_HEADER_STDC AM_PROG_LIBTOOL -AC_ARG_ENABLE(qt, [ --enable-qt enable Qt-friendly client library],enable_qt=$enableval,enable_qt=no) +AC_ARG_ENABLE(qt, [ --enable-qt enable Qt-friendly client library],enable_qt=$enableval,enable_qt=auto) AC_ARG_ENABLE(glib, [ --enable-glib enable GLib-friendly client library],enable_glib=$enableval,enable_glib=auto) AC_ARG_ENABLE(tests, [ --enable-tests enable unit test code],enable_tests=yes,enable_tests=no) AC_ARG_ENABLE(ansi, [ --enable-ansi enable -ansi -pedantic gcc flags],enable_ansi=yes,enable_ansi=no) @@ -144,11 +145,47 @@ dnl GLib flags AC_SUBST(DBUS_GLIB_CFLAGS) AC_SUBST(DBUS_GLIB_LIBS) +# Qt detection +have_qt=no +if test -n "$QTDIR" -a -f $QTDIR/include/qglobal.h; then + have_qt=yes + DBUS_QT_CXXFLAGS=-I$QTDIR/include +fi + +dnl linking to kdecore will give us a bit of help from libtool +kdelibs=`kde-config --install lib --expandvars 2>/dev/null` +if test -z $kdelibs -a -f $kdelibs/libkdecore.la; then + have_qt=no +else + DBUS_QT_LIBS=$kdelibs/libkdecore.la +fi + +if test x$have_qt = xno ; then + AC_MSG_WARN([Qt development libraries not found]) +fi + +if test x$enable_qt = xyes; then + if test x$have_qt = xno; then + AC_MSG_ERROR([Qt integration explicitly required, and Qt libraries not found]) + fi +fi + +if test x$enable_qt = xno; then + have_qt=no; +fi + +AM_CONDITIONAL(HAVE_QT, test x$have_qt = xyes) + +dnl Qt flags +AC_SUBST(DBUS_QT_CXXFLAGS) +AC_SUBST(DBUS_QT_LIBS) + AC_OUTPUT([ Makefile Doxyfile dbus/Makefile glib/Makefile +qt/Makefile bus/Makefile test/Makefile doc/Makefile @@ -166,14 +203,10 @@ echo " compiler: ${CC} Building unit tests: ${enable_tests} - Building Qt bindings: ${enable_qt} + Building Qt bindings: ${have_qt} Building GLib bindings: ${have_glib} " if test x$enable_tests = xyes; then echo "NOTE: building with unit tests increases the size of the installed library" fi -if test x$enable_qt = xyes; then - echo "NOTE: Qt bindings don't actually exist yet" -fi - diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c index e5fa48f0..28f1d7f3 100644 --- a/dbus/dbus-connection.c +++ b/dbus/dbus-connection.c @@ -122,7 +122,7 @@ _dbus_connection_have_messages_to_send (DBusConnection *connection) } /** - * Gets the next outgoing message. The message remanins in the + * Gets the next outgoing message. The message remains in the * queue, and the caller does not own a reference to it. * * @param connection the connection. diff --git a/qt/.cvsignore b/qt/.cvsignore new file mode 100644 index 00000000..9626b600 --- /dev/null +++ b/qt/.cvsignore @@ -0,0 +1,7 @@ +.deps +.libs +Makefile +Makefile.in +*.lo +*.la + diff --git a/qt/Makefile.am b/qt/Makefile.am new file mode 100644 index 00000000..f23e1ddd --- /dev/null +++ b/qt/Makefile.am @@ -0,0 +1,9 @@ +INCLUDES=-I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_QT_CXXFLAGS) + +lib_LTLIBRARIES=libdbus-qt-1.la + +libdbus_qt_1_la_SOURCES = \ + dbus-qthread.cpp + +libdbus_qt_1_la_LIBADD= $(DBUS_QT_LIBS) $(top_builddir)/dbus/libdbus-1.la +libdbus_qt_1_la_LDFLAGS= -version-info 1:0 diff --git a/qt/dbus-qthread.cc b/qt/dbus-qthread.cc deleted file mode 100644 index ab266284..00000000 --- a/qt/dbus-qthread.cc +++ /dev/null @@ -1,85 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu" -*- */ -/* dbus-qthread.c Qt threads integration - * - * Copyright (C) 2002 Zack Rusin - * - * Licensed under the Academic Free License version 1.2 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#include -#include - -static DBusMutex * dbus_qmutex_new (void); -static void dbus_qmutex_free (DBusMutex *mutex); -static dbus_bool_t dbus_qmutex_lock (DBusMutex *mutex); -static dbus_bool_t dbus_qmutex_unlock (DBusMutex *mutex); - - -static const DBusThreadFunctions functions = -{ - DBUS_THREAD_FUNCTIONS_NEW_MASK | - DBUS_THREAD_FUNCTIONS_FREE_MASK | - DBUS_THREAD_FUNCTIONS_LOCK_MASK | - DBUS_THREAD_FUNCTIONS_UNLOCK_MASK, - dbus_qmutex_new, - dbus_qmutex_free, - dbus_qmutex_lock, - dbus_qmutex_unlock -}; - -static DBusMutex * -dbus_qmutex_new (void) -{ - QMutex *mutex; - mutex = new QMutex; - return static_cast( mutex ); -} - -static void -dbus_qmutex_free (DBusMutex *mutex) -{ - QMutex * qmutex = static_cast(mutex); - delete mutex; -} - -static dbus_bool_t -dbus_qmutex_lock (DBusMutex *mutex) -{ - QMutex *qmutex = static_cast(mutex); - qmutex->lock(); - return TRUE; -} - -static dbus_bool_t -dbus_qmutex_unlock (DBusMutex *mutex) -{ - QMutex *qmutex = static_cast(mutex); - qmutex->unlock(); - return TRUE; -} - -extern "C" { - -void -dbus_qthread_init (void) -{ - //Do we want to do anything else here? - dbus_threads_init (&functions); -} - -} diff --git a/qt/dbus-qthread.cpp b/qt/dbus-qthread.cpp new file mode 100644 index 00000000..5aa0fa1e --- /dev/null +++ b/qt/dbus-qthread.cpp @@ -0,0 +1,89 @@ +/* -*- mode: C; c-file-style: "gnu" -*- */ +/* dbus-qthread.cpp Qt threads integration + * + * Copyright (C) 2002 Zack Rusin + * + * Licensed under the Academic Free License version 1.2 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include + +#if defined(QT_THREAD_SUPPORT) + +static DBusMutex * dbus_qmutex_new (void); +static void dbus_qmutex_free (DBusMutex *mutex); +static dbus_bool_t dbus_qmutex_lock (DBusMutex *mutex); +static dbus_bool_t dbus_qmutex_unlock (DBusMutex *mutex); + + +static const DBusThreadFunctions functions = +{ + DBUS_THREAD_FUNCTIONS_NEW_MASK | + DBUS_THREAD_FUNCTIONS_FREE_MASK | + DBUS_THREAD_FUNCTIONS_LOCK_MASK | + DBUS_THREAD_FUNCTIONS_UNLOCK_MASK, + dbus_qmutex_new, + dbus_qmutex_free, + dbus_qmutex_lock, + dbus_qmutex_unlock +}; + +static DBusMutex * +dbus_qmutex_new (void) +{ + QMutex *mutex; + mutex = new QMutex; + return static_cast( mutex ); +} + +static void +dbus_qmutex_free (DBusMutex *mutex) +{ + QMutex * qmutex = static_cast(mutex); + delete mutex; +} + +static dbus_bool_t +dbus_qmutex_lock (DBusMutex *mutex) +{ + QMutex *qmutex = static_cast(mutex); + qmutex->lock(); + return TRUE; +} + +static dbus_bool_t +dbus_qmutex_unlock (DBusMutex *mutex) +{ + QMutex *qmutex = static_cast(mutex); + qmutex->unlock(); + return TRUE; +} + +extern "C" { + +void +dbus_qthread_init (void) +{ + //Do we want to do anything else here? + dbus_threads_init (&functions); +} + +} + +#endif // QT_THREAD_SUPPORT -- cgit