lyx_mirror/config/qt4.m4
Georg Baum fe5c73915e 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

210 lines
4.9 KiB
Plaintext

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'
do
QT4_TRY_LINK($libname)
if test -n "$qt4_cv_libname"; then
QT4_CORE_LIB="$qt4_cv_libname"
break;
fi
done
for libname in '-lQtCore -lQtGui' \
'-lQtCore4 -lQtGui4'
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
])
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, [ --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. ],
[ qt4_cv_includes=`eval echo "$withval"` ])
AC_ARG_WITH(qt4-libraries, [ --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_CLEAN_NAMESPACE -DQT_GENUINE_STR -DQT_NO_STL -DQT_NO_KEYWORDS"
case ${host} in
*mingw*) QT4_CPPFLAGS="-DQT_DLL $QT4_CPPFLAGS";;
*cygwin*)
if test "x$with_x" = xno ; then
QT4_CPPFLAGS="$QT4_CPPFLAGS -DQ_CYGWIN_WIN"
fi;;
esac
AC_SUBST(QT4_CPPFLAGS)
dnl Check if it possible to do a pkg-config
QT4_DO_PKG_CONFIG
if test "$pkg_failed" != "no" ; then
QT4_DO_MANUAL_CONFIG
fi
AC_PATH_PROGS(MOC4, [moc-qt4 moc],[],$qt4_cv_bin:$PATH)
AC_PATH_PROGS(UIC4, [uic-qt4 uic],[],$qt4_cv_bin:$PATH)
])
AC_DEFUN([QT4_DO_PKG_CONFIG],
[
PKG_PROG_PKG_CONFIG
save_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
if test -n "$qt4_cv_dir" ; then
PKG_CONFIG_PATH=$qt4_cv_dir/lib:$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)
fi
PKG_CONFIG_PATH=$save_PKG_CONFIG_PATH
])
AC_DEFUN([QT4_DO_MANUAL_CONFIG],
[
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
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
QT4_LDFLAGS="-L$qt4_cv_libraries"
QT4_CORE_LDFLAGS="-L$qt4_cv_libraries"
fi
AC_SUBST(QT4_INCLUDES)
AC_SUBST(QT4_CORE_INCLUDES)
AC_SUBST(QT4_LDFLAGS)
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
fi
])