root/trunk/qt-gui/acinclude.m4.in

Revision 6509, 14.9 kB (checked in by flynd, 3 months ago)

Let configure check whether -Wextra is usable so we can get the extra warnings if compiler supports it.

  • Property svn:eol-style set to native
Line 
1## -*- mode: m4 -*-
2dnl Copyright (c) 1998 N. D. Bellamy
3dnl Copyright (c) 2000 Dirk A. Mueller
4
5AC_DEFUN([AC_PATH_QT],
6[
7  AC_ARG_WITH(qt,
8    [  --with-qt               where Qt v3.x or higher is located. ],
9    [  QTDIR="$withval" ])
10])
11
12AC_DEFUN([AC_PATH_QT_LIB],
13[
14  AC_REQUIRE_CPP()
15  AC_REQUIRE([AC_PATH_X])
16  AC_MSG_CHECKING(for Qt libraries)
17
18  AC_ARG_WITH(qt-libraries,
19    [  --with-qt-libraries     where the Qt libraries are located. ],
20    [  ac_qt_libraries="$withval" ], ac_qt_libraries="")
21
22  AC_CACHE_VAL(ac_cv_lib_qtlib, [
23
24      qt_libname=
25      qt_libdir=
26
27      dnl No they didnt, so lets look for them...
28      dnl If you need to add extra directories to check, add them here.
29      if test -z "$ac_qt_libraries"; then
30        qt_library_dirs="\
31          /usr/lib/qt3/lib64 \
32          /usr/lib/qt3/lib \
33          /usr/lib64 \
34          /usr/lib \
35          /usr/local/lib64 \
36          /usr/local/lib \
37          /usr/lib/qt \
38          /usr/lib/qt/lib64 \
39          /usr/lib/qt/lib \
40          /usr/local/lib/qt \
41          /usr/local/qt/lib64 \
42          /usr/local/qt/lib \
43          /usr/X11/lib \
44          /usr/X11/lib/qt \
45          /usr/X11R6/lib \
46          /usr/X11R6/lib/qt"
47      else
48        qt_library_dirs="$ac_qt_libraries"
49      fi
50
51      if test -n "$QTDIR"; then
52        qt_library_dirs="$QTDIR/lib64 $QTDIR/lib $qt_library_dirs"
53      fi
54
55      if test -n "$QTLIB"; then
56        qt_library_dirs="$QTLIB $qt_library_dirs"
57      fi
58
59      for qt_dir in $qt_library_dirs; do
60        if test -z $ac_kde || test "$ac_kde" = "no" || test "$kde_version" -ge 3; then
61          if test -r "$qt_dir/libqt-mt.so" -o -r "$qt_dir/libqt-mt.dylib"; then
62            ac_qt_libname=-lqt-mt
63            ac_qt_libdir=$qt_dir
64            break
65          else
66            echo "tried $qt_dir/libqt-mt.so" >&AC_FD_CC
67          fi
68
69          if test -r "$qt_dir/libqt-mt.so.3" -o -r "$qt_dir/libqt-mt.so.3.dylib"; then
70            ac_qt_libname=-lqt-mt
71            ac_qt_libdir=$qt_dir
72            break
73          else
74            echo "tried $qt_dir/libqt-mt.so.3" >&AC_FD_CC
75          fi
76        fi
77
78        # If no KDE or KDE < 3 we might try for libqt, too
79        if test "$ac_kde" = "no" || test "$kde_version" -lt 3; then
80          if test -r "$qt_dir/libqt.so"; then
81            ac_qt_libname=-lqt
82            ac_qt_libdir=$qt_dir
83            break
84          else
85            echo "tried $qt_dir/libqt.so" >&AC_FD_CC
86          fi
87        fi
88      done
89
90    ac_cv_lib_qtlib="ac_qt_libname=$ac_qt_libname ac_qt_libdir=$ac_qt_libdir"
91  ])
92
93  eval "$ac_cv_lib_qtlib"
94
95  dnl Define a shell variable for later checks
96
97  if test -z "$ac_qt_libdir"; then
98    have_qt_lib="no"
99    AC_MSG_RESULT([no :-(])
100  else
101    have_qt_lib="yes"
102    AC_MSG_RESULT([yes, lib: $ac_qt_libname in $ac_qt_libdir])
103  fi
104
105  QT_LDFLAGS="-L$ac_qt_libdir"
106  QT_LIBDIR="$ac_qt_libdir"
107  LIB_QT="$ac_qt_libname"
108  AC_SUBST(QT_LDFLAGS)
109  AC_SUBST(QT_LIBDIR)
110  AC_SUBST(LIB_QT)
111])
112
113AC_DEFUN([AC_PATH_QT_INC],
114[
115  AC_REQUIRE_CPP()
116  AC_REQUIRE([AC_PATH_X])
117  AC_MSG_CHECKING(for Qt includes)
118
119  AC_ARG_WITH(qt-includes,
120    [  --with-qt-includes      where the Qt headers are located. ],
121    [  ac_qt_includes="$withval" ], ac_qt_includes="")
122
123  AC_CACHE_VAL(ac_cv_header_qtinc, [
124
125    dnl Did the user give --with-qt-includes?
126    if test -z "$ac_qt_includes"; then
127
128      dnl No they didn't, so lets look for them...
129      dnl If you need to add extra directories to check, add them here.
130      qt_include_dirs="\
131        /usr/lib/qt3/include \
132        /usr/lib/qt/include \
133        /usr/include/qt \
134        /usr/include/qt3 \
135        /usr/local/qt/include \
136        /usr/local/include/qt \
137        /usr/X11/include/qt \
138        /usr/X11/include/X11/qt \
139        /usr/X11R6/include \
140        /usr/X11R6/include/qt \
141        /usr/X11R6/include/X11/qt \
142        /usr/X11/lib/qt/include"
143
144      if test -n "$QTDIR"; then
145        qt_include_dirs="$QTDIR/include $QTDIR/include/qt $QTDIR/include/qt3 $qt_include_dirs"
146      fi
147
148      if test -n "$QTINC"; then
149        qt_include_dirs="$QTINC $qt_include_dirs"
150      fi
151
152      for qt_dir in $qt_include_dirs; do
153        if test -r "$qt_dir/qbig5codec.h"; then
154          if test -r "$qt_dir/qtranslatordialog.h"; then
155            AC_MSG_ERROR([
156              This is not Qt 3.x or later. Somebody cheated you.
157
158              Most likely this is because you've installed a crappy
159              outdated Redhat 6.2 RPM. Go to ftp://people.redhat.com/bero/qt
160              and update to the correct one.
161            ])
162          else
163            ac_qt_includes=$qt_dir
164          fi
165          break
166        fi
167      done
168    fi
169
170    ac_cv_header_qtinc=$ac_qt_includes
171
172  ])
173
174  if test -z "$ac_cv_header_qtinc"; then
175    have_qt_inc="no"
176  else
177    have_qt_inc="yes"
178  fi
179
180  AC_MSG_RESULT([$ac_cv_header_qtinc])
181  QT_INCLUDES="-I$ac_cv_header_qtinc"
182  QT_INCDIR="$ac_cv_header_qtinc"
183  AC_SUBST(QT_INCLUDES)
184  AC_SUBST(QT_INCDIR)
185])
186
187
188AC_DEFUN([AC_PATH_QT_MOC],
189[
190  AC_ARG_WITH(qt-moc,
191    [  --with-qt-moc           where the Qt 3.x moc is located. ],
192    [  ac_qt_moc="$withval" ], ac_qt_moc="")
193
194  if test -z "$ac_qt_moc"; then
195    dnl search on our own
196
197    if test -z "$QTDIR"; then
198      AC_MSG_WARN([environment variable QTDIR is not set, moc might not be found])
199    fi
200
201    AC_PATH_PROG(
202      MOC,
203      moc,
204      $QTDIR/bin/moc,
205      $QTDIR/bin:/usr/lib/qt3/bin:/usr/bin:/usr/X11R6/bin:/usr/lib/qt/bin:/usr/local/qt/bin:/usr/local/qt3/bin:$PATH
206    )
207  else
208    AC_MSG_CHECKING(for moc)
209
210    if test -f $ac_qt_moc && test -x $ac_qt_moc; then
211      MOC=$ac_qt_moc
212    else
213      AC_MSG_ERROR(
214        --with-qt-moc expects path and name of the moc
215      )
216    fi
217
218    AC_MSG_RESULT($MOC)
219  fi
220
221  if test -z "$MOC"; then
222    AC_MSG_ERROR(couldn't find Qt moc. Please use --with-qt-moc)
223  fi
224
225  dnl Check if we have the right moc
226  if ! fgrep QCString "$MOC" > /dev/null; then
227    AC_MSG_ERROR([
228
229        The Qt meta object compiler (moc)
230        $MOC
231        found by configure is not the one part of Qt 3.x.
232
233        It's likely that the found one is the one shipped with
234        Qt 1.x or Qt 2.x. That one will not work.
235
236        Please check your installation.
237        Use the --with-qt-moc option to specify the path and name
238        of the moc compiler shipped with your Qt 3.x lib.
239        Some distributions rename it to "moc2", maybe you find that
240        on your system.
241
242        see ./configure --help for details.
243    ])
244  fi
245
246  AC_SUBST(MOC)
247])
248
249AC_DEFUN([AC_CHECK_QT_SETUP],
250[
251  AC_MSG_CHECKING(for Qt >= 3.x)
252
253  AC_CACHE_VAL(ac_cv_qt_setup,
254  [
255    AC_LANG_SAVE
256    AC_LANG_CPLUSPLUS
257
258    save_CXXFLAGS="$CXXFLAGS"
259    save_LDFLAGS="$LDFLAGS"
260    save_LIBS="$LIBS"
261
262    CXXFLAGS="$CXXFLAGS $QT_INCLUDES $X_CFLAGS"
263    LDFLAGS="$X_LIBS $QT_LDFLAGS $LDFLAGS"
264    LIBS="$LIB_QT $X_PRE_LIBS -lX11 -lXext $LIBS"
265
266    AC_TRY_LINK([
267      #include <qglobal.h>
268    ],
269    [
270      #if QT_VERSION < 0x030000
271         choke me
272      #endif
273    ],
274      ac_cv_qt_setup=yes,
275      ac_cv_qt_setup=no
276    )
277   ])
278
279  AC_MSG_RESULT($ac_cv_qt_setup)
280
281  if test "$ac_cv_qt_setup" != "yes"; then
282    AC_MSG_ERROR([
283      Sorry, but you need Qt version 3.x to compile the Qt gui plugin.
284    ])
285  fi
286])
287
288AC_DEFUN([AC_PATH_QT_LUPDATE],
289[
290  AC_PATH_PROG(
291    QT_LUPDATE,
292    lupdate,
293    echo,
294    $QTDIR/bin:/usr/lib/qt3/bin:/usr/bin:/usr/X11R6/bin:/usr/lib/qt/bin:/usr/local/qt/bin:/usr/local/qt3/bin:$PATH)
295
296  if test "$QT_LUPDATE" = "echo"; then
297    echo "** lupdate could not be found. You will not be able to update the translations."
298  fi
299
300  AC_SUBST(QT_LUPDATE)
301])
302
303AC_DEFUN([AC_PATH_QT_LRELEASE],
304[
305  AC_PATH_PROG(
306    QT_LRELEASE,
307    lrelease,
308    echo,
309    $QTDIR/bin:/usr/lib/qt3/bin:/usr/bin:/usr/X11R6/bin:/usr/lib/qt/bin:/usr/local/qt/bin:/usr/local/qt3/bin:$PATH)
310
311  if test "$QT_LRELEASE" = "echo"; then
312    echo "** lrelease could not be found. You're losing the localisation."
313  fi
314
315  AC_SUBST(QT_LRELEASE)
316])
317
318## ------------------------------------------------------------------------
319## KDE detection. Terribly simple.
320## ------------------------------------------------------------------------
321
322AC_DEFUN([AC_PATH_KDE],
323[
324  AC_ARG_WITH(kde,
325    [  --with-kde              compile with KDE support. ],
326    [  ac_kde="$withval" ])
327
328  kde_version=2
329])
330
331AC_DEFUN([AC_PATH_KDE_CONFIG],
332[
333  if test "$have_kde" = "yes"; then
334    AC_PATH_PROG(
335      KDE_CONFIG,
336      kde-config,
337      no,
338      /opt/kde3/bin:/opt/kde/bin:/usr/lib/kde/bin:/usr/local/kde/bin/:/usr/kde/bin:/usr/lib/kde/bin:/usr/bin:/usr/X11R6/bin:$PATH)
339
340    if test "$KDE_CONFIG" = "no"; then
341      AC_MSG_ERROR(["Could not find kde-config, make sure it's in your PATH"])
342    fi
343  fi
344
345  AC_SUBST(KDE_CONFIG)
346])
347
348AC_DEFUN([AC_PATH_DCOP],
349[
350  if test "$have_kde" == "yes"; then
351    AC_PATH_PROG(
352      DCOPIDL,
353      dcopidl,
354      echo,
355      /opt/kde3/bin:/opt/kde/bin:/usr/lib/kde/bin:/usr/local/kde/bin/:/usr/kde/bin:/usr/lib/kde/bin:/usr/bin:/usr/X11R6/bin:$PATH)
356
357    AC_PATH_PROG(
358      DCOPIDL2CPP,
359      dcopidl2cpp,
360      echo,
361      /opt/kde3/bin:/opt/kde/bin:/usr/lib/kde/bin:/usr/local/kde/bin/:/usr/kde/bin:/usr/lib/kde/bin:/usr/bin:/usr/X11R6/bin:$PATH)
362
363
364    if test "$DCOPIDL" = "echo" || test "$DCOPIDL2CPP" = "echo"; then
365      AC_MSG_ERROR(["DCOP must be installed. Could not find dcopidl or dcopidl2cpp"])
366    fi
367  fi
368
369  AC_SUBST(DCOPIDL)
370  AC_SUBST(DCOPIDL2CPP)
371])
372   
373AC_DEFUN([AC_PATH_KDE_INCLUDES],
374[
375  AC_REQUIRE([AC_PATH_QT_INC])
376
377  AC_MSG_CHECKING([for KDE includes])
378
379  ac_kde_includes=""
380  kde_includes=""
381
382  dnl check for KDE includes
383  kde_incdirs="\
384    /opt/kde3/include \
385    /opt/kde/include \
386    /usr/lib/kde/include \
387    /usr/local/kde/include \
388    /usr/kde/include \
389    /usr/include/kde \
390    /usr/include \
391    /usr/local/include \
392    $x_includes \
393    $qt_includes"
394  if test -n "$KDEDIR"; then
395    kde_incdirs="$KDEDIR/include $KDEDIR $kde_incdirs"
396  fi
397  if test -n "$ac_kde"; then
398    kde_incdirs="$ac_kde/include $ac_kde $kde_incdirs"
399  fi
400
401  LICQ_FIND_FILE(kaction.h, $kde_incdirs, kde_incdir)
402  kde_includes=$kde_incdir
403
404  if test "$ac_kde" != "no" && test -n "$kde_includes" && test -n "$ac_kde"; then
405    if test "$kde_includes" != "$x_includes" && test "$kde_includes" != "$qt_includes"; then
406      KDE_INCLUDES="-I$kde_includes"
407    fi
408
409    AC_MSG_RESULT([$kde_includes])
410
411    # KDE 2 or 3?
412    if test -r $kde_includes/kdeversion.h; then
413      # KDE 3 or later ;-)
414      kde_version=`grep -w '#define KDE_VERSION_MAJOR' < $kde_includes/kdeversion.h | tr -d '#A-Za-z_\t '`
415    else
416      # KDE 2
417      kde_version=`grep -w '#define KDE_VERSION_MAJOR' < $kde_includes/kapp.h | tr -d '#A-Za-z_\t '`
418    fi
419
420  else
421    AC_MSG_RESULT([no])
422    kde_includes=""
423    KDE_INCLUDES=""
424  fi
425
426  AC_SUBST(KDE_INCLUDES)
427  AC_SUBST(kde_includes)
428])
429
430AC_DEFUN([AC_PATH_KDE_LIBRARIES],
431[
432  AC_REQUIRE([AC_PATH_QT_LIB])
433  AC_REQUIRE([AC_PATH_QT_INC])
434  AC_REQUIRE([AC_PATH_KDE_INCLUDES])
435
436  AC_MSG_CHECKING([for KDE libraries])
437
438  ac_kde_libraries=""
439  kde_libraries=""
440
441  dnl check for KDE libraries
442  kde_libdirs="\
443    /opt/kde3/lib64 \
444    /opt/kde3/lib \
445    /opt/kde/lib64 \
446    /opt/kde/lib \
447    /usr/lib/kde/lib64 \
448    /usr/lib/kde/lib \
449    /usr/local/kde/lib64 \
450    /usr/local/kde/lib \
451    /usr/kde/lib64 \
452    /usr/kde/lib \
453    /usr/lib64/kde \
454    /usr/lib/kde \
455    /usr/lib64 \
456    /usr/lib \
457    /usr/local/lib64 \
458    /usr/local/lib \
459    /usr/X11R6/lib64 \
460    /usr/X11R6/lib \
461    /usr/X11R6/kde/lib64 \
462    /usr/X11R6/kde/lib"
463  if test -n "$KDEDIR"; then
464    kde_libdirs="$KDEDIR/lib $KDEDIR $kde_libdirs"
465  fi
466  if test -n "$ac_kde"; then
467    kde_libdirs="$ac_kde/lib $ac_kde $kde_libdirs"
468  fi
469
470  LICQ_FIND_FILE(libkdecore.la, $kde_libdirs, kde_libdir)
471  kde_libraries=$kde_libdir
472
473  if test "$ac_kde" != "no" && test -n "$kde_includes" && test -n "$kde_libraries" && test -n "$ac_kde"; then
474    if test "$kde_libraries" != "$x_libraries" && test "$kde_libraries" != "$qt_libraries"; then
475      KDE_LDFLAGS="-L$kde_libraries"
476    fi
477
478    AC_MSG_RESULT([$kde_libraries])
479    AC_DEFINE(USE_KDE, 1, [use KDE support])
480    LIB_NAME="licq_kde-gui.la"
481
482    # KDE 2 or 3? (libkfile no longer exists in KDE3, so link with -lkio)
483    if test -f $kde_libraries/libkfile.so ; then
484      KDE_LIBS="-lkfile"
485    else
486      KDE_LIBS="-lkio"
487    fi
488    AC_SUBST(KDE_LIBS)
489
490    have_kde=yes
491    AC_SUBST(have_kde)
492  else
493    LIB_NAME="licq_qt-gui.la"
494    AC_MSG_RESULT([no])
495    KDE_LDFLAGS=""
496    KDE_LIBS=""
497  fi
498
499  AC_SUBST(LIB_NAME)
500  AC_SUBST(KDE_LDFLAGS)
501  AC_SUBST(kde_libraries)
502])
503
504dnl Like AC_CHECK_HEADER, but it uses the already-computed -I directories.
505AC_DEFUN([AC_CHECK_X_HEADER], [
506  ac_save_CPPFLAGS="$CPPFLAGS"
507  if test \! -z "$includedir" ; then
508    CPPFLAGS="$CPPFLAGS -I$includedir"
509  fi
510  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
511  AC_CHECK_HEADER([$1],[$2],[$3], [#include <X11/Xlib.h>])
512  CPPFLAGS="$ac_save_CPPFLAGS"
513])
514
515dnl Like AC_CHECK_LIB, but it used the -L dirs set up by the X checks.
516
517AC_DEFUN([AC_CHECK_X_LIB], [
518  ac_save_CPPFLAGS="$CPPFLAGS"
519  ac_save_LDFLAGS="$LDFLAGS"
520
521  if test \! -z "$includedir" ; then
522    CPPFLAGS="$CPPFLAGS -I$includedir"
523  fi
524
525  dnl note: $X_CFLAGS includes $x_includes
526  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
527
528  if test \! -z "$libdir" ; then
529    LDFLAGS="$LDFLAGS -L$libdir"
530  fi
531
532  dnl note: $X_LIBS includes $x_libraries
533
534  LDFLAGS="$LDFLAGS $X_LIBS"
535  AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
536  CPPFLAGS="$ac_save_CPPFLAGS"
537  LDFLAGS="$ac_save_LDFLAGS"]
538)
539
540dnl check if a given compiler flag works
541AC_DEFUN([KDE_CHECK_COMPILER_FLAG],
542[
543AC_MSG_CHECKING(whether $CXX supports -$1)
544kde_cache=`echo $1 | sed 'y%.=/+-%___p_%'`
545AC_CACHE_VAL(ac_cv_prog_cxx_$kde_cache,
546[
547echo 'void f(){}' >conftest.cc
548if test -z "`$CXX -$1 -c conftest.cc 2>&1`"; then
549  eval "ac_cv_prog_cxx_$kde_cache=yes"
550else
551  eval "ac_cv_prog_cxx_$kde_cache=no"
552fi
553rm -f conftest*
554])
555if eval "test \"`echo '$ac_cv_prog_cxx_'$kde_cache`\" = yes"; then
556 AC_MSG_RESULT(yes)
557 :
558 $2
559else
560 AC_MSG_RESULT(no)
561 :
562 $3
563fi
564])
565
566dnl Check if we can include the X11 headers without -fpermissive
567AC_DEFUN([LICQ_CHECK_X11HEADERS],
568[
569AC_MSG_CHECKING(for good X11 headers)
570AC_CACHE_VAL(ac_cv_good_x11headers,
571[
572  AC_LANG_SAVE
573  AC_LANG_CPLUSPLUS
574  save_CXXFLAGS="$CXXFLAGS"
575  if test "$GCC" = "yes"; then
576    CXXFLAGS="$CXXFLAGS -pedantic-errors"
577  fi
578  CXXFLAGS="$CXXFLAGS $X_CFLAGS"
579
580  AC_TRY_COMPILE([
581
582#include <X11/Xlib.h>
583#include <X11/Xutil.h>
584],
585[
586/* elvis is alive */
587],
588  ac_cv_good_x11headers=yes,
589  ac_cv_good_x11headers=no)
590
591  CXXFLAGS="$save_CXXFLAGS"
592  AC_LANG_RESTORE
593])
594AC_MSG_RESULT($ac_cv_good_x11headers)
595
596if eval "test \"`echo $ac_cv_good_x11headers`\" = no"; then
597   KDE_CHECK_COMPILER_FLAG(fpermissive,
598        [
599          CXXFLAGS="$CXXFLAGS -fpermissive"
600        ], [
601        AC_MSG_WARN([
602the configure script found broken X11 headers. But your compiler doesn't
603seem to support -fpermissive. Compilation might fail.
604        ])
605      ])
606fi
607])
608
609AC_DEFUN([LICQ_CHECK_QT_HEADER],
610[
611  AC_MSG_CHECKING([for specific Qt header files])
612
613  LICQ_FIND_FILE(qinterlacestyle.h, $ac_cv_header_qtinc, qt_incdir)
614
615  if test "$qt_incdir" != ""; then
616    AC_DEFINE_UNQUOTED(HAVE_QINTERLACESTYLE_H, 1, [Undefine if qinterlacestyle.h is not present on your Qt installation])
617  fi
618
619  echo ""
620])
621
Note: See TracBrowser for help on using the browser.