1 dnl Copyright (C) 2003 CEA/DEN, EDF R&D
3 AC_DEFUN([CHECK_PYQT],[
4 AC_REQUIRE([CHECK_PYTHON])dnl
5 AC_REQUIRE([CHECK_QT])dnl
6 AC_REQUIRE([CHECK_SIP])dnl
7 AC_REQUIRE([AC_LINKER_OPTIONS])dnl
13 [ --with-pyqt=DIR root directory path to PyQt installation ],
15 AC_MSG_RESULT("select $withval as path to PyQt")
18 AC_ARG_WITH(pyqt_sips,
19 [ --with-pyqt_sips=DIR a directory path to PyQt sips installation ],
21 AC_MSG_RESULT("select $withval as path to PyQt sips")
26 [ --with-pyuic=EXEC pyuic executable ],
28 AC_MSG_RESULT("select $withval as pyqt executable")
37 if test "x$PYUIC" != x; then
39 AC_CHECK_FILE($PYUIC,pyqt_uic_ok=yes,pyqt_uic_ok=no)
41 if test "x$pyqt_uic_ok" == "xno"; then
43 if test "x${PYQTDIR}" != "x"; then
44 if test -d ${PYQTDIR} ; then
45 AC_CHECK_FILE(${PYQTDIR}/pyuic,pyqt_uic_ok=yes,pyqt_uic_ok=no)
46 if test "x$pyqt_uic_ok" == "xyes"; then
47 PYUIC="${PYQTDIR}/pyuic"
52 if test "x$pyqt_uic_ok" == "xno"; then
54 AC_PATH_PROG(PYUIC, pyuic)
55 if test "x$PYUIC" != x; then
57 PYQTDIR=`dirname $PYQTDIR`
58 PYQTDIR=`dirname $PYQTDIR`
62 if test "x$pyqt_uic_ok" == "xno"; then
64 if test "x${SIPDIR}" != "x"; then
65 if test -d ${SIPDIR} ; then
66 AC_CHECK_FILE(${SIPDIR}/pyuic,pyqt_uic_ok=yes,pyqt_uic_ok=no)
67 if test "x$pyqt_uic_ok" == "xyes"; then
68 PYUIC="${SIPDIR}/pyuic"
73 if test "x$pyqt_uic_ok" == "xno"; then
74 dnl try ${PYTHONHOME}/bin
75 if test "x${PYTHONHOME}" != "x"; then
76 if test -d ${PYTHONHOME}/bin ; then
77 AC_CHECK_FILE(${PYTHONHOME}/bin/pyuic,pyqt_uic_ok=yes,pyqt_uic_ok=no)
78 if test "x$pyqt_uic_ok" == "xyes"; then
79 PYUIC="${PYTHONHOME}/bin/pyuic"
84 if test "x$pyqt_uic_ok" == "xno"; then
86 AC_CHECK_FILE(/usr/bin/pyuic,pyqt_uic_ok=yes,pyqt_uic_ok=no)
87 if test "x$pyqt_uic_ok" == "xyes"; then
88 PYUIC="/usr/bin/pyuic"
91 if test "x$pyqt_uic_ok" == "xno"; then
95 dnl look for PyQt libs
97 if test "x${PYQTDIR}" != "x"; then
99 AC_CHECK_FILE(${PYQTDIR}/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
100 if test "x$pyqt_lib_ok" == "xyes"; then
101 if test "x${PYQTDIR}" = "x/usr/lib"
103 PYQT_LIBS="-lqtcmodule"
105 PYQT_LIBS="-L${PYQTDIR} -lqtcmodule"
108 AC_CHECK_FILE(${PYQTDIR}/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
109 if test "x$pyqt_lib_ok" == "xyes"; then
110 if test "x${PYQTDIR}" = "x/usr/lib"
114 PYQT_LIBS="-L${PYQTDIR}"
118 if test "x$pyqt_lib_ok" == "xno"; then
119 dnl try ${PYQTDIR}/lib
120 if test -d ${PYQTDIR}/lib; then
121 AC_CHECK_FILE(${PYQTDIR}/lib/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
122 if test "x$pyqt_lib_ok" == "xyes"; then
123 PYQT_LIBS="-L${PYQTDIR}/lib -lqtcmodule"
125 AC_CHECK_FILE(${PYQTDIR}/lib/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
126 if test "x$pyqt_lib_ok" == "xyes"; then
127 PYQT_LIBS="-L${PYQTDIR}/lib"
132 if test "x$pyqt_lib_ok" == "xno"; then
133 dnl try ${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages
134 if test -d ${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages; then
135 AC_CHECK_FILE(${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
136 if test "x$pyqt_lib_ok" == "xyes"; then
137 PYQT_LIBS="-L${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lqtcmodule"
139 AC_CHECK_FILE(${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
140 if test "x$pyqt_lib_ok" == "xyes"; then
141 PYQT_LIBS="-L${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages"
147 if test "x$pyqt_lib_ok" == "xno"; then
149 if test "x${SIPDIR}" != "x"; then
150 if test -d ${SIPDIR} ; then
151 AC_CHECK_FILE(${SIPDIR}/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
152 if test "x$pyqt_lib_ok" == "xyes"; then
153 if test "x${SIPDIR}" = "x/usr/lib"
155 PYQT_LIBS="-lqtcmodule"
157 PYQT_LIBS="-L${SIPDIR} -lqtcmodule"
160 AC_CHECK_FILE(${SIPDIR}/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
161 if test "x$pyqt_lib_ok" == "xyes"; then
162 if test "x${SIPDIR}" = "x/usr/lib"
166 PYQT_LIBS="-L${SIPDIR}"
173 if test "x$pyqt_lib_ok" == "xno"; then
174 dnl try ${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages
175 if test "x${PYTHONHOME}" != "x"; then
176 if test -d ${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages ; then
177 AC_CHECK_FILE(${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
178 if test "x$pyqt_lib_ok" == "xyes"; then
179 PYQT_LIBS="-L${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lqtcmodule"
181 AC_CHECK_FILE(${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
182 if test "x$pyqt_lib_ok" == "xyes"; then
183 PYQT_LIBS="-L${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages"
189 if test "x$pyqt_lib_ok" == "xno"; then
190 dnl try /usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages
191 AC_CHECK_FILE(/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
192 if test "x$pyqt_lib_ok" == "xyes"; then
193 PYQT_LIBS="-L/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lqtcmodule"
195 AC_CHECK_FILE(/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
196 if test "x$pyqt_lib_ok" == "xyes"; then
197 PYQT_LIBS="-L/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages"
201 if test "x$pyqt_lib_ok" == "xno"; then
205 dnl look for PyQt sips
207 dnl try ${PYQT_SIPS} or ${PYQT_SIPS}/qt
208 if test "x${PYQT_SIPS}" != "x"; then
209 AC_CHECK_FILE(${PYQT_SIPS}/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
210 if test "x$pyqt_sips_ok" == "xno"; then
211 AC_CHECK_FILE(${PYQT_SIPS}/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
212 if test "x$pyqt_sips_ok" == "xyes"; then
213 PYQT_SIPS="${PYQT_SIPS}/qt"
217 if test "x$pyqt_sips_ok" == "xno"; then
218 dnl try ${PYQTDIR}/sip
219 if test "x${PYQTDIR}" != "x"; then
220 if test -d ${PYQTDIR}/sip ; then
221 AC_CHECK_FILE(${PYQTDIR}/sip/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
222 if test "x$pyqt_sips_ok" == "xyes"; then
223 PYQT_SIPS="${PYQTDIR}/sip"
225 AC_CHECK_FILE(${PYQTDIR}/sip/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
226 if test "x$pyqt_sips_ok" == "xyes"; then
227 PYQT_SIPS="${PYQTDIR}/sip/qt"
233 if test "x$pyqt_sips_ok" == "xno"; then
234 dnl try ${PYQTDIR}/share/sip/qt
235 if test "x${PYQTDIR}" != "x"; then
236 if test -d ${PYQTDIR}/share/sip/qt ; then
237 AC_CHECK_FILE(${PYQTDIR}/share/sip/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
238 if test "x$pyqt_sips_ok" == "xyes"; then
239 PYQT_SIPS="${PYQTDIR}/share/sip/qt"
244 if test "x$pyqt_sips_ok" == "xno"; then
245 dnl try ${SIPDIR}/sip
246 if test "x${SIPDIR}" != "x"; then
247 if test -d ${SIPDIR}/sip ; then
248 AC_CHECK_FILE(${SIPDIR}/sip/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
249 if test "x$pyqt_sips_ok" == "xyes"; then
250 PYQT_SIPS="${SIPDIR}/sip"
252 AC_CHECK_FILE(${SIPDIR}/sip/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
253 if test "x$pyqt_sips_ok" == "xyes"; then
254 PYQT_SIPS="${SIPDIR}/sip/qt"
260 if test "x$pyqt_sips_ok" == "xno"; then
261 dnl try /usr/share/sip
262 if test -d /usr/share/sip ; then
263 AC_CHECK_FILE(/usr/share/sip/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
264 if test "x$pyqt_sips_ok" == "xyes"; then
265 PYQT_SIPS="/usr/share/sip"
267 AC_CHECK_FILE(/usr/share/sip/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
268 if test "x$pyqt_sips_ok" == "xyes"; then
269 PYQT_SIPS="/usr/share/sip/qt"
274 if test "x$pyqt_sips_ok" == "xno"; then
277 PYQT_INCLUDES="-I$PYQT_SIPS"
279 dnl Additional sip flags required for correct wrappers compilation
280 AC_MSG_CHECKING(which qt classes should be excluded)
284 CXXFLAGS_old=$CXXFLAGS
285 CXXFLAGS="$CXXFLAGS $QT_INCLUDES"
287 LIBS="$LIBS $QT_LIBS"
289 AC_TRY_COMPILE([#include <qcdestyle.h>],
290 [new QCDEStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_CDE")
291 AC_TRY_COMPILE([#include <qinterlacestyle.h>],
292 [new QInterlaceStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_INTERLACE")
293 AC_TRY_COMPILE([#include <qmotifstyle.h>],
294 [new QMotifStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_MOTIF")
295 AC_TRY_COMPILE([#include <qmotifplusstyle.h>],
296 [new QMotifPlusStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_MOTIFPLUS")
297 AC_TRY_COMPILE([#include <qplatinumstyle.h>],
298 [new QPlatinumStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_PLATINUM")
299 AC_TRY_COMPILE([#include <qsgistyle.h>],
300 [new QSGIStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_SGI")
301 AC_TRY_COMPILE([#include <qwindowsstyle.h>],
302 [new QWindowsStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_WINDOWS")
303 AC_TRY_COMPILE([#include <qwindowsxpstyle.h>],
304 [new QWindowsXPStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_WINDOWSXP")
306 LIBS="$LIBS -lqassistantclient"
307 AC_TRY_LINK([#include <qassistantclient.h>],
308 [new QAssistantClient("foo");],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_ASSISTANTCLIENT")
312 CXXFLAGS=$CXXFLAGS_old
315 # get latest Qt version supported
316 QT_VERS=`grep -e "[[[:space:]]]*Qt_[[[:digit:]_]]\+}" ${PYQT_SIPS}/versions.sip | sed -e "s/\(.*\)[[[:space:]]]*\(Qt_[[[:digit:]_]]\+\)}/\2/g"`
317 AC_MSG_RESULT(Latest Qt version supported by PyQt is $QT_VERS)
319 AC_SUBST(PYQT_INCLUDES)
323 AC_SUBST(PYQT_SIPFLAGS)
328 AC_MSG_RESULT(for pyqt: $pyqt_ok)