X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=config_files%2Fcheck_qt.m4;fp=config_files%2Fcheck_qt.m4;h=5859b6afce7671fdbb82edea677fbff19921a807;hb=202e9749e0a4f42f18f561be5ed7f4f14d52ddf9;hp=ab5348319f74ebd2bcf6e7cfd168e4f63b5791bd;hpb=f72f139d4fdf5da305b22f8a3c44d57d95534c75;p=tools%2Fhxx2salome.git diff --git a/config_files/check_qt.m4 b/config_files/check_qt.m4 index ab53483..5859b6a 100644 --- a/config_files/check_qt.m4 +++ b/config_files/check_qt.m4 @@ -1,24 +1,37 @@ -dnl Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -dnl -dnl This library is free software; you can redistribute it and/or -dnl modify it under the terms of the GNU Lesser General Public -dnl License as published by the Free Software Foundation; either -dnl version 2.1 of the License. -dnl -dnl This library is distributed in the hope that it will be useful, -dnl but WITHOUT ANY WARRANTY; without even the implied warranty of -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -dnl Lesser General Public License for more details. -dnl -dnl You should have received a copy of the GNU Lesser General Public -dnl License along with this library; if not, write to the Free Software -dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -dnl -dnl See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +dnl Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE dnl +dnl Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS dnl +dnl This library is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Lesser General Public +dnl License as published by the Free Software Foundation; either +dnl version 2.1 of the License. dnl +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Lesser General Public License for more details. +dnl +dnl You should have received a copy of the GNU Lesser General Public +dnl License along with this library; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +dnl +dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +dnl +dnl OPTIONS_QT +dnl ------------------------------------------------------------------------ +dnl Adds the --with-qt=path +dnl +AC_DEFUN([OPTIONS_QT], [ + AC_ARG_WITH([qt], + [AC_HELP_STRING([--with-qt], [Possible usage: + "Qt_Install_Path" - prefix to path where Qt was installd; + "" or "yes" or "auto" - means seaching installed Qt product in the system (checking $QTDIR and then - standard system paths ); + "no" - not use Qt product (is not supported) + By default "" option is used)])], + [with_qt=$withval], [with_qt=""]) +]) AC_DEFUN([CHECK_QT],[ AC_REQUIRE([AC_PROG_CC])dnl @@ -28,6 +41,8 @@ AC_REQUIRE([AC_PROG_CXXCPP])dnl AC_REQUIRE([CHECK_OPENGL])dnl AC_REQUIRE([AC_LINKER_OPTIONS])dnl +AC_REQUIRE([OPTIONS_QT])dnl + AC_CHECKING(for Qt) if test "x$OpenGL_ok" != "xyes" ; then @@ -39,20 +54,94 @@ qt_ok=yes AC_LANG_SAVE AC_LANG_CPLUSPLUS +dnl QT install dir +if test -z $with_qt ; then + with_qt="" +fi +if test "x$with_qt" = "xyes" ; then + dnl in case user wrote --with-qt=yes + with_qt="" +fi +if test "x$with_qt" = "xauto" ; then + dnl in case user wrote --with-qt=auto + with_qt="" +fi +if test "x$with_qt" = "xno" ; then + dnl in case user wrote --with-qt=no + with_qt="" + AC_MSG_WARN(Value no, specified for option --with-qt, is not supported) +fi + +if test "x$with_qt" != "x" ; then + dnl Using "--with-qt" prefix path + QTDIR="$with_qt" +else + if test -z $QTDIR ; then + AC_MSG_WARN(undefined QTDIR variable which specify where Qt product was installed) + for d in /usr/local/lib/qt4 /usr/lib/qt4 ; do + if test -f ${d}/include/Qt/qconfig.h ; then + AC_MSG_RESULT(trying ${d}) + QTDIR="${d}" + break + else + if test -f ${d}/include/qconfig.h ; then + AC_MSG_RESULT(trying ${d}) + QTDIR="${d}" + break + fi + fi + done + else + dnl Using QTDIR environment variable + AC_MSG_RESULT(QTDIR is $QTDIR) + fi +fi + +# +# check QTDIR environment variable +# if test "x$QTDIR" = "x" then - AC_MSG_RESULT(please define QTDIR variable) + AC_MSG_RESULT(Please define correct path in "--with-qt" option or use correct $QTDIR variable) qt_ok=no -else - AC_MSG_RESULT(QTDIR is $QTDIR) +fi + +# +# check Qt version +# +if test "x$qt_ok" = "xyes" +then qt_inc_ok=no QTINC="" - AC_CHECK_FILE(${QTDIR}/include/qt3/qglobal.h,QTINC="/qt3",QTINC="") - QT_VERS=`grep "QT_VERSION_STR" ${QTDIR}/include${QTINC}/qglobal.h | sed -e 's%^#define QT_VERSION_STR\([[:space:]]*\)%%g' -e 's%\"%%g'` - AC_MSG_RESULT(Qt version is $QT_VERS) - QT_VERS="Qt_"`echo $QT_VERS | sed -e 's%\"%%g' -e 's%\.%_%g'` + AC_CHECK_FILE(${QTDIR}/include/qt4/QtCore/qglobal.h,QTINC="/qt4",QTINC="") + if test "x$QTINC" = "x" + then + AC_CHECK_FILE(${QTDIR}/include${QTINC}/QtCore/qglobal.h,qt_inc_ok=yes,qt_inc_ok=no) + else + qt_inc_ok=yes + fi + if test "x$qt_inc_ok" = "xyes" + then + AC_MSG_CHECKING(whether Qt version >= 4.0) + QT_VERSION=`grep "QT_VERSION_STR" ${QTDIR}/include${QTINC}/QtCore/qglobal.h | sed -e 's%^#define QT_VERSION_STR[[:space:]]*\"\([[:digit:]\.]*\)\"%\1%g'` + QT_VERSION_ID=`echo $QT_VERSION | awk -F. '{v=$[1]*10000+$[2]*100+$[3];print v}'` + if test $QT_VERSION_ID -ge 40000 + then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + qt_ok=no + fi + AC_MSG_CHECKING(Qt version) + AC_MSG_RESULT($QT_VERSION) + else + qt_ok=no + fi fi +# +# check moc presence (meta-object compiler) +# if test "x$qt_ok" = "xyes" then if test -f ${QTDIR}/bin/moc @@ -64,13 +153,31 @@ then if test "x$MOC" = "x" then qt_ok=no - AC_MSG_RESULT(moc qt-compiler not in PATH variable) + AC_MSG_RESULT(moc (Qt meta-object compiler) is not in the PATH variable) else qt_ok=yes - AC_MSG_RESULT(moc found) + AC_MSG_RESULT(moc (Qt meta-object compiler) is found) + fi + + if test "x$qt_ok" = "xyes" + then + dnl check moc version + AC_MSG_CHECKING(cheching equality Qt and moc tool version) + MOC_VERSION=`$MOC -v 2>&1 | awk 'BEGIN{FS="[[ ()]]"};{print $(NF-1)}'` + if test "x$QT_VERSION" = "x$MOC_VERSION" + then + AC_MSG_RESULT(yes) + qt_ok=yes + else + AC_MSG_RESULT(moc tool and Qt product are inpompatible $MOC_VERSION) + qt_ok=no + fi fi fi +# +# check uic presence (user interface compiler) +# if test "x$qt_ok" = "xyes" then if test -f ${QTDIR}/bin/uic @@ -82,94 +189,227 @@ then if test "x$UIC" = "x" then qt_ok=no - AC_MSG_RESULT(uic qt-interface compiler not in PATH variable) + AC_MSG_RESULT(uic (Qt user interface compiler) is not in the PATH variable) else qt_ok=yes - AC_MSG_RESULT(uic found) + AC_MSG_RESULT(uic (Qt user interface compiler) is found) fi fi -AC_SUBST(QTDIR) -QT_ROOT=$QTDIR +# +# check rcc presence (resources compiler) +# +if test "x$qt_ok" = "xyes" +then + if test -f ${QTDIR}/bin/rcc + then + QRCC=${QTDIR}/bin/rcc + else + AC_PATH_PROG(QRCC, rcc) + fi + if test "x$QRCC" = "x" + then + qt_ok=no + AC_MSG_RESULT(rcc (Qt resources compiler) is not in the PATH variable) + else + qt_ok=yes + AC_MSG_RESULT(rcc (Qt resources compiler) is found) + fi + + if test "x$qt_ok" = "xyes" + then + dnl check rcc version + AC_MSG_CHECKING(cheching equality Qt and rcc tool version) + QRCC_VERSION=`$QRCC -v 2>&1 | awk '{print $NF}'` + if test "x$QT_VERSION" = "x$QRCC_VERSION" + then + AC_MSG_RESULT(yes) + qt_ok=yes + else + AC_MSG_RESULT(rcc tool and Qt product are inpompatible) + qt_ok=no + fi + fi +fi +# +# check lrelease presence (translation files compiler) +# if test "x$qt_ok" = "xyes" then - CPPFLAGS_old=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$QTDIR/include${QTINC}" + if test -f ${QTDIR}/bin/lrelease + then + LRELEASE=${QTDIR}/bin/lrelease + else + AC_PATH_PROG(LRELEASE, lrelease) + fi + if test "x$LRELEASE" = "x" + then + qt_ok=no + AC_MSG_RESULT(lrelease (Qt translation files compiler) is not in the PATH variable) + else + qt_ok=yes + AC_MSG_RESULT(lrelease (Qt translation files compiler) is found) + fi + + if test "x$qt_ok" = "xyes" + then + dnl check lrelease version + AC_MSG_CHECKING( equality of Qt and lrelease tool version) + LRELEASE_VERSION=`$LRELEASE -version 2>&1 | awk '{print $NF}'` + if test "x$QT_VERSION" = "x$LRELEASE_VERSION" + then + AC_MSG_RESULT(yes) + qt_ok=yes + else + AC_MSG_RESULT(lrelease tool and Qt product are inpompatible) + qt_ok=no + fi + fi +fi - AC_LANG_CPLUSPLUS - AC_CHECK_HEADER(qaction.h,qt_ok=yes ,qt_ok=no) +QT_ROOT=$QTDIR - CPPFLAGS=$CPPFLAGS_old +# +# check Qt header files +# +if test "x$qt_ok" = "xyes" +then + AC_CHECKING(include Qt header files) - AC_MSG_CHECKING(include of qt headers) + CPPFLAGS_old=$CPPFLAGS + CPPFLAGS="$CPPFLAGS -I${QTDIR}/include${QTINC} -I${QTDIR}/include${QTINC}/QtCore" + AC_CHECK_HEADER(QObject,qt_ok=yes,qt_ok=no) + CPPFLAGS=$CPPFLAGS_old if test "x$qt_ok" = "xno" then - AC_MSG_RESULT(qt headers not found, or too old qt version, in $QTDIR/include) - AC_MSG_RESULT(QTDIR environment variable may be wrong) + AC_MSG_RESULT(qt header files are not found in $QTDIR/include${QTINC}/QtCore) + AC_MSG_RESULT(QTDIR environment variable may be wrong (probably too old Qt version)) else - AC_MSG_RESULT(yes) - QT_INCLUDES="-I${QT_ROOT}/include${QTINC} -DQT_THREAD_SUPPORT -DQT_CLEAN_NAMESPACE" - QT_MT_INCLUDES="-I${QT_ROOT}/include${QTINC} -DQT_THREAD_SUPPORT -DQT_CLEAN_NAMESPACE" + AC_MSG_RESULT(qt header files seem to be OK) + QT_INCLUDES="-I${QTDIR}/include${QTINC}" + # user header files + QT_INCLUDES="${QT_INCLUDES} -I${QTDIR}/include${QTINC}/QtCore" + QT_INCLUDES="${QT_INCLUDES} -I${QTDIR}/include${QTINC}/QtGui" + QT_INCLUDES="${QT_INCLUDES} -I${QTDIR}/include${QTINC}/QtOpenGL" + QT_INCLUDES="${QT_INCLUDES} -I${QTDIR}/include${QTINC}/QtXml" + # not used currently header files (uncomment if required) + #QT_INCLUDES="${QT_INCLUDES} -I$(QTDIR)/include${QTINC}/QtAssistant" + #QT_INCLUDES="${QT_INCLUDES} -I$(QTDIR)/include${QTINC}/QtDBus" + #QT_INCLUDES="${QT_INCLUDES} -I$(QTDIR)/include${QTINC}/QtDesigner" + #QT_INCLUDES="${QT_INCLUDES} -I$(QTDIR)/include${QTINC}/QtNetwork" + #QT_INCLUDES="${QT_INCLUDES} -I$(QTDIR)/include${QTINC}/QtSql" + #QT_INCLUDES="${QT_INCLUDES} -I$(QTDIR)/include${QTINC}/QtSvg" + #QT_INCLUDES="${QT_INCLUDES} -I$(QTDIR)/include${QTINC}/QtTest" + #QT_INCLUDES="${QT_INCLUDES} -I$(QTDIR)/include${QTINC}/QtUiTools" + + QT_ASSISTANT_INCLUDES="${QT_ASSISTANT_INCLUDES} -I${QTDIR}/include${QTINC}/QtAssistant" + QT_ASSISTANT_INCLUDES="${QT_ASSISTANT_INCLUDES} -I${QTDIR}/include${QTINC}/QtNetwork" + + # this flag is obsolete with Qt 4 + QT_MT_INCLUDES="$QT_INCLUDES" fi fi +# +# test Qt libraries +# if test "x$qt_ok" = "xyes" then - AC_MSG_CHECKING(linking qt library) + AC_MSG_CHECKING(linking against Qt library) + + CXXFLAGS_old=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $QT_INCLUDES" + LIBS_old=$LIBS if test "x$QTDIR" = "x/usr" then - LIBS="$LIBS -lqt-mt $OGL_LIBS" + QT_LIB_DIR="" + elif test -d ${QTDIR}/lib; then + QT_LIB_DIR="-L$QTDIR/lib" + elif test -d ${QTDIR}/lib64; then + QT_LIB_DIR="-L$QTDIR/lib64" else - LIBS="$LIBS -L$QTDIR/lib${LIB_LOCATION_SUFFIX} -lqt-mt $OGL_LIBS" + AC_MSG_ERROR(Can't detect of Qt library directory ) + qt_ok=no fi - - CXXFLAGS_old=$CXXFLAGS - CXXFLAGS="$CXXFLAGS $QT_INCLUDES" + LIBS="$LIBS $QT_LIB_DIR -lQtCore" AC_CACHE_VAL(salome_cv_lib_qt,[ AC_TRY_LINK( -#include +#include , int n; char **s; - QApplication a(n, s); + QCoreApplication a(n, s); a.exec();, eval "salome_cv_lib_qt=yes",eval "salome_cv_lib_qt=no") ]) qt_ok="$salome_cv_lib_qt" + # BEGIN: for CCRT (installation of qt have only a "lib" directory) if test "x$qt_ok" = "xno" then + QT_LIB_DIR="-L$QTDIR/lib" + LIBS="$LIBS_old $QT_LIB_DIR -lQtCore" + + AC_CACHE_VAL(salome_cv_lib_qt,[ + AC_TRY_LINK( +#include +, int n; + char **s; + QCoreApplication a(n, s); + a.exec();, + eval "salome_cv_lib_qt=yes",eval "salome_cv_lib_qt=no") + ]) + qt_ok="$salome_cv_lib_qt" + fi + # END: for CCRT + + if test "x$qt_ok" = "xno" + then + AC_MSG_RESULT(no) AC_MSG_RESULT(unable to link with qt library) - AC_MSG_RESULT(QTDIR environment variable may be wrong) + AC_MSG_RESULT(QTDIR environment variable may be wrong (probably too old Qt version)) else AC_MSG_RESULT(yes) - if test "x$QTDIR" = "x/usr" - then - QT_LIBS=" -lqt-mt" - QT_MT_LIBS=" -lqt-mt" - else - QT_LIBS="-L$QTDIR/lib${LIB_LOCATION_SUFFIX} -lqt-mt" - QT_MT_LIBS="-L$QTDIR/lib${LIB_LOCATION_SUFFIX} -lqt-mt" - fi + # core libs + QT_CORE_LIBS="$QT_LIB_DIR -lQtCore -lQtXml" + # gui libs + QT_GUI_LIBS="$QT_LIB_DIR -lQtGui -lQtOpenGL" + # other libs (currently not used) + QT_OTHER_LIBS="$QT_LIB_DIR" + # other libs (can be used if necessary) + #QT_OTHER_LIBS="$QT_LIB_DIR -lQt3Support -lQtAssistantClient -lQtDesigner -lQtNetwork -lQtSql -lQtSvg -lQtTest -ltQtUiTools" + QT_ASSISTANT_LIBS="$QT_LIB_DIR -lQtAssistantClient -lQtNetwork" + # all libs + QT_LIBS="$QT_CORE_LIBS $QT_GUI_LIBS $QT_OTHER_LIBS" + # this flag is obsolete with Qt 4 + QT_MT_LIBS="$QT_LIBS" fi - LIBS=$LIBS_old CXXFLAGS=$CXXFLAGS_old - fi +AC_SUBST(QTDIR) AC_SUBST(MOC) AC_SUBST(UIC) +AC_SUBST(QRCC) +AC_SUBST(LRELEASE) AC_SUBST(QT_ROOT) AC_SUBST(QT_INCLUDES) AC_SUBST(QT_MT_INCLUDES) +AC_SUBST(QT_ASSISTANT_INCLUDES) +AC_SUBST(QT_LIB_DIR) +AC_SUBST(QT_CORE_LIBS) +AC_SUBST(QT_GUI_LIBS) +AC_SUBST(QT_OTHER_LIBS) AC_SUBST(QT_LIBS) AC_SUBST(QT_MT_LIBS) -AC_SUBST(QT_VERS) +AC_SUBST(QT_ASSISTANT_LIBS) +AC_SUBST(QT_VERSION) +AC_SUBST(QT_VERSION_ID) AC_LANG_RESTORE