Salome HOME
ee024efaf8fc2c8caa136b4e12028a1dfe9d430c
[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
8 AC_LANG_SAVE
9 AC_LANG_CPLUSPLUS
10
11 AC_ARG_WITH(pyqt,
12     [  --with-pyqt=DIR      root directory path to PyQt installation ],
13     [PYQTDIR="$withval"
14       AC_MSG_RESULT("select $withval as path to PyQt")
15     ])
16
17 AC_ARG_WITH(pyqt_sips,
18     [  --with-pyqt_sips=DIR      a directory path to PyQt sips installation ],
19     [PYQT_SIPS="$withval"
20       AC_MSG_RESULT("select $withval as path to PyQt sips")
21     ])
22
23
24 AC_ARG_WITH(pyuic,
25     [  --with-pyuic=EXEC pyuic executable ],
26     [PYUIC="$withval"
27       AC_MSG_RESULT("select $withval as pyqt executable")
28     ])
29
30 AC_CHECKING(for pyqt)
31
32 pyqt_ok=yes
33
34 dnl look for pyuic
35 pyqt_uic_ok=no
36 if test "x$PYUIC" != x; then
37   dnl try withval value
38   AC_CHECK_FILE($PYUIC,pyqt_uic_ok=yes,pyqt_uic_ok=no)
39 fi
40 if test "x$pyqt_uic_ok" == "xno"; then
41   dnl try ${PYQTDIR}
42   if test "x${PYQTDIR}" != "x"; then
43     if test -d ${PYQTDIR} ; then
44       AC_CHECK_FILE(${PYQTDIR}/pyuic,pyqt_uic_ok=yes,pyqt_uic_ok=no)
45       if test "x$pyqt_uic_ok" == "xyes"; then
46         PYUIC="${PYQTDIR}/pyuic"
47       fi
48     fi
49   fi    
50 fi
51 if test "x$pyqt_uic_ok" == "xno"; then
52   dnl try ${SIPDIR}
53   if test "x${SIPDIR}" != "x"; then
54     if test -d ${SIPDIR} ; then
55       AC_CHECK_FILE(${SIPDIR}/pyuic,pyqt_uic_ok=yes,pyqt_uic_ok=no)
56       if test "x$pyqt_uic_ok" == "xyes"; then
57         PYUIC="${SIPDIR}/pyuic"
58       fi
59     fi
60   fi    
61 fi
62 if test "x$pyqt_uic_ok" == "xno"; then
63   dnl try ${PYTHONHOME}/bin
64   if test "x${PYTHONHOME}" != "x"; then
65     if test -d ${PYTHONHOME}/bin ; then
66       AC_CHECK_FILE(${PYTHONHOME}/bin/pyuic,pyqt_uic_ok=yes,pyqt_uic_ok=no)
67       if test "x$pyqt_uic_ok" == "xyes"; then
68         PYUIC="${PYTHONHOME}/bin/pyuic"
69       fi
70     fi
71   fi    
72 fi
73 if test "x$pyqt_uic_ok" == "xno"; then
74   dnl try /usr/bin
75   AC_CHECK_FILE(/usr/bin/pyuic,pyqt_uic_ok=yes,pyqt_uic_ok=no)
76   if test "x$pyqt_uic_ok" == "xyes"; then
77     PYUIC="/usr/bin/pyuic"
78   fi
79 fi
80 if test "x$pyqt_uic_ok" == "xno"; then
81   pyqt_ok=no
82 fi
83
84 dnl look for PyQt libs
85 pyqt_lib_ok=no
86 if test "x${PYQTDIR}" != "x"; then
87   dnl try {PYQTDIR}
88   AC_CHECK_FILE(${PYQTDIR}/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
89   if test "x$pyqt_lib_ok" == "xyes"; then
90     if test "x${PYQTDIR}" = "x/usr/lib"
91     then
92       PYQT_LIBS="-lqtcmodule"
93     else
94       PYQT_LIBS="-L${PYQTDIR} -lqtcmodule"
95     fi
96   else 
97     AC_CHECK_FILE(${PYQTDIR}/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
98     if test "x$pyqt_lib_ok" == "xyes"; then
99       if test "x${PYQTDIR}" = "x/usr/lib"
100       then
101         PYQT_LIBS=""
102       else
103         PYQT_LIBS="-L${PYQTDIR}"
104       fi
105     fi
106   fi
107   if test "x$pyqt_lib_ok" == "xno"; then
108     dnl try {PYQTDIR}/lib
109     if test -d {PYQTDIR}/lib; then
110       AC_CHECK_FILE(${PYQTDIR}/lib/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
111       if test "x$pyqt_lib_ok" == "xyes"; then
112         PYQT_LIBS="-L${PYQTDIR}/lib -lqtcmodule"
113       else 
114         AC_CHECK_FILE(${PYQTDIR}/lib/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
115         if test "x$pyqt_lib_ok" == "xyes"; then
116           PYQT_LIBS="-L${PYQTDIR}/lib"
117         fi
118       fi
119     fi
120   fi
121   if test "x$pyqt_lib_ok" == "xno"; then
122     dnl try {PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages
123     if test -d {PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages; then
124       AC_CHECK_FILE(${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
125       if test "x$pyqt_lib_ok" == "xyes"; then
126         PYQT_LIBS="-L${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages -lqtcmodule"
127       else 
128         AC_CHECK_FILE(${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
129         if test "x$pyqt_lib_ok" == "xyes"; then
130           PYQT_LIBS="-L${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages"
131         fi
132       fi
133     fi
134   fi
135 fi
136 if test "x$pyqt_lib_ok" == "xno"; then
137   dnl try ${SIPDIR}
138   if test "x${SIPDIR}" != "x"; then
139     if test -d ${SIPDIR} ; then
140       AC_CHECK_FILE(${SIPDIR}/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
141       if test "x$pyqt_lib_ok" == "xyes"; then
142         if test "x${SIPDIR}" = "x/usr/lib"
143         then
144           PYQT_LIBS="-lqtcmodule"
145         else
146           PYQT_LIBS="-L${SIPDIR} -lqtcmodule"
147         fi
148       else 
149         AC_CHECK_FILE(${SIPDIR}/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
150         if test "x$pyqt_lib_ok" == "xyes"; then
151           if test "x${SIPDIR}" = "x/usr/lib"
152           then
153             PYQT_LIBS=""
154           else
155             PYQT_LIBS="-L${SIPDIR}"
156           fi
157         fi
158       fi
159     fi
160   fi
161 fi
162 if test "x$pyqt_lib_ok" == "xno"; then
163   dnl try ${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages
164   if test "x${PYTHONHOME}" != "x"; then
165     if test -d ${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages ; then
166       AC_CHECK_FILE(${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
167       if test "x$pyqt_lib_ok" == "xyes"; then
168         PYQT_LIBS="-L${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages -lqtcmodule"
169       else 
170         AC_CHECK_FILE(${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
171         if test "x$pyqt_lib_ok" == "xyes"; then
172           PYQT_LIBS="-L${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages"
173         fi
174       fi
175     fi
176   fi    
177 fi
178 if test "x$pyqt_lib_ok" == "xno"; then
179   dnl try /usr/lib/python${PYTHON_VERSION}/site-packages
180   AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
181   if test "x$pyqt_lib_ok" == "xyes"; then
182     PYQT_LIBS="-L/usr/lib/python${PYTHON_VERSION}/site-packages -lqtcmodule"
183   else 
184     AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
185     if test "x$pyqt_lib_ok" == "xyes"; then
186       PYQT_LIBS="-L/usr/lib/python${PYTHON_VERSION}/site-packages"
187     fi
188   fi
189 fi
190 if test "x$pyqt_lib_ok" == "xno"; then
191   pyqt_ok=no
192 fi
193
194 dnl look for PyQt sips
195 pyqt_sips_ok=no
196 dnl try ${PYQT_SIPS} or ${PYQT_SIPS}/qt
197 if test "x${PYQT_SIPS}" != "x"; then
198   AC_CHECK_FILE(${PYQT_SIPS}/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
199   if test "x$pyqt_sips_ok" == "xno"; then
200     AC_CHECK_FILE(${PYQT_SIPS}/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
201     if test "x$pyqt_sips_ok" == "xyes"; then
202       PYQT_SIPS="${PYQT_SIPS}/qt"
203     fi
204   fi
205 fi
206 if test "x$pyqt_sips_ok" == "xno"; then
207   dnl try ${PYQTDIR}/sip
208   if test "x${PYQTDIR}" != "x"; then
209     if test -d ${PYQTDIR}/sip ; then
210       AC_CHECK_FILE(${PYQTDIR}/sip/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
211       if test "x$pyqt_sips_ok" == "xyes"; then
212         PYQT_SIPS="${PYQTDIR}/sip"
213       else
214         AC_CHECK_FILE(${PYQTDIR}/sip/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
215         if test "x$pyqt_sips_ok" == "xyes"; then
216           PYQT_SIPS="${PYQTDIR}/sip/qt"
217         fi
218       fi
219     fi
220   fi
221 fi
222 if test "x$pyqt_sips_ok" == "xno"; then
223   dnl try ${SIPDIR}/sip
224   if test "x${SIPDIR}" != "x"; then
225     if test -d ${SIPDIR}/sip ; then
226       AC_CHECK_FILE(${SIPDIR}/sip/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
227       if test "x$pyqt_sips_ok" == "xyes"; then
228         PYQT_SIPS="${SIPDIR}/sip"
229       else
230         AC_CHECK_FILE(${SIPDIR}/sip/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
231         if test "x$pyqt_sips_ok" == "xyes"; then
232           PYQT_SIPS="${SIPDIR}/sip/qt"
233         fi
234       fi
235     fi
236   fi
237 fi
238 if test "x$pyqt_sips_ok" == "xno"; then
239   dnl try /usr/share/sip
240   if test -d /usr/share/sip ; then
241     AC_CHECK_FILE(/usr/share/sip/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
242     if test "x$pyqt_sips_ok" == "xyes"; then
243       PYQT_SIPS="/usr/share/sip"
244     else
245       AC_CHECK_FILE(/usr/share/sip/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
246       if test "x$pyqt_sips_ok" == "xyes"; then
247         PYQT_SIPS="/usr/share/sip/qt"
248       fi
249     fi
250   fi
251 fi
252 if test "x$pyqt_sips_ok" == "xno"; then
253   pyqt_ok=no
254 else
255   PYQT_INCLUDES="-I$PYQT_SIPS"
256   
257   dnl Additional sip flags required for correct wrappers compilation
258   AC_MSG_CHECKING(which qt classes should be excluded)
259
260   PYQT_SIPFLAGS=""
261
262   CXXFLAGS_old=$CXXFLAGS
263   CXXFLAGS="$CXXFLAGS $QT_INCLUDES"
264   LIBS_old=$LIBS
265   LIBS="$LIBS $QT_LIBS"
266
267   AC_TRY_COMPILE([#include <qcdestyle.h>],
268                  [new QCDEStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_CDE")
269   AC_TRY_COMPILE([#include <qinterlacestyle.h>],
270                  [new QInterlaceStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_INTERLACE")
271   AC_TRY_COMPILE([#include <qmotifstyle.h>],
272                  [new QMotifStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_MOTIF")
273   AC_TRY_COMPILE([#include <qmotifplusstyle.h>],
274                  [new QMotifPlusStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_MOTIFPLUS")
275   AC_TRY_COMPILE([#include <qplatinumstyle.h>],
276                  [new QPlatinumStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_PLATINUM")
277   AC_TRY_COMPILE([#include <qsgistyle.h>],
278                  [new QSGIStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_SGI")
279   AC_TRY_COMPILE([#include <qwindowsstyle.h>],
280                  [new QWindowsStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_WINDOWS")
281   AC_TRY_COMPILE([#include <qwindowsxpstyle.h>],
282                  [new QWindowsXPStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_WINDOWSXP")
283
284   LIBS="$LIBS -lqassistantclient"
285   AC_TRY_LINK([#include <qassistantclient.h>],
286               [new QAssistantClient("foo");],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_ASSISTANTCLIENT")
287
288   AC_MSG_RESULT(done)
289
290   CXXFLAGS=$CXXFLAGS_old
291   LIBS=$LIBS_old
292 fi
293
294 AC_SUBST(PYQT_INCLUDES)
295 AC_SUBST(PYQT_LIBS)
296 AC_SUBST(PYQT_SIPS)
297 AC_SUBST(PYUIC)
298 AC_SUBST(PYQT_SIPFLAGS)
299
300 AC_LANG_RESTORE
301
302 AC_MSG_RESULT(for pyqt: $pyqt_ok)
303
304 ])dnl
305 dnl
306
307