lyx_mirror/config/qt4.m4

248 lines
5.9 KiB
Plaintext
Raw Normal View History

dnl check a particular libname
AC_DEFUN([QT4_TRY_LINK],
[
SAVE_LIBS="$LIBS"
LIBS="$LIBS $1"
AC_TRY_LINK([
#include <qglobal.h>
#include <qstring.h>
],
[
QString s("mangle_failure");
#if (QT_VERSION < 400)
break_me_(\\\);
#endif
],
qt4_cv_libname=$1,
)
LIBS="$SAVE_LIBS"
])
dnl check we can do a compile
AC_DEFUN([QT4_CHECK_COMPILE],
[
AC_MSG_CHECKING([for Qt 4 library name])
AC_CACHE_VAL(qt4_cv_libname,
[
AC_LANG_CPLUSPLUS
SAVE_CXXFLAGS=$CXXFLAGS
CXXFLAGS="$CXXFLAGS $QT4_INCLUDES $QT4_LDFLAGS"
for libname in -lQtCore -lQtCore4 '-framework QtCore'
Make libQtCore a support library like boost and implement encoding conversion from/to the local 8bit encoding with it. Only the autotools build system is updated, scons and cmake users need to add qt4 cpp flags when compiling libsupport, and link libsupport against libQtCore. * src/frontends/qt4/qt_helpers.[Ch] (toqstr, qchar_to_ucs4, ucs4_to_qchar, ucs4_to_qstring, qstring_to_ucs4, fromqstr): Move these qstring conversion functions from here ... * src/support/qstring_helpers.[Ch] ... to these new files * src/support/docstring.[Ch] (from_local8bit): new conversion function from local 8bit encoding to ucs4 (to_local8bit): new conversion function from ucs4 to local 8bit encoding to ucs4 (to_local8bit_failure): exception that is thrown by to_local8bit if the argument cannot be converted to the local encoding * src/support/filename.C (FileName::toFilesystemEncoding): implement with the help of QFile * src/support/Makefile.am: Add new files, qt4 cpp flags and link against libQtCore * src/client/client.C: Convert commandline input from local encoding to ucs4. Convert stuff that is sent to to the server to utf8, because LyX interprets it as utf8 on the other end of the pipe. * src/lyx_main.C (LyX::exec): convert commandline input from local encoding to utf8 (LyX::init): ditto (LyX::easyParse): ditto * development/scons/scons_manifest.py: Add new files * config/qt4.m4: Define new variables QT4_CORE_INCLUDES, QT4_CORE_LDFLAGS and QT4_CORE_LIB git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16257 a592a061-630c-0410-9148-cb99ea01b6c8
2006-12-12 20:19:46 +00:00
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' \
'-framework QtCore -framework QtGui'
do
QT4_TRY_LINK($libname)
if test -n "$qt4_cv_libname"; then
break;
fi
done
CXXFLAGS=$SAVE_CXXFLAGS
])
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
else
AC_MSG_RESULT([$qt4_cv_libname])
fi
])
AC_DEFUN([QT4_FIND_TOOL],
[
$1=
if test -n "$qt4_cv_bin" ; then
AC_PATH_PROGS($1, [$2], [], $qt4_cv_bin)
fi
if test -z "$$1"; then
AC_PATH_PROGS($1, [$2-qt4 $2],[],$PATH)
fi
if test -z "$$1"; then
AC_MSG_ERROR([cannot find $2 binary.])
fi
])
dnl get Qt version we're using
AC_DEFUN([QT4_GET_VERSION],
[
AC_CACHE_CHECK([Qt 4 version],lyx_cv_qt4version,
[
AC_LANG_CPLUSPLUS
SAVE_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $QT4_INCLUDES"
cat > conftest.$ac_ext <<EOF
#line __oline__ "configure"
#include "confdefs.h"
#include <qglobal.h>
"%%%"QT_VERSION_STR"%%%"
EOF
lyx_cv_qt4version=`(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
])
QT4_VERSION=$lyx_cv_qt4version
AC_SUBST(QT4_VERSION)
])
dnl start here
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, [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, [AC_HELP_STRING([--with-qt4-includes], [where the Qt 4 includes are])],
[ qt4_cv_includes=`eval echo "$withval"` ])
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
if test -z "$qt4_cv_dir"; then
qt4_cv_dir=$QT4DIR
fi
dnl derive inc/lib if needed
if test -n "$qt4_cv_dir"; then
if test -z "$qt4_cv_includes"; then
qt4_cv_includes=$qt4_cv_dir/include
fi
if test -z "$qt4_cv_libraries"; then
qt4_cv_libraries=$qt4_cv_dir/lib
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
QT4_FIND_TOOL([MOC4], [moc])
QT4_FIND_TOOL([UIC4], [uic])
QT4_FIND_TOOL([RCC4], [rcc])
])
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
Make libQtCore a support library like boost and implement encoding conversion from/to the local 8bit encoding with it. Only the autotools build system is updated, scons and cmake users need to add qt4 cpp flags when compiling libsupport, and link libsupport against libQtCore. * src/frontends/qt4/qt_helpers.[Ch] (toqstr, qchar_to_ucs4, ucs4_to_qchar, ucs4_to_qstring, qstring_to_ucs4, fromqstr): Move these qstring conversion functions from here ... * src/support/qstring_helpers.[Ch] ... to these new files * src/support/docstring.[Ch] (from_local8bit): new conversion function from local 8bit encoding to ucs4 (to_local8bit): new conversion function from ucs4 to local 8bit encoding to ucs4 (to_local8bit_failure): exception that is thrown by to_local8bit if the argument cannot be converted to the local encoding * src/support/filename.C (FileName::toFilesystemEncoding): implement with the help of QFile * src/support/Makefile.am: Add new files, qt4 cpp flags and link against libQtCore * src/client/client.C: Convert commandline input from local encoding to ucs4. Convert stuff that is sent to to the server to utf8, because LyX interprets it as utf8 on the other end of the pipe. * src/lyx_main.C (LyX::exec): convert commandline input from local encoding to utf8 (LyX::init): ditto (LyX::easyParse): ditto * development/scons/scons_manifest.py: Add new files * config/qt4.m4: Define new variables QT4_CORE_INCLUDES, QT4_CORE_LDFLAGS and QT4_CORE_LIB git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16257 a592a061-630c-0410-9148-cb99ea01b6c8
2006-12-12 20:19:46 +00:00
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)
dnl LIBS="$LIBS `$PKG_CONFIG --libs-only-other QtCore QtGui`"
fi
PKG_CONFIG_PATH=$save_PKG_CONFIG_PATH
dnl Actually, the values of QT4_LIB and QT4_CORE_LIB can be completely wrong on OS X,
dnl where everything goes to --libs-only-other.
dnl As a quick workaround, let us assign better values. A better patch exists
dnl for next cycle.
QT4_CORE_LIB=$QT4_CORE_LIBS
QT4_CORE_LDFLAGS=
QT4_LIB=$QT4_FRONTEND_LIBS
QT4_LDFLAGS=
])
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) LYX_ERROR([Cannot find X window libraries and/or headers.]);;
disable) ;;
esac
dnl flags for compilation
QT4_INCLUDES=
QT4_LDFLAGS=
Make libQtCore a support library like boost and implement encoding conversion from/to the local 8bit encoding with it. Only the autotools build system is updated, scons and cmake users need to add qt4 cpp flags when compiling libsupport, and link libsupport against libQtCore. * src/frontends/qt4/qt_helpers.[Ch] (toqstr, qchar_to_ucs4, ucs4_to_qchar, ucs4_to_qstring, qstring_to_ucs4, fromqstr): Move these qstring conversion functions from here ... * src/support/qstring_helpers.[Ch] ... to these new files * src/support/docstring.[Ch] (from_local8bit): new conversion function from local 8bit encoding to ucs4 (to_local8bit): new conversion function from ucs4 to local 8bit encoding to ucs4 (to_local8bit_failure): exception that is thrown by to_local8bit if the argument cannot be converted to the local encoding * src/support/filename.C (FileName::toFilesystemEncoding): implement with the help of QFile * src/support/Makefile.am: Add new files, qt4 cpp flags and link against libQtCore * src/client/client.C: Convert commandline input from local encoding to ucs4. Convert stuff that is sent to to the server to utf8, because LyX interprets it as utf8 on the other end of the pipe. * src/lyx_main.C (LyX::exec): convert commandline input from local encoding to utf8 (LyX::init): ditto (LyX::easyParse): ditto * development/scons/scons_manifest.py: Add new files * config/qt4.m4: Define new variables QT4_CORE_INCLUDES, QT4_CORE_LDFLAGS and QT4_CORE_LIB git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16257 a592a061-630c-0410-9148-cb99ea01b6c8
2006-12-12 20:19:46 +00:00
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
QT4_INCLUDES="$QT4_INCLUDES -I$qt4_cv_includes/$i"
done
Make libQtCore a support library like boost and implement encoding conversion from/to the local 8bit encoding with it. Only the autotools build system is updated, scons and cmake users need to add qt4 cpp flags when compiling libsupport, and link libsupport against libQtCore. * src/frontends/qt4/qt_helpers.[Ch] (toqstr, qchar_to_ucs4, ucs4_to_qchar, ucs4_to_qstring, qstring_to_ucs4, fromqstr): Move these qstring conversion functions from here ... * src/support/qstring_helpers.[Ch] ... to these new files * src/support/docstring.[Ch] (from_local8bit): new conversion function from local 8bit encoding to ucs4 (to_local8bit): new conversion function from ucs4 to local 8bit encoding to ucs4 (to_local8bit_failure): exception that is thrown by to_local8bit if the argument cannot be converted to the local encoding * src/support/filename.C (FileName::toFilesystemEncoding): implement with the help of QFile * src/support/Makefile.am: Add new files, qt4 cpp flags and link against libQtCore * src/client/client.C: Convert commandline input from local encoding to ucs4. Convert stuff that is sent to to the server to utf8, because LyX interprets it as utf8 on the other end of the pipe. * src/lyx_main.C (LyX::exec): convert commandline input from local encoding to utf8 (LyX::init): ditto (LyX::easyParse): ditto * development/scons/scons_manifest.py: Add new files * config/qt4.m4: Define new variables QT4_CORE_INCLUDES, QT4_CORE_LDFLAGS and QT4_CORE_LIB git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16257 a592a061-630c-0410-9148-cb99ea01b6c8
2006-12-12 20:19:46 +00:00
QT4_CORE_INCLUDES="-I$qt4_cv_includes -I$qt4_cv_includes/QtCore"
fi
if test -n "$qt4_cv_libraries"; then
QT4_LDFLAGS="-L$qt4_cv_libraries"
Make libQtCore a support library like boost and implement encoding conversion from/to the local 8bit encoding with it. Only the autotools build system is updated, scons and cmake users need to add qt4 cpp flags when compiling libsupport, and link libsupport against libQtCore. * src/frontends/qt4/qt_helpers.[Ch] (toqstr, qchar_to_ucs4, ucs4_to_qchar, ucs4_to_qstring, qstring_to_ucs4, fromqstr): Move these qstring conversion functions from here ... * src/support/qstring_helpers.[Ch] ... to these new files * src/support/docstring.[Ch] (from_local8bit): new conversion function from local 8bit encoding to ucs4 (to_local8bit): new conversion function from ucs4 to local 8bit encoding to ucs4 (to_local8bit_failure): exception that is thrown by to_local8bit if the argument cannot be converted to the local encoding * src/support/filename.C (FileName::toFilesystemEncoding): implement with the help of QFile * src/support/Makefile.am: Add new files, qt4 cpp flags and link against libQtCore * src/client/client.C: Convert commandline input from local encoding to ucs4. Convert stuff that is sent to to the server to utf8, because LyX interprets it as utf8 on the other end of the pipe. * src/lyx_main.C (LyX::exec): convert commandline input from local encoding to utf8 (LyX::init): ditto (LyX::easyParse): ditto * development/scons/scons_manifest.py: Add new files * config/qt4.m4: Define new variables QT4_CORE_INCLUDES, QT4_CORE_LDFLAGS and QT4_CORE_LIB git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16257 a592a061-630c-0410-9148-cb99ea01b6c8
2006-12-12 20:19:46 +00:00
QT4_CORE_LDFLAGS="-L$qt4_cv_libraries"
fi
AC_SUBST(QT4_INCLUDES)
Make libQtCore a support library like boost and implement encoding conversion from/to the local 8bit encoding with it. Only the autotools build system is updated, scons and cmake users need to add qt4 cpp flags when compiling libsupport, and link libsupport against libQtCore. * src/frontends/qt4/qt_helpers.[Ch] (toqstr, qchar_to_ucs4, ucs4_to_qchar, ucs4_to_qstring, qstring_to_ucs4, fromqstr): Move these qstring conversion functions from here ... * src/support/qstring_helpers.[Ch] ... to these new files * src/support/docstring.[Ch] (from_local8bit): new conversion function from local 8bit encoding to ucs4 (to_local8bit): new conversion function from ucs4 to local 8bit encoding to ucs4 (to_local8bit_failure): exception that is thrown by to_local8bit if the argument cannot be converted to the local encoding * src/support/filename.C (FileName::toFilesystemEncoding): implement with the help of QFile * src/support/Makefile.am: Add new files, qt4 cpp flags and link against libQtCore * src/client/client.C: Convert commandline input from local encoding to ucs4. Convert stuff that is sent to to the server to utf8, because LyX interprets it as utf8 on the other end of the pipe. * src/lyx_main.C (LyX::exec): convert commandline input from local encoding to utf8 (LyX::init): ditto (LyX::easyParse): ditto * development/scons/scons_manifest.py: Add new files * config/qt4.m4: Define new variables QT4_CORE_INCLUDES, QT4_CORE_LDFLAGS and QT4_CORE_LIB git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16257 a592a061-630c-0410-9148-cb99ea01b6c8
2006-12-12 20:19:46 +00:00
AC_SUBST(QT4_CORE_INCLUDES)
AC_SUBST(QT4_LDFLAGS)
Make libQtCore a support library like boost and implement encoding conversion from/to the local 8bit encoding with it. Only the autotools build system is updated, scons and cmake users need to add qt4 cpp flags when compiling libsupport, and link libsupport against libQtCore. * src/frontends/qt4/qt_helpers.[Ch] (toqstr, qchar_to_ucs4, ucs4_to_qchar, ucs4_to_qstring, qstring_to_ucs4, fromqstr): Move these qstring conversion functions from here ... * src/support/qstring_helpers.[Ch] ... to these new files * src/support/docstring.[Ch] (from_local8bit): new conversion function from local 8bit encoding to ucs4 (to_local8bit): new conversion function from ucs4 to local 8bit encoding to ucs4 (to_local8bit_failure): exception that is thrown by to_local8bit if the argument cannot be converted to the local encoding * src/support/filename.C (FileName::toFilesystemEncoding): implement with the help of QFile * src/support/Makefile.am: Add new files, qt4 cpp flags and link against libQtCore * src/client/client.C: Convert commandline input from local encoding to ucs4. Convert stuff that is sent to to the server to utf8, because LyX interprets it as utf8 on the other end of the pipe. * src/lyx_main.C (LyX::exec): convert commandline input from local encoding to utf8 (LyX::init): ditto (LyX::easyParse): ditto * development/scons/scons_manifest.py: Add new files * config/qt4.m4: Define new variables QT4_CORE_INCLUDES, QT4_CORE_LDFLAGS and QT4_CORE_LIB git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16257 a592a061-630c-0410-9148-cb99ea01b6c8
2006-12-12 20:19:46 +00:00
AC_SUBST(QT4_CORE_LDFLAGS)
QT4_CHECK_COMPILE
QT4_LIB=$qt4_cv_libname;
AC_SUBST(QT4_LIB)
Make libQtCore a support library like boost and implement encoding conversion from/to the local 8bit encoding with it. Only the autotools build system is updated, scons and cmake users need to add qt4 cpp flags when compiling libsupport, and link libsupport against libQtCore. * src/frontends/qt4/qt_helpers.[Ch] (toqstr, qchar_to_ucs4, ucs4_to_qchar, ucs4_to_qstring, qstring_to_ucs4, fromqstr): Move these qstring conversion functions from here ... * src/support/qstring_helpers.[Ch] ... to these new files * src/support/docstring.[Ch] (from_local8bit): new conversion function from local 8bit encoding to ucs4 (to_local8bit): new conversion function from ucs4 to local 8bit encoding to ucs4 (to_local8bit_failure): exception that is thrown by to_local8bit if the argument cannot be converted to the local encoding * src/support/filename.C (FileName::toFilesystemEncoding): implement with the help of QFile * src/support/Makefile.am: Add new files, qt4 cpp flags and link against libQtCore * src/client/client.C: Convert commandline input from local encoding to ucs4. Convert stuff that is sent to to the server to utf8, because LyX interprets it as utf8 on the other end of the pipe. * src/lyx_main.C (LyX::exec): convert commandline input from local encoding to utf8 (LyX::init): ditto (LyX::easyParse): ditto * development/scons/scons_manifest.py: Add new files * config/qt4.m4: Define new variables QT4_CORE_INCLUDES, QT4_CORE_LDFLAGS and QT4_CORE_LIB git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16257 a592a061-630c-0410-9148-cb99ea01b6c8
2006-12-12 20:19:46 +00:00
AC_SUBST(QT4_CORE_LIB)
if test -n "$qt4_cv_libname"; then
QT4_GET_VERSION
fi
])