]> git.lyx.org Git - lyx.git/blobdiff - config/qt4.m4
Get rid of LYX_ERROR in our configure file.
[lyx.git] / config / qt4.m4
index 192964beee71939186e3e6a107d3bd9c5e705501..d91d9ef0efb12de82376b1e09b9be60018ef852f 100644 (file)
@@ -1,67 +1,3 @@
-dnl find a binary in the path
-AC_DEFUN([QT4_FIND_PATH],
-[
-       AC_MSG_CHECKING([for $1])
-       AC_CACHE_VAL(qt4_cv_path_$1,
-       [
-               qt4_cv_path_$1="NONE"
-               if test -n "$$2"; then
-                       qt4_cv_path_$1="$$2";
-               else
-                       dirs="$3"
-                       qt_save_IFS=$IFS
-                       IFS=':'
-                       for dir in $PATH; do
-                               dirs="$dirs $dir"
-                       done
-                       IFS=$qt_save_IFS
-
-                       for dir in $dirs; do
-                               if test -x "$dir/$1"; then
-                                       if test -n "$5"; then
-                                               evalstr="$dir/$1 $5 2>&1 "
-                                               if eval $evalstr; then
-                                                       qt4_cv_path_$1="$dir/$1"
-                                                       break
-                                               fi
-                                       else
-                                               qt4_cv_path_$1="$dir/$1"
-                                               break
-                                       fi
-                               fi
-                       done
-               fi
-       ])
-
-       if test -z "$qt4_cv_path_$1" || test "$qt4_cv_path_$1" = "NONE"; then
-               AC_MSG_RESULT(not found)
-               $4
-       else
-               AC_MSG_RESULT($qt4_cv_path_$1)
-               $2=$qt4_cv_path_$1
-       fi
-])
-
-dnl Find the uic compiler on the path or in qt_cv_dir
-AC_DEFUN([QT_FIND_UIC4],
-[
-       QT4_FIND_PATH(uic, ac_uic4, $qt4_cv_dir/bin)
-
-       if test -z "$ac_uic4" -a "$FATAL" = 1; then
-               AC_MSG_ERROR([uic 4 binary not found in \$PATH or $qt4_cv_dir/bin !])
-       fi
-])
-
-dnl Find the right moc in path/qt_cv_dir
-AC_DEFUN([QT_FIND_MOC4],
-[
-       QT4_FIND_PATH(moc, ac_moc4, $qt4_cv_dir/bin)
-
-       if test -z "$ac_moc4"  -a "$FATAL" = 1; then
-               AC_MSG_ERROR([moc 4 binary not found in \$PATH or $qt4_cv_dir/bin !])
-       fi
-])
-
 dnl check a particular libname
 AC_DEFUN([QT4_TRY_LINK],
 [
@@ -92,8 +28,19 @@ AC_DEFUN([QT4_CHECK_COMPILE],
                AC_LANG_CPLUSPLUS
                SAVE_CXXFLAGS=$CXXFLAGS
                CXXFLAGS="$CXXFLAGS $QT4_INCLUDES $QT4_LDFLAGS"
+               for libname in -lQtCore -lQtCore4 '-framework QtCore'
+               do
+                       QT4_TRY_LINK($libname)
+                       if test -n "$qt4_cv_libname"; then
+                               QT4_CORE_LIB="$qt4_cv_libname"
+                               break;
+                       fi
+               done
+               qt4_cv_libname=
                for libname in '-lQtCore -lQtGui' \
-                              '-lQtCore4 -lQtGui4'
+                              '-lQtCore4 -lQtGui4' \
+                              '-framework QtCore -framework QtConcurrent -framework QtWidgets -framework QtGui'\
+                              '-framework QtCore -framework QtGui'
                do
                        QT4_TRY_LINK($libname)
                        if test -n "$qt4_cv_libname"; then
@@ -105,9 +52,7 @@ AC_DEFUN([QT4_CHECK_COMPILE],
 
        if test -z "$qt4_cv_libname"; then
                AC_MSG_RESULT([failed])
-               if test "$FATAL" = 1 ; then
-                       AC_MSG_ERROR([Cannot compile a simple Qt 4 executable. Check you have the right \$QT4DIR !])
-               fi
+               AC_MSG_ERROR([cannot compile a simple Qt 4 executable. Check you have the right \$QT4DIR.])
        else
                AC_MSG_RESULT([$qt4_cv_libname])
        fi
@@ -145,17 +90,13 @@ AC_DEFUN([QT4_DO_IT_ALL],
        dnl this variable is precious
        AC_ARG_VAR(QT4DIR, [the place where the Qt 4 files are, e.g. /usr/lib/qt4])
 
-       dnl Please leave this alone. I use this file in
-       dnl oprofile.
-       FATAL=0
-
-       AC_ARG_WITH(qt4-dir, [  --with-qt4-dir           where the root of Qt 4 is installed ],
+       AC_ARG_WITH(qt4-dir, [AC_HELP_STRING([--with-qt4-dir], [where the root of Qt 4 is installed])],
                [ qt4_cv_dir=`eval echo "$withval"/` ])
 
-       AC_ARG_WITH(qt4-includes, [  --with-qt4-includes      where the Qt 4 includes are. ],
+       AC_ARG_WITH(qt4-includes, [AC_HELP_STRING([--with-qt4-includes], [where the Qt 4 includes are])],
                [ qt4_cv_includes=`eval echo "$withval"` ])
 
-       AC_ARG_WITH(qt4-libraries, [  --with-qt4-libraries     where the Qt 4 library is installed.],
+       AC_ARG_WITH(qt4-libraries, [AC_HELP_STRING([--with-qt4-libraries], [where the Qt 4 library is installed])],
                [  qt4_cv_libraries=`eval echo "$withval"` ])
 
        dnl pay attention to $QT4DIR unless overridden
@@ -173,43 +114,117 @@ AC_DEFUN([QT4_DO_IT_ALL],
                fi
        fi
 
+       dnl compute the binary dir too
+       if test -n "$qt4_cv_dir"; then
+               qt4_cv_bin=$qt4_cv_dir/bin
+       fi
+
+       dnl Preprocessor flags
+       QT4_CPPFLAGS="-DQT_NO_STL -DQT_NO_KEYWORDS"
+       case ${host} in
+       *mingw*) QT4_CPPFLAGS="-DQT_DLL $QT4_CPPFLAGS";;
+       esac
+       AC_SUBST(QT4_CPPFLAGS)
+
+       dnl Check if it possible to do a pkg-config
+       PKG_PROG_PKG_CONFIG
+       if test -n "$PKG_CONFIG" ; then
+               QT4_DO_PKG_CONFIG
+       fi
+       if test "$pkg_failed" != "no" ; then
+               QT4_DO_MANUAL_CONFIG
+       fi
+
+       dnl Check qt version
+       AS_VERSION_COMPARE($QT4_VERSION, $1, 
+       [AC_MSG_ERROR([LyX requires at least version $1 of Qt. Only version $QT4_VERSION has been found.])
+       ])
+
+       AC_PATH_PROGS(MOC4, [moc-qt4 moc],[],$qt4_cv_bin:$PATH)
+       AC_PATH_PROGS(UIC4, [uic-qt4 uic],[],$qt4_cv_bin:$PATH)
+       AC_PATH_PROGS(RCC4, [rcc-qt4 rcc],[],$qt4_cv_bin:$PATH)
+       AC_CHECK_PROG(bc_found,[bc],[yes],[no],$PATH)
+])
+
+AC_DEFUN([QT4_DO_PKG_CONFIG],
+[
+       dnl tell pkg-config to look also in $qt4_cv_dir/lib.
+       save_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
+       if test -n "$qt4_cv_dir" ; then
+         PKG_CONFIG_PATH=$qt4_cv_dir/lib:$qt4_cv_dir/lib/pkgconfig:$PKG_CONFIG_PATH
+         export PKG_CONFIG_PATH
+       fi
+       PKG_CHECK_MODULES(QT4_CORE, QtCore,,[:])
+       if test "$pkg_failed" = "no" ; then
+               QT4_CORE_INCLUDES=$QT4_CORE_CFLAGS
+               AC_SUBST(QT4_CORE_INCLUDES)
+               QT4_CORE_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore`
+               AC_SUBST(QT4_CORE_LDFLAGS)
+               QT4_CORE_LIB=`$PKG_CONFIG --libs-only-l QtCore`
+               AC_SUBST(QT4_CORE_LIB)
+       fi
+       PKG_CHECK_MODULES(QT4_FRONTEND, QtCore QtGui,,[:])
+       if test "$pkg_failed" = "no" ; then
+               QT4_INCLUDES=$QT4_FRONTEND_CFLAGS
+               dnl QT4_LDFLAGS=$QT4_FRONTEND_LIBS
+               QT4_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore QtGui`
+               AC_SUBST(QT4_INCLUDES)
+               AC_SUBST(QT4_LDFLAGS)
+               QT4_VERSION=`$PKG_CONFIG --modversion QtCore`
+               AC_SUBST(QT4_VERSION)
+               QT4_LIB=`$PKG_CONFIG --libs-only-l QtCore QtGui`
+               AC_SUBST(QT4_LIB)
+               LIBS="$LIBS `$PKG_CONFIG --libs-only-other QtCore QtGui`"
+       fi
+       PKG_CONFIG_PATH=$save_PKG_CONFIG_PATH
+])
+
+AC_DEFUN([QT4_DO_MANUAL_CONFIG],
+[
+       dnl Check for X libraries
+       AC_PATH_X
+       AC_PATH_XTRA
+       case $have_x in
+           yes) LIBS="$X_PRE_LIBS $LIBS $X_LIBS -lX11 $X_EXTRA_LIBS"
+                CPPFLAGS="$CPPFLAGS $X_CFLAGS";;
+            no) AC_MSG_ERROR([cannot find X window libraries and/or headers.]);;
+       disable) ;;
+       esac
+
        dnl flags for compilation
        QT4_INCLUDES=
        QT4_LDFLAGS=
+       QT4_CORE_INCLUDES=
+       QT4_CORE_LDFLAGS=
        if test -n "$qt4_cv_includes"; then
                QT4_INCLUDES="-I$qt4_cv_includes"
-               for i in Qt QtCore QtGui; do
+               for i in Qt QtCore QtGui QtWidgets QtConcurrent; do
                        QT4_INCLUDES="$QT4_INCLUDES -I$qt4_cv_includes/$i"
                done
+               QT4_CORE_INCLUDES="-I$qt4_cv_includes -I$qt4_cv_includes/QtCore"
        fi
-       if test -n "$qt4_cv_libraries"; then
+       case "$qt4_cv_libraries" in
+       *framework*)
+               QT4_LDFLAGS="-F$qt4_cv_libraries"
+               QT4_CORE_LDFLAGS="-F$qt4_cv_libraries"
+               ;;
+       "")
+               ;;
+       *)
                QT4_LDFLAGS="-L$qt4_cv_libraries"
-       fi
+               QT4_CORE_LDFLAGS="-L$qt4_cv_libraries"
+               ;;
+       esac
        AC_SUBST(QT4_INCLUDES)
+       AC_SUBST(QT4_CORE_INCLUDES)
        AC_SUBST(QT4_LDFLAGS)
-
-       dnl Preprocessor flags
-       QT4_CPPFLAGS="-DQT_CLEAN_NAMESPACE -DQT_GENUINE_STR -DQT_NO_STL -DQT3_SUPPORT -DQT_NO_KEYWORDS"
-       case ${host} in
-       *mingw*) QT4_CPPFLAGS="-DQT_DLL $QT4_CPPFLAGS";;
-       esac
-       AC_SUBST(QT4_CPPFLAGS)
-
-       if test -z "$MOC4"; then
-               QT_FIND_MOC4
-               MOC4=$ac_moc4
-       fi
-       AC_SUBST(MOC4)
-       if test -z "$UIC4"; then
-               QT_FIND_UIC4
-               UIC4=$ac_uic4
-       fi
-       AC_SUBST(UIC4)
+       AC_SUBST(QT4_CORE_LDFLAGS)
 
        QT4_CHECK_COMPILE
 
        QT4_LIB=$qt4_cv_libname;
        AC_SUBST(QT4_LIB)
+       AC_SUBST(QT4_CORE_LIB)
 
        if test -n "$qt4_cv_libname"; then
                QT4_GET_VERSION