comparison m4/m4_ax_have_qt.m4 @ 241:06d6c351925c

*: reorganize resources, +docs, build translations with autotools
author Paper <paper@paper.us.eu.org>
date Mon, 22 Jan 2024 16:36:19 -0500
parents 6ffe42286978
children 82470f83f0c2
comparison
equal deleted inserted replaced
240:6ffe42286978 241:06d6c351925c
47 # 47 #
48 # LICENSE 48 # LICENSE
49 # 49 #
50 # Copyright (c) 2008 Bastiaan Veelo <Bastiaan@Veelo.net> 50 # Copyright (c) 2008 Bastiaan Veelo <Bastiaan@Veelo.net>
51 # Copyright (c) 2014 Alex Henrie <alexhenrie24@gmail.com> 51 # Copyright (c) 2014 Alex Henrie <alexhenrie24@gmail.com>
52 # Copyright (c) 2024 Paper <mrpapersonic@gmail.com>
53 # 52 #
54 # Copying and distribution of this file, with or without modification, are 53 # Copying and distribution of this file, with or without modification, are
55 # permitted in any medium without royalty provided the copyright notice 54 # permitted in any medium without royalty provided the copyright notice
56 # and this notice are preserved. This file is offered as-is, without any 55 # and this notice are preserved. This file is offered as-is, without any
57 # warranty. 56 # warranty.
59 #serial 25 58 #serial 25
60 59
61 AU_ALIAS([BNV_HAVE_QT], [AX_HAVE_QT]) 60 AU_ALIAS([BNV_HAVE_QT], [AX_HAVE_QT])
62 AC_DEFUN([AX_HAVE_QT], 61 AC_DEFUN([AX_HAVE_QT],
63 [ 62 [
64 AC_REQUIRE([AC_PROG_CXX]) 63 AC_REQUIRE([AC_PROG_CXX])
65 AC_REQUIRE([AC_PATH_X]) 64 AC_REQUIRE([AC_PATH_X])
66 AC_REQUIRE([AC_PATH_XTRA]) 65 AC_REQUIRE([AC_PATH_XTRA])
67 # openSUSE leap 15.3 installs qmake-qt5, not qmake, for example. 66 # openSUSE leap 15.3 installs qmake-qt5, not qmake, for example.
68 # Store the full name (like qmake-qt5) into QMAKE 67 # Store the full name (like qmake-qt5) into QMAKE
69 # and the specifier (like -qt5 or empty) into am_have_qt_qmexe_suff. 68 # and the specifier (like -qt5 or empty) into am_have_qt_qmexe_suff.
70 AC_ARG_VAR([QMAKE],"Qt make tool") 69 AC_ARG_VAR([QMAKE],"Qt make tool")
71 AC_CHECK_TOOLS([QMAKE],[qmake qmake-qt6 qmake-qt5],[false]) 70 AC_CHECK_TOOLS([QMAKE],[qmake qmake-qt6 qmake-qt5],[false])
72 71
73 AC_MSG_CHECKING(for Qt) 72 AC_MSG_CHECKING(for Qt)
74 am_have_qt_qmexe_suff=`echo $QMAKE | sed 's,^.*qmake,,'` 73 am_have_qt_qmexe_suff=`echo $QMAKE | sed 's,^.*qmake,,'`
75 # If we have Qt5 or later in the path, we're golden 74 # If we have Qt5 or later in the path, we're golden
76 ver=`$QMAKE --version | grep -o "Qt version ."` 75 ver=`$QMAKE --version | grep -o "Qt version ."`
77 76
78 if test "$ver" ">" "Qt version 4"; then 77 if test "$ver" ">" "Qt version 4"; then
79 have_qt=yes 78 have_qt=yes
80 # This pro file dumps qmake's variables, but it only works on Qt 5 or later 79 # This pro file dumps qmake's variables, but it only works on Qt 5 or later
81 am_have_qt_dir=`mktemp -d` 80 am_have_qt_dir=`mktemp -d`
82 am_have_qt_pro="$am_have_qt_dir/test.pro" 81 am_have_qt_pro="$am_have_qt_dir/test.pro"
83 am_have_qt_stash="$am_have_qt_dir/.qmake.stash" 82 am_have_qt_stash="$am_have_qt_dir/.qmake.stash"
84 am_have_qt_makefile="$am_have_qt_dir/Makefile" 83 am_have_qt_makefile="$am_have_qt_dir/Makefile"
85 am_have_qt_makefile_cxxflags="$am_have_qt_dir/cxxm" 84 # http://qt-project.org/doc/qt-5/qmake-variable-reference.html#qt
86 am_have_qt_makefile_libs="$am_have_qt_dir/libsm" 85 cat > $am_have_qt_pro << EOF
87 # http://qt-project.org/doc/qt-5/qmake-variable-reference.html#qt
88 cat > $am_have_qt_pro << EOF
89 win32 { 86 win32 {
90 CONFIG -= debug_and_release 87 CONFIG -= debug_and_release
91 CONFIG += release 88 CONFIG += release
92 } 89 }
93 mac {
94 CONFIG += sdk_no_version_check
95 }
96 # commented out all the modules we don't use
97 # - paper
98 #qtHaveModule(axcontainer): QT += axcontainer 90 #qtHaveModule(axcontainer): QT += axcontainer
99 #qtHaveModule(axserver): QT += axserver 91 #qtHaveModule(axserver): QT += axserver
100 #qtHaveModule(concurrent): QT += concurrent 92 #qtHaveModule(concurrent): QT += concurrent
101 qtHaveModule(core): QT += core 93 qtHaveModule(core): QT += core
102 #qtHaveModule(dbus): QT += dbus 94 #qtHaveModule(dbus): QT += dbus
127 qtHaveModule(widgets): QT += widgets 119 qtHaveModule(widgets): QT += widgets
128 percent.target = % 120 percent.target = %
129 percent.commands = @echo -n "\$(\$(@))\ " 121 percent.commands = @echo -n "\$(\$(@))\ "
130 QMAKE_EXTRA_TARGETS += percent 122 QMAKE_EXTRA_TARGETS += percent
131 EOF 123 EOF
132 cat > $am_have_qt_makefile_cxxflags << EOF 124 $QMAKE $am_have_qt_pro -o $am_have_qt_makefile
133 include $am_have_qt_makefile 125 QT_CXXFLAGS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile CXXFLAGS INCPATH`
134 126 QT_LIBS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile LIBS`
135 VAR: 127 rm $am_have_qt_pro $am_have_qt_stash $am_have_qt_makefile
136 @echo \$(CXXFLAGS) \$(INCPATH) 128 rmdir $am_have_qt_dir
137 EOF 129
138 cat > $am_have_qt_makefile_libs << EOF 130 # Look for specific tools in $PATH
139 include $am_have_qt_makefile 131 QT_MOC=`which moc$am_have_qt_qmexe_suff`
140 132 QT_UIC=`which uic$am_have_qt_qmexe_suff`
141 VAR: 133 QT_RCC=`which rcc$am_have_qt_qmexe_suff`
142 @echo \$(LIBS) 134 QT_LRELEASE=`which lrelease$am_have_qt_qmexe_suff`
143 EOF 135 QT_LUPDATE=`which lupdate$am_have_qt_qmexe_suff`
144 $QMAKE "$am_have_qt_pro" -o "$am_have_qt_makefile" 136
145 QT_CXXFLAGS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile_cxxflags VAR` 137 # Get Qt version from qmake
146 QT_LIBS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile_libs VAR` 138 QT_DIR=`$QMAKE --version | grep -o -E /.+`
147 rm $am_have_qt_pro $am_have_qt_stash $am_have_qt_makefile $am_have_qt_makefile_cxxflags $am_have_qt_makefile_libs 139
148 rmdir $am_have_qt_dir 140 # All variables are defined, report the result
149 141 AC_MSG_RESULT([$have_qt:
150 # Look for specific tools in $PATH 142 QT_CXXFLAGS=$QT_CXXFLAGS
151 QT_MOC=`which moc$am_have_qt_qmexe_suff` 143 QT_DIR=$QT_DIR
152 QT_UIC=`which uic$am_have_qt_qmexe_suff` 144 QT_LIBS=$QT_LIBS
153 QT_RCC=`which rcc$am_have_qt_qmexe_suff` 145 QT_UIC=$QT_UIC
154 QT_LRELEASE=`which lrelease$am_have_qt_qmexe_suff` 146 QT_MOC=$QT_MOC
155 QT_LUPDATE=`which lupdate$am_have_qt_qmexe_suff` 147 QT_RCC=$QT_RCC
156 148 QT_LRELEASE=$QT_LRELEASE
157 # Get Qt version from qmake 149 QT_LUPDATE=$QT_LUPDATE])
158 QT_DIR=`$QMAKE --version | grep -o -E /.+` 150 else
159 151 # Qt was not found
160 # All variables are defined, report the result 152 have_qt=no
161 AC_MSG_RESULT([$have_qt: 153 QT_CXXFLAGS=
162 QT_CXXFLAGS=$QT_CXXFLAGS 154 QT_DIR=
163 QT_DIR=$QT_DIR 155 QT_LIBS=
164 QT_LIBS=$QT_LIBS 156 QT_UIC=
165 QT_UIC=$QT_UIC 157 QT_MOC=
166 QT_MOC=$QT_MOC 158 QT_RCC=
167 QT_RCC=$QT_RCC 159 QT_LRELEASE=
168 QT_LRELEASE=$QT_LRELEASE 160 QT_LUPDATE=
169 QT_LUPDATE=$QT_LUPDATE]) 161 AC_MSG_RESULT($have_qt)
170 else 162 fi
171 # Qt was not found 163 AC_SUBST(QT_CXXFLAGS)
172 have_qt=no 164 AC_SUBST(QT_DIR)
173 QT_CXXFLAGS= 165 AC_SUBST(QT_LIBS)
174 QT_DIR= 166 AC_SUBST(QT_UIC)
175 QT_LIBS= 167 AC_SUBST(QT_MOC)
176 QT_UIC= 168 AC_SUBST(QT_RCC)
177 QT_MOC= 169 AC_SUBST(QT_LRELEASE)
178 QT_RCC= 170 AC_SUBST(QT_LUPDATE)
179 QT_LRELEASE= 171 AC_SUBST(QMAKE)
180 QT_LUPDATE= 172
181 AC_MSG_RESULT($have_qt) 173 #### Being paranoid:
182 fi 174 if test x"$have_qt" = xyes; then
183 AC_SUBST(QT_CXXFLAGS) 175 AC_MSG_CHECKING(correct functioning of Qt installation)
184 AC_SUBST(QT_DIR) 176 AC_CACHE_VAL(ax_cv_qt_test_result,
185 AC_SUBST(QT_LIBS) 177 [
186 AC_SUBST(QT_UIC) 178 cat > ax_qt_test.h << EOF
187 AC_SUBST(QT_MOC)
188 AC_SUBST(QT_RCC)
189 AC_SUBST(QT_LRELEASE)
190 AC_SUBST(QT_LUPDATE)
191 AC_SUBST(QMAKE)
192
193 #### Being paranoid:
194 if test x"$have_qt" = xyes; then
195 AC_MSG_CHECKING(correct functioning of Qt installation)
196 AC_CACHE_VAL(ax_cv_qt_test_result,
197 [
198 cat > ax_qt_test.h << EOF
199 #include <qobject.h> 179 #include <qobject.h>
200 class Test : public QObject 180 class Test : public QObject
201 { 181 {
202 Q_OBJECT 182 Q_OBJECT
203 public: 183 public:
204 Test() {} 184 Test() {}
205 ~Test() {} 185 ~Test() {}
206 public slots: 186 public slots:
207 void receive() {} 187 void receive() {}
208 signals: 188 signals:
209 void send(); 189 void send();
210 }; 190 };
211 EOF 191 EOF
212 192
213 cat > ax_qt_main.$ac_ext << EOF 193 cat > ax_qt_main.$ac_ext << EOF
214 #include "ax_qt_test.h" 194 #include "ax_qt_test.h"
215 #include <qapplication.h> 195 #include <qapplication.h>
216 int main( int argc, char **argv ) 196 int main( int argc, char **argv )
217 { 197 {
218 QApplication app( argc, argv ); 198 QApplication app( argc, argv );
219 Test t; 199 Test t;
220 QObject::connect( &t, SIGNAL(send()), &t, SLOT(receive()) ); 200 QObject::connect( &t, SIGNAL(send()), &t, SLOT(receive()) );
221 } 201 }
222 EOF 202 EOF
223 203
224 ax_cv_qt_test_result="failure" 204 ax_cv_qt_test_result="failure"
225 ax_try_1="$QT_MOC ax_qt_test.h -o moc_ax_qt_test.$ac_ext >/dev/null 2>/dev/null" 205 ax_try_1="$QT_MOC ax_qt_test.h -o moc_ax_qt_test.$ac_ext >/dev/null 2>/dev/null"
226 AC_TRY_EVAL(ax_try_1) 206 AC_TRY_EVAL(ax_try_1)
227 if test x"$ac_status" != x0; then 207 if test x"$ac_status" != x0; then
228 echo "$ax_err_1" >&AS_MESSAGE_LOG_FD 208 echo "$ax_err_1" >&AS_MESSAGE_LOG_FD
229 echo "configure: could not run $QT_MOC on:" >&AS_MESSAGE_LOG_FD 209 echo "configure: could not run $QT_MOC on:" >&AS_MESSAGE_LOG_FD
230 cat ax_qt_test.h >&AS_MESSAGE_LOG_FD 210 cat ax_qt_test.h >&AS_MESSAGE_LOG_FD
231 else 211 else
232 ax_try_2="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o moc_ax_qt_test.o moc_ax_qt_test.$ac_ext >AS_MESSAGE_LOG_FD 2>&1" 212 ax_try_2="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o moc_ax_qt_test.o moc_ax_qt_test.$ac_ext >/dev/null 2>/dev/null"
233 AC_TRY_EVAL(ax_try_2) 213 AC_TRY_EVAL(ax_try_2)
234 if test x"$ac_status" != x0; then 214 if test x"$ac_status" != x0; then
235 echo "$ax_err_2" >&AS_MESSAGE_LOG_FD 215 echo "$ax_err_2" >&AS_MESSAGE_LOG_FD
236 echo "configure: could not compile:" >&AS_MESSAGE_LOG_FD 216 echo "configure: could not compile:" >&AS_MESSAGE_LOG_FD
237 cat moc_ax_qt_test.$ac_ext >&AS_MESSAGE_LOG_FD 217 cat moc_ax_qt_test.$ac_ext >&AS_MESSAGE_LOG_FD
238 else 218 else
239 ax_try_3="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o ax_qt_main.o ax_qt_main.$ac_ext >/dev/null 2>/dev/null" 219 ax_try_3="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o ax_qt_main.o ax_qt_main.$ac_ext >/dev/null 2>/dev/null"
240 AC_TRY_EVAL(ax_try_3) 220 AC_TRY_EVAL(ax_try_3)
241 if test x"$ac_status" != x0; then 221 if test x"$ac_status" != x0; then
242 echo "$ax_err_3" >&AS_MESSAGE_LOG_FD 222 echo "$ax_err_3" >&AS_MESSAGE_LOG_FD
243 echo "configure: could not compile:" >&AS_MESSAGE_LOG_FD 223 echo "configure: could not compile:" >&AS_MESSAGE_LOG_FD
244 cat ax_qt_main.$ac_ext >&AS_MESSAGE_LOG_FD 224 cat ax_qt_main.$ac_ext >&AS_MESSAGE_LOG_FD
245 else 225 else
246 ax_try_4="$CXX -o ax_qt_main ax_qt_main.o moc_ax_qt_test.o $QT_LIBS $LIBS >/dev/null 2>/dev/null" 226 ax_try_4="$CXX -o ax_qt_main ax_qt_main.o moc_ax_qt_test.o $QT_LIBS $LIBS >/dev/null 2>/dev/null"
247 AC_TRY_EVAL(ax_try_4) 227 AC_TRY_EVAL(ax_try_4)
248 if test x"$ac_status" != x0; then 228 if test x"$ac_status" != x0; then
249 echo "$ax_err_4" >&AS_MESSAGE_LOG_FD 229 echo "$ax_err_4" >&AS_MESSAGE_LOG_FD
250 else 230 else
251 ax_cv_qt_test_result="success" 231 ax_cv_qt_test_result="success"
252 fi 232 fi
253 fi 233 fi
254 fi 234 fi
255 fi 235 fi
256 ])dnl AC_CACHE_VAL ax_cv_qt_test_result 236 ])dnl AC_CACHE_VAL ax_cv_qt_test_result
257 AC_MSG_RESULT([$ax_cv_qt_test_result]) 237 AC_MSG_RESULT([$ax_cv_qt_test_result])
258 if test x"$ax_cv_qt_test_result" = "xfailure"; then 238 if test x"$ax_cv_qt_test_result" = "xfailure"; then
259 AC_MSG_ERROR([Failed to find matching components of a complete 239 AC_MSG_ERROR([Failed to find matching components of a complete
260 Qt installation. Try using more options, 240 Qt installation. Try using more options,
261 see ./configure --help.]) 241 see ./configure --help.])
262 fi 242 fi
263 243
264 rm -f ax_qt_test.h moc_ax_qt_test.$ac_ext moc_ax_qt_test.o \ 244 rm -f ax_qt_test.h moc_ax_qt_test.$ac_ext moc_ax_qt_test.o \
265 ax_qt_main.$ac_ext ax_qt_main.o ax_qt_main 245 ax_qt_main.$ac_ext ax_qt_main.o ax_qt_main
266 fi 246 fi
267 ]) 247 ])