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