]> SALOME platform Git repositories - modules/gui.git/blob - adm_local/unix/config_files/check_pyqt.m4
Salome HOME
f63479879dce7340981677009dc6f17d9a52b3a8
[modules/gui.git] / adm_local / unix / config_files / check_pyqt.m4
1 dnl Copyright (C) 2003  CEA/DEN, EDF R&D
2
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
8
9 AC_LANG_SAVE
10 AC_LANG_CPLUSPLUS
11
12 AC_ARG_WITH(pyqt,
13     [  --with-pyqt=DIR      root directory path to PyQt installation ],
14     [PYQTDIR="$withval"
15       AC_MSG_RESULT("select $withval as path to PyQt")
16     ])
17
18 AC_ARG_WITH(pyqt_sips,
19     [  --with-pyqt_sips=DIR      a directory path to PyQt sips installation ],
20     [PYQT_SIPS="$withval"
21       AC_MSG_RESULT("select $withval as path to PyQt sips")
22     ])
23
24
25 AC_ARG_WITH(pyuic,
26     [  --with-pyuic=EXEC pyuic executable ],
27     [PYUIC="$withval"
28       AC_MSG_RESULT("select $withval as pyqt executable")
29     ])
30
31 AC_CHECKING(for pyqt)
32
33 pyqt_ok=yes
34
35 dnl look for pyuic
36 pyqt_uic_ok=no
37 if test "x$PYUIC" != x; then
38   dnl try withval value
39   AC_CHECK_FILE($PYUIC,pyqt_uic_ok=yes,pyqt_uic_ok=no)
40 fi
41 if test "x$pyqt_uic_ok" == "xno"; then
42   dnl try ${PYQTDIR}
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"
48       fi
49     fi
50   fi    
51 fi
52 if test "x$pyqt_uic_ok" == "xno"; then
53   dnl try in $PATH
54   AC_PATH_PROG(PYUIC, pyuic)
55   if test "x$PYUIC" != x; then
56     PYQTDIR=$PYUIC
57     PYQTDIR=`dirname $PYQTDIR`
58     PYQTDIR=`dirname $PYQTDIR`
59     pyqt_uic_ok=yes
60   fi
61 fi
62 if test "x$pyqt_uic_ok" == "xno"; then
63   dnl try ${SIPDIR}
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"
69       fi
70     fi
71   fi    
72 fi
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"
80       fi
81     fi
82   fi    
83 fi
84 if test "x$pyqt_uic_ok" == "xno"; then
85   dnl try /usr/bin
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"
89   fi
90 fi
91 if test "x$pyqt_uic_ok" == "xno"; then
92   pyqt_ok=no
93 fi
94
95 dnl look for PyQt libs
96 pyqt_lib_ok=no
97 if test "x${PYQTDIR}" != "x"; then
98   dnl try {PYQTDIR}
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"
102     then
103       PYQT_LIBS="-lqtcmodule"
104     else
105       PYQT_LIBS="-L${PYQTDIR} -lqtcmodule"
106     fi
107   else 
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"
111       then
112         PYQT_LIBS=""
113       else
114         PYQT_LIBS="-L${PYQTDIR}"
115       fi
116     fi
117   fi
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"
124       else 
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"
128         fi
129       fi
130     fi
131   fi
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"
138       else 
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"
142         fi
143       fi
144     fi
145   fi
146 fi
147 if test "x$pyqt_lib_ok" == "xno"; then
148   dnl try ${SIPDIR}
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"
154         then
155           PYQT_LIBS="-lqtcmodule"
156         else
157           PYQT_LIBS="-L${SIPDIR} -lqtcmodule"
158         fi
159       else 
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"
163           then
164             PYQT_LIBS=""
165           else
166             PYQT_LIBS="-L${SIPDIR}"
167           fi
168         fi
169       fi
170     fi
171   fi
172 fi
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"
180       else 
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"
184         fi
185       fi
186     fi
187   fi    
188 fi
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"
194   else 
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"
198     fi
199   fi
200 fi
201 if test "x$pyqt_lib_ok" == "xno"; then
202   pyqt_ok=no
203 fi
204
205 dnl look for PyQt sips
206 pyqt_sips_ok=no
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"
214     fi
215   fi
216 fi
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"
224       else
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"
228         fi
229       fi
230     fi
231   fi
232 fi
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"
240       fi
241     fi
242   fi
243 fi
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"
251       else
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"
255         fi
256       fi
257     fi
258   fi
259 fi
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"
266     else
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"
270       fi
271     fi
272   fi
273 fi
274 if test "x$pyqt_sips_ok" == "xno"; then
275   pyqt_ok=no
276 else
277   PYQT_INCLUDES="-I$PYQT_SIPS"
278   
279   dnl Additional sip flags required for correct wrappers compilation
280   AC_MSG_CHECKING(which qt classes should be excluded)
281
282   PYQT_SIPFLAGS=""
283
284   CXXFLAGS_old=$CXXFLAGS
285   CXXFLAGS="$CXXFLAGS $QT_INCLUDES"
286   LIBS_old=$LIBS
287   LIBS="$LIBS $QT_LIBS"
288
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")
305
306   LIBS="$LIBS -lqassistantclient"
307   AC_TRY_LINK([#include <qassistantclient.h>],
308               [new QAssistantClient("foo");],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_ASSISTANTCLIENT")
309
310   AC_MSG_RESULT(done)
311
312   CXXFLAGS=$CXXFLAGS_old
313   LIBS=$LIBS_old
314 fi
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)
318
319 AC_SUBST(PYQT_INCLUDES)
320 AC_SUBST(PYQT_LIBS)
321 AC_SUBST(PYQT_SIPS)
322 AC_SUBST(PYUIC)
323 AC_SUBST(PYQT_SIPFLAGS)
324 AC_SUBST(QT_VERS)
325
326 AC_LANG_RESTORE
327
328 AC_MSG_RESULT(for pyqt: $pyqt_ok)
329
330 ])dnl
331 dnl
332
333