]> git.lyx.org Git - features.git/blob - config/qt.m4
6fc6908a9b06f446948842a27122fa6d4e712e74
[features.git] / config / qt.m4
1 dnl find a binary in the path
2 AC_DEFUN([QT_FIND_PATH],
3 [
4         AC_MSG_CHECKING([for $1])
5         AC_CACHE_VAL(qt_cv_path_$1,
6         [
7                 qt_cv_path_$1="NONE"
8                 if test -n "$$2"; then
9                         qt_cv_path_$1="$$2";
10                 else
11                         dirs="$3"
12                         qt_save_IFS=$IFS
13                         IFS=':'
14                         for dir in $PATH; do
15                                 dirs="$dirs $dir"
16                         done
17                         IFS=$qt_save_IFS
18
19                         for dir in $dirs; do
20                                 if test -x "$dir/$1"; then
21                                         if test -n "$5"; then
22                                                 evalstr="$dir/$1 $5 2>&1 "
23                                                 if eval $evalstr; then
24                                                         qt_cv_path_$1="$dir/$1"
25                                                         break
26                                                 fi
27                                         else
28                                                 qt_cv_path_$1="$dir/$1"
29                                                 break
30                                         fi
31                                 fi
32                         done
33                 fi
34         ])
35
36         if test -z "$qt_cv_path_$1" || test "$qt_cv_path_$1" = "NONE"; then
37                 AC_MSG_RESULT(not found)
38                 $4
39         else
40                 AC_MSG_RESULT($qt_cv_path_$1)
41                 $2=$qt_cv_path_$1
42         fi
43 ])
44
45 dnl Find the uic compiler on the path or in qt_cv_dir
46 AC_DEFUN([QT_FIND_UIC],
47 [
48         QT_FIND_PATH(uic, ac_uic, $qt_cv_dir/bin)
49         if test -z "$ac_uic" -a "$FATAL" = 1; then
50                 AC_MSG_ERROR([uic binary not found in \$PATH or $qt_cv_dir/bin !])
51         fi
52 ])
53
54 dnl Find the right moc in path/qt_cv_dir
55 AC_DEFUN([QT_FIND_MOC],
56 [
57         QT_FIND_PATH(moc2, ac_moc2, $qt_cv_dir/bin)
58         QT_FIND_PATH(moc, ac_moc1, $qt_cv_dir/bin)
59
60         if test -n "$ac_moc1" -a -n "$ac_moc2"; then
61                 dnl found both. Prefer Qt3's if it exists else moc2
62                 $ac_moc1 -v 2>&1 | grep "Qt 3" >/dev/null
63                 if test "$?" = 0; then
64                         ac_moc=$ac_moc1;
65                 else
66                         ac_moc=$ac_moc2;
67                 fi
68         else
69                 if test -n "$ac_moc1"; then
70                         ac_moc=$ac_moc1;
71                 else
72                         ac_moc=$ac_moc2;
73                 fi
74         fi
75
76         if test -z "$ac_moc"  -a "$FATAL" = 1; then
77                 AC_MSG_ERROR([moc binary not found in \$PATH or $qt_cv_dir/bin !])
78         fi
79 ])
80
81 dnl check a particular libname
82 AC_DEFUN([QT_TRY_LINK],
83 [
84         SAVE_LIBS="$LIBS"
85         LIBS="$LIBS $1"
86         AC_TRY_LINK([
87         #include <qglobal.h>
88         #include <qstring.h>
89                 ],
90         [
91         QString s("mangle_failure");
92         #if (QT_VERSION < 221)
93         break_me_(\\\);
94         #endif
95         ],
96         qt_cv_libname=$1,
97         )
98         LIBS="$SAVE_LIBS"
99 ])
100
101 dnl check we can do a compile
102 AC_DEFUN([QT_CHECK_COMPILE],
103 [
104         AC_MSG_CHECKING([for Qt library name])
105
106         AC_CACHE_VAL(qt_cv_libname,
107         [
108                 AC_LANG_CPLUSPLUS
109                 SAVE_CXXFLAGS=$CXXFLAGS
110                 CXXFLAGS="$CXXFLAGS $QT_INCLUDES $QT_LDFLAGS"
111
112                 for libname in -lqt-mt -lqt-mt3 -lqt3 -lqt2 -lqt;
113                 do
114                         QT_TRY_LINK($libname)
115                         if test -n "$qt_cv_libname"; then
116                                 break;
117                         fi
118                 done
119
120                 CXXFLAGS=$SAVE_CXXFLAGS
121         ])
122
123         if test -z "$qt_cv_libname"; then
124                 AC_MSG_RESULT([failed])
125                 if test "$FATAL" = 1 ; then
126                         AC_MSG_ERROR([Cannot compile a simple Qt executable. Check you have the right \$QTDIR !])
127                 fi
128         else
129                 AC_MSG_RESULT([$qt_cv_libname])
130         fi
131 ])
132
133 dnl get Qt version we're using
134 AC_DEFUN([QT_GET_VERSION],
135 [
136         AC_CACHE_CHECK([Qt version],lyx_cv_qtversion,
137         [
138                 AC_LANG_CPLUSPLUS
139                 SAVE_CPPFLAGS=$CPPFLAGS
140                 CPPFLAGS="$CPPFLAGS $QT_INCLUDES"
141
142                 cat > conftest.$ac_ext <<EOF
143 #line __oline__ "configure"
144 #include "confdefs.h"
145 #include <qglobal.h>
146 "%%%"QT_VERSION_STR"%%%"
147 EOF
148                 lyx_cv_qtversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
149                         grep '^"%%%"'  2>/dev/null | \
150                         sed -e 's/"%%%"//g' -e 's/"//g'`
151                 rm -f conftest.$ac_ext
152                 CPPFLAGS=$SAVE_CPPFLAGS
153         ])
154
155         QT_VERSION=$lyx_cv_qtversion
156         AC_SUBST(QT_VERSION)
157 ])
158
159 dnl start here
160 AC_DEFUN([QT_DO_IT_ALL],
161 [
162         dnl this variable is precious
163         AC_ARG_VAR(QTDIR, [the place where the Qt files are, e.g. /usr/lib/qt])
164
165         dnl Please leave this alone. I use this file in
166         dnl oprofile.
167         FATAL=0
168
169         AC_ARG_WITH(qt-dir, [  --with-qt-dir           where the root of Qt is installed ],
170                 [ qt_cv_dir=`eval echo "$withval"/` ])
171
172         AC_ARG_WITH(qt-includes, [  --with-qt-includes      where the Qt includes are. ],
173                 [ qt_cv_includes=`eval echo "$withval"` ])
174
175         AC_ARG_WITH(qt-libraries, [  --with-qt-libraries     where the Qt library is installed.],
176                 [  qt_cv_libraries=`eval echo "$withval"` ])
177
178         dnl pay attention to $QTDIR unless overridden
179         if test -z "$qt_cv_dir"; then
180                 qt_cv_dir=$QTDIR
181         fi
182
183         dnl derive inc/lib if needed
184         if test -n "$qt_cv_dir"; then
185                 if test -z "$qt_cv_includes"; then
186                         qt_cv_includes=$qt_cv_dir/include
187                 fi
188                 if test -z "$qt_cv_libraries"; then
189                         qt_cv_libraries=$qt_cv_dir/lib
190                 fi
191         fi
192
193         dnl flags for compilation
194         QT_INCLUDES=
195         QT_LDFLAGS=
196         if test -n "$qt_cv_includes"; then
197                 QT_INCLUDES="-I$qt_cv_includes"
198         fi
199         if test -n "$qt_cv_libraries"; then
200                 QT_LDFLAGS="-L$qt_cv_libraries"
201         fi
202         AC_SUBST(QT_INCLUDES)
203         AC_SUBST(QT_LDFLAGS)
204
205         dnl Preprocessor flags
206         case ${host} in
207         *mingw*) QT_CPPFLAGS="-DQT_DLL -DQT_CLEAN_NAMESPACE -DQT_GENUINE_STR";;
208         *) QT_CPPFLAGS="-DQT_CLEAN_NAMESPACE -DQT_GENUINE_STR";;
209         esac
210         AC_SUBST(QT_CPPFLAGS)
211
212         if test -z "$MOC"; then
213                 QT_FIND_MOC
214                 MOC=$ac_moc
215         fi
216         AC_SUBST(MOC)
217         if test -z "$UIC"; then
218                 QT_FIND_UIC
219                 UIC=$ac_uic
220         fi
221         AC_SUBST(UIC)
222
223         QT_CHECK_COMPILE
224
225         QT_LIB=$qt_cv_libname;
226         AC_SUBST(QT_LIB)
227
228         if test -n "$qt_cv_libname"; then
229                 QT_GET_VERSION
230         fi
231 ])