X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=config%2Fqt.m4;h=1e548eb90a3ba2dc1fabff7ff1f0a11a391875b8;hb=2de99bed22564af4d535bdfb61b07a0745e71d76;hp=8944803b4a066bc6824860cf91ce47b7ffa35090;hpb=99bf5f0e005d12af6e019fdea723b18ac910d609;p=lyx.git diff --git a/config/qt.m4 b/config/qt.m4 index 8944803b4a..1e548eb90a 100644 --- a/config/qt.m4 +++ b/config/qt.m4 @@ -1,5 +1,5 @@ dnl find a binary in the path -AC_DEFUN(QT_FIND_PATH, +AC_DEFUN([QT_FIND_PATH], [ AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(qt_cv_path_$1, @@ -15,7 +15,7 @@ AC_DEFUN(QT_FIND_PATH, dirs="$dirs $dir" done IFS=$qt_save_IFS - + for dir in $dirs; do if test -x "$dir/$1"; then if test -n "$5"; then @@ -32,7 +32,7 @@ AC_DEFUN(QT_FIND_PATH, done fi ]) - + if test -z "$qt_cv_path_$1" || test "$qt_cv_path_$1" = "NONE"; then AC_MSG_RESULT(not found) $4 @@ -43,16 +43,23 @@ AC_DEFUN(QT_FIND_PATH, ]) dnl Find the uic compiler on the path or in qt_cv_dir -AC_DEFUN(QT_FIND_UIC, +AC_DEFUN([QT_FIND_UIC], [ QT_FIND_PATH(uic, ac_uic, $qt_cv_dir/bin) if test -z "$ac_uic" -a "$FATAL" = 1; then AC_MSG_ERROR([uic binary not found in \$PATH or $qt_cv_dir/bin !]) fi + AC_MSG_CHECKING([whether uic supports -nounload]) + if $ac_uic --help 2>&1 | grep nounload >/dev/null ; then + AC_MSG_RESULT([yes]) + ac_uic="$ac_uic -nounload" + else + AC_MSG_RESULT([no]) + fi ]) - + dnl Find the right moc in path/qt_cv_dir -AC_DEFUN(QT_FIND_MOC, +AC_DEFUN([QT_FIND_MOC], [ QT_FIND_PATH(moc2, ac_moc2, $qt_cv_dir/bin) QT_FIND_PATH(moc, ac_moc1, $qt_cv_dir/bin) @@ -79,36 +86,37 @@ AC_DEFUN(QT_FIND_MOC, ]) dnl check a particular libname -AC_DEFUN(QT_TRY_LINK, +AC_DEFUN([QT_TRY_LINK], [ - CXXFLAGS="$BASE_CXXFLAGS $1" + SAVE_LIBS="$LIBS" + LIBS="$LIBS $1" AC_TRY_LINK([ #include #include ], [ QString s("mangle_failure"); - #if (QT_VERSION < 221) + #if (QT_VERSION < 0x030000) break_me_(\\\); #endif ], qt_cv_libname=$1, ) - CXXFLAGS="$BASE_CXXFLAGS" + LIBS="$SAVE_LIBS" ]) - + dnl check we can do a compile -AC_DEFUN(QT_CHECK_COMPILE, +AC_DEFUN([QT_CHECK_COMPILE], [ AC_MSG_CHECKING([for Qt library name]) - + AC_CACHE_VAL(qt_cv_libname, [ AC_LANG_CPLUSPLUS SAVE_CXXFLAGS=$CXXFLAGS - BASE_CXXFLAGS="$CXXFLAGS $QT_INCLUDES $QT_LDFLAGS" + CXXFLAGS="$CXXFLAGS $QT_INCLUDES $QT_LDFLAGS" - for libname in -lqt3 -lqt2 -lqt -lqt-mt; + for libname in -lqt-mt -lqt; do QT_TRY_LINK($libname) if test -n "$qt_cv_libname"; then @@ -120,7 +128,7 @@ AC_DEFUN(QT_CHECK_COMPILE, ]) if test -z "$qt_cv_libname"; then - AC_MSG_RESULT([failed]) + AC_MSG_RESULT([failed]) if test "$FATAL" = 1 ; then AC_MSG_ERROR([Cannot compile a simple Qt executable. Check you have the right \$QTDIR !]) fi @@ -130,7 +138,7 @@ AC_DEFUN(QT_CHECK_COMPILE, ]) dnl get Qt version we're using -AC_DEFUN(QT_GET_VERSION, +AC_DEFUN([QT_GET_VERSION], [ AC_CACHE_CHECK([Qt version],lyx_cv_qtversion, [ @@ -150,24 +158,61 @@ EOF rm -f conftest.$ac_ext CPPFLAGS=$SAVE_CPPFLAGS ]) - + QT_VERSION=$lyx_cv_qtversion AC_SUBST(QT_VERSION) ]) - -dnl start here -AC_DEFUN(QT_DO_IT_ALL, + +dnl Ascertain whether the Qt libraries are multi-threaded or not +AC_DEFUN([QT_CHECK_IS_MULTITHREADED], +[ + AC_CACHE_CHECK([whether the Qt library is multi-threaded], + qt_cv_is_multithreaded, + [ + AC_LANG_CPLUSPLUS + SAVE_CXXFLAGS=$CXXFLAGS + SAVE_LIBS="$LIBS" + CXXFLAGS="$CXXFLAGS $QT_INCLUDES $QT_LDFLAGS" + LIBS="$LIBS $QT_LIB" + + AC_TRY_LINK( + [ +#define QT_THREAD_SUPPORT +#include + ], + [ + QApplication a(0,0); + a.unlock(); + ], + qt_cv_is_multithreaded=yes, + qt_cv_is_multithreaded=no + ) + + LIBS="$SAVE_LIBS" + CXXFLAGS=$SAVE_CXXFLAGS + ]) + + if test x"$qt_cv_is_multithreaded" = xyes; then + QT_CPPFLAGS="$QT_CPPFLAGS -DQT_THREAD_SUPPORT" + fi +]) + +dnl start here +AC_DEFUN([QT_DO_IT_ALL], [ + dnl this variable is precious + AC_ARG_VAR(QTDIR, [the place where the Qt files are, e.g. /usr/lib/qt]) + dnl Please leave this alone. I use this file in dnl oprofile. - FATAL=1 + FATAL=0 AC_ARG_WITH(qt-dir, [ --with-qt-dir where the root of Qt is installed ], [ qt_cv_dir=`eval echo "$withval"/` ]) - + AC_ARG_WITH(qt-includes, [ --with-qt-includes where the Qt includes are. ], [ qt_cv_includes=`eval echo "$withval"` ]) - + AC_ARG_WITH(qt-libraries, [ --with-qt-libraries where the Qt library is installed.], [ qt_cv_libraries=`eval echo "$withval"` ]) @@ -175,7 +220,7 @@ AC_DEFUN(QT_DO_IT_ALL, if test -z "$qt_cv_dir"; then qt_cv_dir=$QTDIR fi - + dnl derive inc/lib if needed if test -n "$qt_cv_dir"; then if test -z "$qt_cv_includes"; then @@ -197,18 +242,41 @@ AC_DEFUN(QT_DO_IT_ALL, fi AC_SUBST(QT_INCLUDES) AC_SUBST(QT_LDFLAGS) - - QT_FIND_MOC - MOC=$ac_moc + + dnl Preprocessor flags + QT_CPPFLAGS="-DQT_CLEAN_NAMESPACE -DQT_GENUINE_STR -DQT_NO_STL -DQT_NO_EMIT" + case ${host} in + *mingw*) QT_CPPFLAGS="-DQT_DLL $QT_CPPFLAGS";; + esac + + case ${host_os} in + cygwin* ) + if test "x$with_x" = xno ; then + QT_CPPFLAGS="$QT_CPPFLAGS -DQ_CYGWIN_WIN" + fi;; + esac + + AC_SUBST(QT_CPPFLAGS) + + if test -z "$MOC"; then + QT_FIND_MOC + MOC=$ac_moc + fi AC_SUBST(MOC) - QT_FIND_UIC - UIC=$ac_uic + if test -z "$UIC"; then + QT_FIND_UIC + UIC=$ac_uic + fi AC_SUBST(UIC) QT_CHECK_COMPILE - + QT_LIB=$qt_cv_libname; AC_SUBST(QT_LIB) - QT_GET_VERSION + QT_CHECK_IS_MULTITHREADED + + if test -n "$qt_cv_libname"; then + QT_GET_VERSION + fi ])