comparison m4/m4_ax_have_qt.m4 @ 249:6b2441c776dd

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