2019-07-21 10:36:05 +00:00
|
|
|
dnl check a particular libname
|
|
|
|
AC_DEFUN([QT_TRY_LINK],
|
|
|
|
[
|
|
|
|
SAVE_LIBS="$LIBS"
|
|
|
|
LIBS="$LIBS $1"
|
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
|
|
#include <qglobal.h>
|
|
|
|
#include <qstring.h>
|
|
|
|
]], [[
|
|
|
|
QString s("mangle_failure");
|
|
|
|
#if (QT_VERSION < 400)
|
|
|
|
break_me_(\\\);
|
|
|
|
#endif
|
|
|
|
]])],[qt_cv_libname=$1],[])
|
|
|
|
LIBS="$SAVE_LIBS"
|
|
|
|
])
|
|
|
|
|
|
|
|
dnl check we can do a compile
|
|
|
|
AC_DEFUN([QT_CHECK_COMPILE],
|
|
|
|
[
|
|
|
|
AC_MSG_CHECKING([for Qt library name])
|
|
|
|
|
|
|
|
AC_CACHE_VAL(qt_cv_libname,
|
|
|
|
[
|
|
|
|
SAVE_CXXFLAGS=$CXXFLAGS
|
|
|
|
CXXFLAGS="$CXXFLAGS $QT_INCLUDES $QT_LDFLAGS"
|
|
|
|
qt_corelibs="-lQtCore -lQtCore4"
|
|
|
|
qt_guilibs="'-lQtCore -lQtGui' '-lQtCore4 -lQtGui4'"
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
if test $USE_QT6 = "yes" ; then
|
2023-03-03 10:57:12 +00:00
|
|
|
qt_corelibs="-lQt6Core"
|
2024-06-23 16:37:25 +00:00
|
|
|
qt_guilibs="-lQt6Core -lQt6Concurrent -lQt6Gui -lQt6Svg -lQt6Xml -lQt6Widgets"
|
2022-11-19 18:28:07 +00:00
|
|
|
else
|
2019-07-21 10:36:05 +00:00
|
|
|
qt_corelibs="-lQt5Core"
|
2024-06-23 16:37:25 +00:00
|
|
|
qt_guilibs="-lQt5Core -lQt5Concurrent -lQt5Gui -lQt5Svg -lQt5Xml -lQt5Widgets"
|
2019-07-21 10:36:05 +00:00
|
|
|
fi
|
|
|
|
for libname in $qt_corelibs '-framework QtCore'
|
|
|
|
do
|
|
|
|
QT_TRY_LINK($libname)
|
|
|
|
if test -n "$qt_cv_libname"; then
|
|
|
|
QT_CORE_LIB="$qt_cv_libname"
|
|
|
|
break;
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
qt_cv_libname=
|
|
|
|
for libname in $qt_guilibs \
|
2024-06-23 16:37:25 +00:00
|
|
|
'-framework QtCore -framework QtConcurrent -framework QtSvg -framework QtXml -framework QtWidgets -framework QtMacExtras -framework QtGui'\
|
|
|
|
'-framework QtCore -framework QtConcurrent -framework QtSvg -framework QtSvgWidgets -framework QtXml -framework QtWidgets -framework QtGui'\
|
2019-07-21 10:36:05 +00:00
|
|
|
'-framework QtCore -framework QtGui'
|
|
|
|
do
|
|
|
|
QT_TRY_LINK($libname)
|
|
|
|
if test -n "$qt_cv_libname"; then
|
|
|
|
break;
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
CXXFLAGS=$SAVE_CXXFLAGS
|
|
|
|
])
|
|
|
|
|
|
|
|
if test -z "$qt_cv_libname"; then
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
if test x$USE_QT6 = xyes ; then
|
|
|
|
AC_MSG_RESULT([failed, retrying with Qt5])
|
2019-07-21 10:36:05 +00:00
|
|
|
else
|
|
|
|
AC_MSG_RESULT([failed])
|
|
|
|
AC_MSG_ERROR([cannot compile a simple Qt executable. Check you have the right \$QTDIR.])
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT([$qt_cv_libname])
|
|
|
|
fi
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
|
|
AC_DEFUN([QT_FIND_TOOL],
|
|
|
|
[
|
|
|
|
$1=
|
2022-11-19 18:28:07 +00:00
|
|
|
qt_major=5
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
if test "x$USE_QT6" != "xno" ; then
|
2021-03-21 10:28:11 +00:00
|
|
|
qt_major=6
|
2019-07-21 10:36:05 +00:00
|
|
|
fi
|
2021-03-21 10:28:11 +00:00
|
|
|
qt_ext="qt$qt_major"
|
2019-07-21 10:36:05 +00:00
|
|
|
|
2021-06-15 09:40:27 +00:00
|
|
|
if test -n "$qt_cv_libexec" ; then
|
|
|
|
AC_PATH_PROGS($1, [$2], [], $qt_cv_libexec)
|
|
|
|
elif test -n "$qt_cv_bin" ; then
|
2019-07-21 10:36:05 +00:00
|
|
|
AC_PATH_PROGS($1, [$2], [], $qt_cv_bin)
|
|
|
|
elif qtchooser -l 2>/dev/null | grep -q ^$qt_ext\$ >/dev/null ; then
|
|
|
|
AC_PATH_PROG(qtc_path, qtchooser, [], [$PATH])
|
|
|
|
AC_PATH_PROG($2_path, $2, [], [$PATH])
|
|
|
|
qtc_path=`dirname "$qtc_path"`
|
|
|
|
$2_path=`dirname "$$2_path"`
|
|
|
|
if test "$qtc_path" = "$$2_path" ; then
|
|
|
|
AC_CHECK_PROG($1, $2, [$2 -qt=$qt_ext],, [$PATH])
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if test -z "$$1"; then
|
2021-03-21 10:28:11 +00:00
|
|
|
AC_CHECK_PROGS($1, [$2-$qt_ext $2$qt_major $2],[],$PATH)
|
2019-07-21 10:36:05 +00:00
|
|
|
fi
|
|
|
|
if test -z "$$1"; then
|
|
|
|
AC_MSG_ERROR([cannot find $2 binary.])
|
|
|
|
fi
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
|
|
dnl get Qt version we're using
|
|
|
|
AC_DEFUN([QT_GET_VERSION],
|
|
|
|
[
|
|
|
|
AC_CACHE_CHECK([Qt version],lyx_cv_qtversion,
|
|
|
|
[
|
|
|
|
SAVE_CPPFLAGS=$CPPFLAGS
|
|
|
|
CPPFLAGS="$CPPFLAGS $QT_INCLUDES"
|
|
|
|
|
|
|
|
cat > conftest.$ac_ext <<EOF
|
|
|
|
#line __oline__ "configure"
|
|
|
|
#include "confdefs.h"
|
|
|
|
#include <qglobal.h>
|
|
|
|
"%%%"QT_VERSION_STR"%%%"
|
|
|
|
EOF
|
|
|
|
lyx_cv_qtversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
|
|
|
|
grep '^"%%%"' 2>/dev/null | \
|
|
|
|
sed -e 's/"%%%"//g' -e 's/"//g'`
|
|
|
|
rm -f conftest.$ac_ext
|
|
|
|
CPPFLAGS=$SAVE_CPPFLAGS
|
|
|
|
])
|
|
|
|
|
|
|
|
QTLIB_VERSION=$lyx_cv_qtversion
|
|
|
|
AC_SUBST(QTLIB_VERSION)
|
|
|
|
])
|
|
|
|
|
|
|
|
dnl start here
|
|
|
|
AC_DEFUN([QT_DO_IT_ALL],
|
|
|
|
[
|
|
|
|
dnl this variable is precious
|
2022-11-20 20:53:03 +00:00
|
|
|
AC_ARG_VAR(QTDIR, [the place where the Qt files are, e.g. /usr/lib/qt5])
|
2019-07-21 10:36:05 +00:00
|
|
|
|
|
|
|
AC_ARG_WITH(qt-dir, [AS_HELP_STRING([--with-qt-dir], [where the root of Qt is installed])],
|
|
|
|
[ qt_cv_dir=`eval echo "$withval"/` ])
|
|
|
|
|
|
|
|
AC_ARG_WITH(qt-includes, [AS_HELP_STRING([--with-qt-includes], [where the Qt includes are])],
|
|
|
|
[ qt_cv_includes=`eval echo "$withval"` ])
|
|
|
|
|
|
|
|
AC_ARG_WITH(qt-libraries, [AS_HELP_STRING([--with-qt-libraries], [where the Qt library is installed])],
|
|
|
|
[ qt_cv_libraries=`eval echo "$withval"` ])
|
|
|
|
|
|
|
|
dnl pay attention to $QTDIR unless overridden
|
|
|
|
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
|
|
|
|
qt_cv_includes=$qt_cv_dir/include
|
|
|
|
fi
|
|
|
|
if test -z "$qt_cv_libraries"; then
|
|
|
|
qt_cv_libraries=$qt_cv_dir/lib
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
dnl compute the binary dir too
|
|
|
|
if test -n "$qt_cv_dir"; then
|
|
|
|
qt_cv_bin=$qt_cv_dir/bin
|
|
|
|
fi
|
|
|
|
|
|
|
|
dnl Preprocessor flags
|
|
|
|
QT_CPPFLAGS="-DQT_NO_STL -DQT_NO_KEYWORDS"
|
|
|
|
case ${host} in
|
|
|
|
*mingw*) QT_CPPFLAGS="-DQT_DLL $QT_CPPFLAGS";;
|
|
|
|
esac
|
|
|
|
AC_SUBST(QT_CPPFLAGS)
|
|
|
|
|
2024-06-14 17:17:27 +00:00
|
|
|
dnl Check if it possible to do a pkg-config (for later)
|
2019-07-21 10:36:05 +00:00
|
|
|
PKG_PROG_PKG_CONFIG
|
2024-06-14 17:17:27 +00:00
|
|
|
|
|
|
|
dnl Try qmake first
|
|
|
|
QT_QMAKE_CONFIG([$USE_QT6])
|
|
|
|
if test -z "$QT_LIB"; then
|
|
|
|
dnl pkg-config does not work with Qt6 (QTBUG-86080)
|
|
|
|
if test x$USE_QT6 = xno ; then
|
|
|
|
if test -n "$PKG_CONFIG" ; then
|
|
|
|
QT_DO_PKG_CONFIG
|
|
|
|
fi
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
fi
|
2024-06-14 17:17:27 +00:00
|
|
|
fi
|
|
|
|
dnl last chance: old-style configuration
|
|
|
|
if test -z "$QT_LIB"; then
|
|
|
|
QT_DO_MANUAL_CONFIG
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test -z "$QT_LIB"; then
|
|
|
|
dnl Try again with Qt5 if configuring for Qt6 failed
|
|
|
|
dnl this is mostly the same logic as above
|
|
|
|
if test x$USE_QT6 = xyes ; then
|
|
|
|
USE_QT6=no
|
|
|
|
QT_QMAKE_CONFIG([$USE_QT6])
|
|
|
|
if test -z "$QT_LIB"; then
|
|
|
|
if test -n "$PKG_CONFIG" ; then
|
|
|
|
QT_DO_PKG_CONFIG
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if test -z "$QT_LIB"; then
|
|
|
|
QT_DO_MANUAL_CONFIG
|
|
|
|
fi
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
fi
|
2019-07-21 10:36:05 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
if test -z "$QT_LIB"; then
|
2024-06-14 17:17:27 +00:00
|
|
|
AC_MSG_ERROR([Cannot find Qt libraries.])
|
2019-07-21 10:36:05 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
dnl Check qt version
|
|
|
|
AS_VERSION_COMPARE($QTLIB_VERSION, $1,
|
|
|
|
[AC_MSG_ERROR([LyX requires at least version $1 of Qt. Only version $QTLIB_VERSION has been found.])
|
|
|
|
])
|
|
|
|
|
2022-12-05 18:47:00 +00:00
|
|
|
case $QTLIB_VERSION in
|
|
|
|
6.*) if test $enable_stdlib_debug = "yes" ; then
|
|
|
|
LYX_WARNING([Compiling LyX with stdlib-debug and Qt6 library may lead to
|
|
|
|
crashes. Consider dropping --enable-stdlib-debug.])
|
|
|
|
fi;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
2019-07-21 10:36:05 +00:00
|
|
|
save_CPPFLAGS=$CPPFLAGS
|
|
|
|
CPPFLAGS="$save_CPPFLAGS $QT_CORE_INCLUDES"
|
|
|
|
AC_CHECK_HEADER(QtGui/qtgui-config.h,
|
2023-08-28 08:52:08 +00:00
|
|
|
[lyx_qt_config=QtGui/qtgui-config.h],
|
|
|
|
[lyx_qt_config=qconfig.h])
|
2019-07-21 10:36:05 +00:00
|
|
|
AC_MSG_CHECKING([whether Qt uses the X Window system])
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
if test x$USE_QT6 = xyes ; then
|
|
|
|
dnl FIXME: Check whether defining QPA_XCB makes sense with Qt6
|
|
|
|
AC_PREPROC_IFELSE([AC_LANG_SOURCE([
|
2023-08-28 08:52:08 +00:00
|
|
|
[#include <$lyx_qt_config>]
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
[#if !defined(QT_FEATURE_xcb) || QT_FEATURE_xcb < 0]
|
|
|
|
[#error Fail]
|
|
|
|
[#endif]])],
|
|
|
|
[AC_MSG_RESULT(yes)
|
|
|
|
AC_DEFINE(QPA_XCB, 1, [Define if Qt uses the X Window System])],
|
|
|
|
[AC_MSG_RESULT(no)])
|
2022-11-19 18:28:07 +00:00
|
|
|
else
|
2019-07-21 10:36:05 +00:00
|
|
|
AC_EGREP_CPP(xcb,
|
2023-08-28 08:52:08 +00:00
|
|
|
[#include <$lyx_qt_config>
|
2019-07-21 10:36:05 +00:00
|
|
|
QT_QPA_DEFAULT_PLATFORM_NAME],
|
|
|
|
[AC_MSG_RESULT(yes)
|
|
|
|
AC_DEFINE(QPA_XCB, 1, [Define if Qt uses the X Window System])],
|
|
|
|
[AC_MSG_RESULT(no)])
|
|
|
|
fi
|
|
|
|
CPPFLAGS=$save_CPPFLAGS
|
|
|
|
|
|
|
|
QT_FIND_TOOL([QT_MOC], [moc])
|
|
|
|
QT_FIND_TOOL([QT_UIC], [uic])
|
|
|
|
QT_FIND_TOOL([QT_RCC], [rcc])
|
|
|
|
|
|
|
|
dnl Safety check
|
2021-07-16 16:12:33 +00:00
|
|
|
mocqtver=`$QT_MOC -v 2>&1 | sed -e 's/.*\([[0-9]]\.[[0-9]]*\.[[0-9]]*\).*/\1/'`
|
2019-07-21 10:36:05 +00:00
|
|
|
if test "x$mocqtver" != "x$QTLIB_VERSION"; then
|
|
|
|
LYX_WARNING([The found moc compiler is for Qt $mocqtver but the Qt library version is $QTLIB_VERSION.])
|
|
|
|
fi
|
|
|
|
])
|
|
|
|
|
|
|
|
AC_DEFUN([QT_DO_PKG_CONFIG],
|
|
|
|
[
|
|
|
|
dnl tell pkg-config to look also in $qt_cv_dir/lib.
|
|
|
|
save_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
|
|
|
|
if test -n "$qt_cv_dir" ; then
|
|
|
|
PKG_CONFIG_PATH=$qt_cv_dir/lib:$qt_cv_dir/lib/pkgconfig:$PKG_CONFIG_PATH
|
|
|
|
export PKG_CONFIG_PATH
|
|
|
|
fi
|
2022-11-19 18:28:07 +00:00
|
|
|
qt_corelibs="Qt5Core"
|
2024-06-23 16:37:25 +00:00
|
|
|
qt_guilibs="Qt5Core Qt5Concurrent Qt5Gui Qt5Svg Qt5Widgets Qt5Xml"
|
2022-11-19 18:28:07 +00:00
|
|
|
lyx_use_x11extras=false
|
|
|
|
PKG_CHECK_EXISTS(Qt5X11Extras, [lyx_use_x11extras=true], [])
|
|
|
|
if $lyx_use_x11extras; then
|
|
|
|
qt_guilibs="$qt_guilibs Qt5X11Extras xcb"
|
|
|
|
AC_DEFINE(HAVE_QT5_X11_EXTRAS, 1,
|
|
|
|
[Define if you have the Qt5X11Extras module])
|
|
|
|
fi
|
|
|
|
lyx_use_winextras=false
|
|
|
|
PKG_CHECK_EXISTS(Qt5WinExtras, [lyx_use_winextras=true], [])
|
|
|
|
if $lyx_use_winextras; then
|
|
|
|
qt_guilibs="$qt_guilibs Qt5WinExtras"
|
|
|
|
fi
|
|
|
|
lyx_use_macextras=false
|
|
|
|
PKG_CHECK_EXISTS(Qt5MacExtras, [lyx_use_macextras=true], [])
|
|
|
|
if $lyx_use_macextras; then
|
|
|
|
qt_guilibs="$qt_guilibs Qt5MacExtras"
|
2019-07-21 10:36:05 +00:00
|
|
|
fi
|
|
|
|
PKG_CHECK_MODULES(QT_CORE, $qt_corelibs,,[:])
|
|
|
|
if test "$pkg_failed" = "no" ; then
|
|
|
|
QT_CORE_INCLUDES=$QT_CORE_CFLAGS
|
|
|
|
AC_SUBST(QT_CORE_INCLUDES)
|
|
|
|
QT_CORE_LDFLAGS=`$PKG_CONFIG --libs-only-L $qt_corelibs`
|
|
|
|
AC_SUBST(QT_CORE_LDFLAGS)
|
|
|
|
QT_CORE_LIB=`$PKG_CONFIG --libs-only-l $qt_corelibs`
|
|
|
|
AC_SUBST(QT_CORE_LIB)
|
|
|
|
fi
|
|
|
|
PKG_CHECK_MODULES(QT_FRONTEND, $qt_guilibs,,[:])
|
|
|
|
if test "$pkg_failed" = "no" ; then
|
|
|
|
QT_INCLUDES=$QT_FRONTEND_CFLAGS
|
|
|
|
dnl QT_LDFLAGS=$QT_FRONTEND_LIBS
|
|
|
|
QT_LDFLAGS=`$PKG_CONFIG --libs-only-L $qt_guilibs`
|
|
|
|
AC_SUBST(QT_INCLUDES)
|
|
|
|
AC_SUBST(QT_LDFLAGS)
|
|
|
|
QTLIB_VERSION=`$PKG_CONFIG --modversion $qt_corelibs`
|
|
|
|
AC_SUBST(QTLIB_VERSION)
|
|
|
|
QT_LIB=`$PKG_CONFIG --libs-only-l $qt_guilibs`
|
|
|
|
AC_SUBST(QT_LIB)
|
|
|
|
dnl LIBS="$LIBS `$PKG_CONFIG --libs-only-other $qt_guilibs`"
|
|
|
|
fi
|
|
|
|
PKG_CONFIG_PATH=$save_PKG_CONFIG_PATH
|
|
|
|
dnl Actually, the values of QT_LIB and QT_CORE_LIB can be completely
|
|
|
|
dnl wrong on OS X, where everything goes to --libs-only-other.
|
|
|
|
dnl As a quick workaround, let us assign better values. A better patch
|
|
|
|
dnl exists for next cycle.
|
|
|
|
QT_CORE_LIB=$QT_CORE_LIBS
|
|
|
|
QT_CORE_LDFLAGS=
|
|
|
|
QT_LIB=$QT_FRONTEND_LIBS
|
|
|
|
QT_LDFLAGS=
|
|
|
|
])
|
|
|
|
|
|
|
|
AC_DEFUN([QT_DO_MANUAL_CONFIG],
|
|
|
|
[
|
|
|
|
dnl Check for X libraries
|
|
|
|
case ${host} in
|
|
|
|
*mingw*) ;;
|
|
|
|
*) \
|
|
|
|
AC_PATH_X \
|
|
|
|
AC_PATH_XTRA \
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
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
|
|
|
|
QT_INCLUDES=
|
|
|
|
QT_LDFLAGS=
|
|
|
|
QT_CORE_INCLUDES=
|
|
|
|
QT_CORE_LDFLAGS=
|
|
|
|
if test -n "$qt_cv_includes"; then
|
|
|
|
QT_INCLUDES="-I$qt_cv_includes"
|
2024-06-23 16:37:25 +00:00
|
|
|
for i in Qt QtCore QtGui QtWidgets QtSvg QtConcurrent QtSvgWidgets QtXml QtMacExtras; do
|
2019-07-21 10:36:05 +00:00
|
|
|
QT_INCLUDES="$QT_INCLUDES -I$qt_cv_includes/$i"
|
2021-10-24 19:41:11 +00:00
|
|
|
if test "$lyx_use_packaging" = "macosx" ; then
|
|
|
|
QT_INCLUDES="$QT_INCLUDES -I$qt_cv_libraries/${i}.framework/Headers"
|
|
|
|
fi
|
2019-07-21 10:36:05 +00:00
|
|
|
done
|
|
|
|
QT_CORE_INCLUDES="-I$qt_cv_includes -I$qt_cv_includes/QtCore"
|
|
|
|
fi
|
|
|
|
case "$qt_cv_libraries" in
|
|
|
|
"")
|
|
|
|
;;
|
|
|
|
*)
|
2021-10-24 19:41:11 +00:00
|
|
|
if test "$lyx_use_packaging" = "macosx" ; then
|
|
|
|
QT_INCLUDES="$QT_INCLUDES -F$qt_cv_libraries"
|
|
|
|
QT_CORE_INCLUDES="$QT_CORE_INCLUDES -I$qt_cv_libraries/QtCore.framework/Headers -F$qt_cv_libraries"
|
|
|
|
QT_LDFLAGS="-F$qt_cv_libraries"
|
|
|
|
QT_CORE_LDFLAGS="-F$qt_cv_libraries"
|
|
|
|
else
|
|
|
|
QT_LDFLAGS="-L$qt_cv_libraries"
|
|
|
|
QT_CORE_LDFLAGS="-L$qt_cv_libraries"
|
|
|
|
fi
|
2019-07-21 10:36:05 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
AC_SUBST(QT_INCLUDES)
|
|
|
|
AC_SUBST(QT_CORE_INCLUDES)
|
|
|
|
AC_SUBST(QT_LDFLAGS)
|
|
|
|
AC_SUBST(QT_CORE_LDFLAGS)
|
|
|
|
|
|
|
|
QT_CHECK_COMPILE
|
|
|
|
|
|
|
|
QT_LIB=$qt_cv_libname;
|
|
|
|
AC_SUBST(QT_LIB)
|
|
|
|
AC_SUBST(QT_CORE_LIB)
|
|
|
|
|
|
|
|
if test -n "$qt_cv_libname"; then
|
|
|
|
QT_GET_VERSION
|
|
|
|
fi
|
|
|
|
])
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
|
2024-06-14 17:17:27 +00:00
|
|
|
dnl QT_QMAKE_CONFIG(USE_QT6)
|
|
|
|
dnl
|
|
|
|
AC_DEFUN([QT_QMAKE_CONFIG],
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
[
|
2024-06-14 17:17:27 +00:00
|
|
|
dnl Use first suitable qmake in PATH
|
|
|
|
if test $1 = "yes"; then
|
|
|
|
qt_major=6
|
|
|
|
else
|
|
|
|
qt_major=5
|
|
|
|
fi
|
|
|
|
AC_CHECK_PROGS([QT_QMAKE], [qmake-qt$qt_major qmake$qt_major qmake], [], $PATH)
|
2024-06-18 19:56:15 +00:00
|
|
|
case ${host} in
|
|
|
|
*mingw*) ;;
|
|
|
|
*) QT_QMAKE="env LC_ALL=C.UTF-8 $QT_QMAKE" ;;
|
|
|
|
esac
|
2024-06-14 17:17:27 +00:00
|
|
|
AC_MSG_CHECKING([for Qt$qt_major])
|
2021-03-27 10:23:52 +00:00
|
|
|
qtver=`$QT_QMAKE -v | grep -o "Qt version ."`
|
2024-06-14 17:17:27 +00:00
|
|
|
if test "$qtver" = "Qt version $qt_major"; then
|
2021-06-15 09:40:27 +00:00
|
|
|
qt_cv_libexec=`$QT_QMAKE -query QT_INSTALL_LIBEXECS`
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
dnl Use a .pro file for getting qmake's variables
|
|
|
|
lyx_test_qt_dir=`mktemp -d`
|
|
|
|
lyx_test_qt_pro="$lyx_test_qt_dir/test.pro"
|
|
|
|
lyx_test_qt_mak="$lyx_test_qt_dir/Makefile"
|
|
|
|
cat > $lyx_test_qt_pro << EOF1
|
|
|
|
qtHaveModule(core): QT += core
|
|
|
|
percent.target = %
|
|
|
|
percent.commands = @echo -n "\$(\$(@))\ "
|
|
|
|
QMAKE_EXTRA_TARGETS += percent
|
2022-05-29 09:57:58 +00:00
|
|
|
QMAKE_PROJECT_DEPTH = 0
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
EOF1
|
2021-03-27 10:23:52 +00:00
|
|
|
$QT_QMAKE $lyx_test_qt_pro -o $lyx_test_qt_mak 1>/dev/null 2>&1
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
QT_CORE_INCLUDES=`cd $lyx_test_qt_dir; make -s -f $lyx_test_qt_mak INCPATH | sed 's/-I\. //g'`
|
|
|
|
qt_corelibs=`cd $lyx_test_qt_dir; make -s -f $lyx_test_qt_mak LIBS`
|
|
|
|
QT_CORE_LDFLAGS=`echo $qt_corelibs | tr ' ' '\n' | grep -e "^-L" | tr '\n' ' '`
|
|
|
|
if test -z "$QT_CORE_LDFLAGS"; then
|
2021-03-27 10:23:52 +00:00
|
|
|
QT_CORE_LDFLAGS="-L`$QT_QMAKE -query QT_INSTALL_LIBS`"
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
QT_CORE_LIB="$qt_corelibs"
|
|
|
|
else
|
|
|
|
QT_CORE_LIB=`echo $qt_corelibs | tr ' ' '\n' | grep -e "^-l" | tr '\n' ' '`
|
|
|
|
fi
|
|
|
|
if test -z "$QT_CORE_LIB"; then
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
else
|
|
|
|
AC_SUBST(QT_CORE_INCLUDES)
|
|
|
|
AC_SUBST(QT_CORE_LDFLAGS)
|
|
|
|
AC_SUBST(QT_CORE_LIB)
|
|
|
|
cat > $lyx_test_qt_pro << EOF2
|
2023-07-15 13:25:33 +00:00
|
|
|
QMAKE_EXTRA_VARIABLES = MISSING
|
2024-06-14 17:17:27 +00:00
|
|
|
percent.target = %
|
|
|
|
percent.commands = @echo -n "\$(\$(@))\ "
|
|
|
|
QMAKE_EXTRA_TARGETS += percent
|
|
|
|
QMAKE_PROJECT_DEPTH = 0
|
2023-07-15 13:25:33 +00:00
|
|
|
qtHaveModule(core) {QT += core} else {MISSING += core}
|
|
|
|
qtHaveModule(concurrent) {QT += concurrent} else {MISSING += concurrent}
|
2023-08-28 09:03:23 +00:00
|
|
|
qtHaveModule(gui) {QT += gui} else {MISSING += gui}
|
|
|
|
qtHaveModule(gui-private) {QT += gui-private} else {MISSING += gui-private}
|
2023-07-15 13:25:33 +00:00
|
|
|
qtHaveModule(svg) {QT += svg} else {MISSING += svg}
|
2024-06-23 16:37:25 +00:00
|
|
|
qtHaveModule(xml) {QT += xml} else {MISSING += xml}
|
2023-07-15 13:25:33 +00:00
|
|
|
qtHaveModule(widgets) {QT += widgets} else {MISSING += widgets}
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
EOF2
|
2024-06-14 17:17:27 +00:00
|
|
|
if test "$qt_major" = 6; then
|
|
|
|
cat >> $lyx_test_qt_pro << EOF3
|
|
|
|
qtHaveModule(svgwidgets) {QT += svgwidgets} else {MISSING += svgwidgets}
|
|
|
|
EOF3
|
|
|
|
else
|
|
|
|
cat >> $lyx_test_qt_pro << EOF4
|
|
|
|
qtHaveModule(x11extras) {QT += x11extras}
|
|
|
|
qtHaveModule(macextras) {QT += macextras}
|
|
|
|
qtHaveModule(winextras) {QT += winextras}
|
|
|
|
EOF4
|
|
|
|
fi
|
2021-03-27 10:23:52 +00:00
|
|
|
$QT_QMAKE $lyx_test_qt_pro -o $lyx_test_qt_mak 1>/dev/null 2>&1
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
QT_INCLUDES=`cd $lyx_test_qt_dir; make -s -f $lyx_test_qt_mak INCPATH | sed 's/-I\. //g'`
|
|
|
|
qt_guilibs=`cd $lyx_test_qt_dir; make -s -f $lyx_test_qt_mak LIBS`
|
|
|
|
QT_LDFLAGS=`echo $qt_guilibs | tr ' ' '\n' | grep -e "^-L" | tr '\n' ' '`
|
|
|
|
if test -z "$QT_LDFLAGS"; then
|
2021-03-27 10:23:52 +00:00
|
|
|
QT_LDFLAGS="-L`$QT_QMAKE -query QT_INSTALL_LIBS`"
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
QT_LIB="$qt_guilibs"
|
|
|
|
else
|
2021-10-16 17:09:30 +00:00
|
|
|
QT_LIB=`echo $qt_guilibs | tr ' ' '\n' | grep -v "^-L" | tr '\n' ' '`
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
fi
|
2024-06-14 17:17:27 +00:00
|
|
|
QTLIB_VERSION=`$QT_QMAKE -v | grep "Qt version" | sed -e 's/.*\([[0-9]]\.[[0-9]]*\.[[0-9]]*\).*/\1/'`
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
if test -z "$QT_LIB"; then
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
else
|
2023-07-15 13:25:33 +00:00
|
|
|
QT_MISSING=`cd $lyx_test_qt_dir; make -s -f $lyx_test_qt_mak EXPORT_MISSING | sed 's/^ *//'`
|
|
|
|
if test -n "$QT_MISSING"; then
|
2024-06-14 17:17:27 +00:00
|
|
|
AC_MSG_ERROR([Qt$qt_major module(s) $QT_MISSING not found.])
|
2023-07-15 13:25:33 +00:00
|
|
|
fi
|
2024-06-14 17:17:27 +00:00
|
|
|
QT5_X11_EXTRAS=`cd $lyx_test_qt_dir; make -s -f $lyx_test_qt_mak DEFINES | grep QT_X11EXTRAS_LIB`
|
|
|
|
if test -n "$QT5_X11_EXTRAS"; then
|
2024-06-17 19:57:24 +00:00
|
|
|
QT_LIB="$QT_LIB -lxcb"
|
2024-06-14 17:17:27 +00:00
|
|
|
AC_DEFINE(HAVE_QT5_X11_EXTRAS, 1,
|
|
|
|
[Define if you have the Qt5X11Extras module])
|
|
|
|
fi
|
|
|
|
AC_MSG_RESULT($QTLIB_VERSION)
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
AC_SUBST(QT_INCLUDES)
|
|
|
|
AC_SUBST(QT_LDFLAGS)
|
|
|
|
AC_SUBST(QT_LIB)
|
|
|
|
AC_SUBST(QTLIB_VERSION)
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
rm $lyx_test_qt_pro $lyx_test_qt_mak $lyx_test_qt_dir/.qmake.stash
|
|
|
|
rmdir $lyx_test_qt_dir
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
fi
|
2024-06-14 17:17:27 +00:00
|
|
|
if test -z "$QT_LIB"; then
|
|
|
|
LYX_WARNING([Unable to configure Qt$qt_major with qmake. Please report.])
|
|
|
|
fi
|
Allow compiling with Qt6
This commit allows compiling LyX with Qt6 when using autotools.
For a successful compilation the following 2 conditions must be met.
1) The Qt6 qmake has to come first in PATH, so that the command
"qmake -v | grep -o 'Qt version .'" returns "Qt version 6".
2) The --enable-qt6 switch has to be passed to the configure command.
If --enable-qt6 is used but Qt6 is not found, Qt5 is tried as a fallback.
If also Qt5 is not found, configuring for Qt4 is attempted.
If --enable-qt6 is not used, then things go as usual. This means that Qt5
is tried first and then Qt4, unless --disable-qt5 is used, in which case
Qt4 is directly attempted. This means that existing scripts should
continue working unmodified.
LyX should compile with Qt6 on windows and linux, and possibly also on
mac, but I could not test that. However, it is not guaranteed that it
works as it should. In particular I am not sure that I got right the
conversion from QRegExp to QRegularExpression. For sure, the syntax
highlighting seems to not work right. Someone in the know should take
a look at that. I am able to load documents and compile them but some
thourough testing is needed. However, when compiling for Qt5 or Qt4,
I tried to make sure that the functionality is preserved.
2021-03-15 16:09:09 +00:00
|
|
|
])
|