From 75f8ef2dcddea1260a31491c97a26d30a18fce6c Mon Sep 17 00:00:00 2001 From: Constantin Michael Date: Wed, 30 Mar 2011 15:54:27 +0200 Subject: Add code for Qt profile dist build --- Makefile.am | 4 ++ configure.ac | 11 +++++ m4/libodb-qt.m4 | 84 ++++++++++++++++++++++++++++++++ m4/libqt.m4 | 86 +++++++++++++++++++++++++++++++++ qt/makefile | 1 + qt/mysql/template/template-vc10.vcxproj | 8 +-- qt/mysql/template/template-vc9.vcproj | 8 +-- test.bat | 2 +- 8 files changed, 195 insertions(+), 9 deletions(-) create mode 100644 m4/libodb-qt.m4 create mode 100644 m4/libqt.m4 diff --git a/Makefile.am b/Makefile.am index 0a15f76..2631719 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,6 +9,10 @@ if ODB_TESTS_BOOST SUBDIRS += boost endif +if ODB_TESTS_QT +SUBDIRS += qt +endif + if DATABASE_MYSQL SUBDIRS += mysql endif diff --git a/configure.ac b/configure.ac index cea2bd2..632465c 100644 --- a/configure.ac +++ b/configure.ac @@ -54,6 +54,17 @@ LIBODB_BOOST([], [odb_tests_boost=no]) AM_CONDITIONAL([ODB_TESTS_BOOST], [test x$odb_tests_boost != xno]) +# Check for Qt +# +odb_tests_qt=yes +LIBQTCORE([],[odb_tests_qt=no]) + +# Check for libodb-qt +# +LIBODB_QT([], [odb_tests_qt=no]) + +AM_CONDITIONAL([ODB_TESTS_QT], [test x$odb_tests_qt != xno]) + # Check which database we are using. # DATABASE diff --git a/m4/libodb-qt.m4 b/m4/libodb-qt.m4 new file mode 100644 index 0000000..7e6b31e --- /dev/null +++ b/m4/libodb-qt.m4 @@ -0,0 +1,84 @@ +dnl file : m4/libodb-qt.m4 +dnl author : Boris Kolpackov +dnl copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC +dnl license : GNU GPL v2; see accompanying LICENSE file +dnl +dnl LIBODB_QT([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +dnl +dnl +AC_DEFUN([LIBODB_QT], [ +libodb_qt_found=no + +AC_ARG_WITH( + [libodb-qt], + [AC_HELP_STRING([--with-libodb-qt=DIR],[location of libodb-qt build directory])], + [libodb_qt_dir=${withval}], + [libodb_qt_dir=]) + +AC_MSG_CHECKING([for libodb-qt]) + +# If libodb_qt_dir was given, add the necessary preprocessor and +# linker flags. +# +if test x"$libodb_qt_dir" != x; then + save_CPPFLAGS="$CPPFLAGS" + save_LDFLAGS="$LDFLAGS" + + AS_SET_CATFILE([abs_libodb_qt_dir], [$ac_pwd], [$libodb_qt_dir]) + + CPPFLAGS="$CPPFLAGS -I$abs_libodb_qt_dir" + LDFLAGS="$LDFLAGS -L$abs_libodb_qt_dir/odb/qt" +fi + +save_LIBS="$LIBS" +LIBS="-lodb-qt $LIBS" + +CXX_LIBTOOL_LINK_IFELSE( +AC_LANG_SOURCE([[ +#include + +void +f () +{ +} + +const char* +g () +{ + try + { + f (); + } + catch (const odb::qt::exception& e) + { + return e.what (); + } + return 0; +} + +int +main () +{ + const char* m (g ()); + return m != 0; +} +]]), +[libodb_qt_found=yes]) + +if test x"$libodb_qt_found" = xno; then + LIBS="$save_LIBS" + + if test x"$libodb_qt_dir" != x; then + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + fi +fi + +if test x"$libodb_qt_found" = xyes; then + AC_MSG_RESULT([yes]) + $1 +else + AC_MSG_RESULT([no]) + $2 +fi +])dnl diff --git a/m4/libqt.m4 b/m4/libqt.m4 new file mode 100644 index 0000000..b79e0a8 --- /dev/null +++ b/m4/libqt.m4 @@ -0,0 +1,86 @@ +dnl file : m4/libqt.m4 +dnl author : Boris Kolpackov +dnl copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC +dnl license : GNU GPL v2; see accompanying LICENSE file +dnl +dnl LIBQTCORE([ACTION-IF-FOUND[,ACTION-IF-NOT-FOUND]]) +dnl +dnl +AC_DEFUN([LIBQTCORE], [ +libqt_found=no + +AC_PATH_PROG([pkg_config],[pkg-config]) + +AC_MSG_CHECKING([for QtCore]) + +# First check for QtCore using default CPPFLAGS/LDFLAGS. +# +save_LIBS="$LIBS" +LIBS="-lQtCore $LIBS" + +CXX_LIBTOOL_LINK_IFELSE( +AC_LANG_SOURCE([[ +#include +#include + +int +main () +{ + QString qs ("test"); + std::string ss (qs.toStdString ()); + return ss.size () != 0; +} +]]), +[ +libqt_found=yes +]) + +# If default CPPFLAGS/LDFLAGS didn't work, try to discover +# them using pkg-config. +# +if test x"$libqt_found" = xno; then + LIBS="$save_LIBS" + + if test x"$pkg_config" != x; then + if $pkg_config --exists QtCore; then + save_CPPFLAGS="$CPPFLAGS" + save_LIBS="$LIBS" + + CPPFLAGS=`$pkg_config --cflags QtCore` + LIBS=`$pkg_config --libs QtCore` + + CPPFLAGS="$CPPFLAGS $save_CPPFLAGS" + LIBS="$LIBS $save_LIBS" + + CXX_LIBTOOL_LINK_IFELSE( +AC_LANG_SOURCE([[ +#include +#include + +int +main () +{ + QString qs ("test"); + std::string ss (qs.toStdString ()); + return ss.size () != 0; +} +]]), +[ +libqt_found=yes +]) + if test x"$libqt_found" = xno; then + CPPFLAGS="$save_CPPFLAGS" + LIBS="$save_LIBS" + fi + fi + fi +fi + +if test x"$libqt_found" = xyes; then + AC_MSG_RESULT([yes]) + $1 +else + AC_MSG_RESULT([no]) + $2 +fi +])dnl diff --git a/qt/makefile b/qt/makefile index 5520b8a..b8758a5 100644 --- a/qt/makefile +++ b/qt/makefile @@ -21,6 +21,7 @@ $(default): $(addprefix $(out_base)/,$(addsuffix /,$(dirs))) $(dist): export extra_dist := build.bat $(dist): $(addprefix $(out_base)/,$(addsuffix /.dist,$(all_dirs))) + $(call meta-vctest,mysql/qt-mysql-vc10.sln,build.bat) $(call meta-automake) $(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(dirs))) diff --git a/qt/mysql/template/template-vc10.vcxproj b/qt/mysql/template/template-vc10.vcxproj index be0135e..5981755 100644 --- a/qt/mysql/template/template-vc10.vcxproj +++ b/qt/mysql/template/template-vc10.vcxproj @@ -93,7 +93,7 @@ 4068;4355;4800;4290;%(DisableSpecificWarnings) - $(SolutionDir)\..\..\libcommon\lib\common-d.lib;odb-mysql-d.lib;odb-qt-d.lib;odb-d.lib;%(AdditionalDependencies) + $(SolutionDir)\..\..\libcommon\lib\common-d.lib;odb-mysql-d.lib;odb-qt-d.lib;QtCored4.lib;odb-d.lib;%(AdditionalDependencies) Console true @@ -109,7 +109,7 @@ 4068;4355;4800;4290;%(DisableSpecificWarnings) - $(SolutionDir)\..\..\libcommon\lib64\common-d.lib;odb-mysql-d.lib;odb-qt-d.lib;odb-d.lib;%(AdditionalDependencies) + $(SolutionDir)\..\..\libcommon\lib64\common-d.lib;odb-mysql-d.lib;odb-qt-d.lib;QtCored4.lib;odb-d.lib;%(AdditionalDependencies) Console true @@ -127,7 +127,7 @@ 4068;4355;4800;4290;%(DisableSpecificWarnings) - $(SolutionDir)\..\..\libcommon\lib\common.lib;odb-mysql.lib;odb-qt.lib;odb.lib;%(AdditionalDependencies) + $(SolutionDir)\..\..\libcommon\lib\common.lib;odb-mysql.lib;odb-qt.lib;QtCore4.lib;odb.lib;%(AdditionalDependencies) Console true true @@ -147,7 +147,7 @@ 4068;4355;4800;4290;%(DisableSpecificWarnings) - $(SolutionDir)\..\..\libcommon\lib64\common.lib;odb-mysql.lib;odb-qt.lib;odb.lib;%(AdditionalDependencies) + $(SolutionDir)\..\..\libcommon\lib64\common.lib;odb-mysql.lib;odb-qt.lib;QtCore4.lib;odb.lib;%(AdditionalDependencies) Console true true diff --git a/qt/mysql/template/template-vc9.vcproj b/qt/mysql/template/template-vc9.vcproj index c679db9..8bd92cb 100644 --- a/qt/mysql/template/template-vc9.vcproj +++ b/qt/mysql/template/template-vc9.vcproj @@ -65,7 +65,7 @@ />