Merge #9240: Remove txConflicted
[bitcoinplatinum.git] / src / Makefile.qt.include
blob48abb9b4a2a708798cc018f002ce1e9f1e649fad
1 # Copyright (c) 2013-2016 The Bitcoin Core developers
2 # Distributed under the MIT software license, see the accompanying
3 # file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 bin_PROGRAMS += qt/bitcoin-qt
6 EXTRA_LIBRARIES += qt/libbitcoinqt.a
8 # bitcoin qt core #
9 QT_TS = \
10   qt/locale/bitcoin_af.ts \
11   qt/locale/bitcoin_af_ZA.ts \
12   qt/locale/bitcoin_ar.ts \
13   qt/locale/bitcoin_be_BY.ts \
14   qt/locale/bitcoin_bg.ts \
15   qt/locale/bitcoin_bg_BG.ts \
16   qt/locale/bitcoin_ca_ES.ts \
17   qt/locale/bitcoin_ca.ts \
18   qt/locale/bitcoin_ca@valencia.ts \
19   qt/locale/bitcoin_cs_CZ.ts \
20   qt/locale/bitcoin_cs.ts \
21   qt/locale/bitcoin_cy.ts \
22   qt/locale/bitcoin_da.ts \
23   qt/locale/bitcoin_de.ts \
24   qt/locale/bitcoin_el_GR.ts \
25   qt/locale/bitcoin_el.ts \
26   qt/locale/bitcoin_en_GB.ts \
27   qt/locale/bitcoin_en.ts \
28   qt/locale/bitcoin_eo.ts \
29   qt/locale/bitcoin_es_AR.ts \
30   qt/locale/bitcoin_es_CL.ts \
31   qt/locale/bitcoin_es_CO.ts \
32   qt/locale/bitcoin_es_DO.ts \
33   qt/locale/bitcoin_es_ES.ts \
34   qt/locale/bitcoin_es_MX.ts \
35   qt/locale/bitcoin_es.ts \
36   qt/locale/bitcoin_es_UY.ts \
37   qt/locale/bitcoin_es_VE.ts \
38   qt/locale/bitcoin_et.ts \
39   qt/locale/bitcoin_eu_ES.ts \
40   qt/locale/bitcoin_fa_IR.ts \
41   qt/locale/bitcoin_fa.ts \
42   qt/locale/bitcoin_fi.ts \
43   qt/locale/bitcoin_fr_CA.ts \
44   qt/locale/bitcoin_fr_FR.ts \
45   qt/locale/bitcoin_fr.ts \
46   qt/locale/bitcoin_gl.ts \
47   qt/locale/bitcoin_he.ts \
48   qt/locale/bitcoin_hi_IN.ts \
49   qt/locale/bitcoin_hr.ts \
50   qt/locale/bitcoin_hu.ts \
51   qt/locale/bitcoin_id_ID.ts \
52   qt/locale/bitcoin_it_IT.ts \
53   qt/locale/bitcoin_it.ts \
54   qt/locale/bitcoin_ja.ts \
55   qt/locale/bitcoin_ka.ts \
56   qt/locale/bitcoin_kk_KZ.ts \
57   qt/locale/bitcoin_ko_KR.ts \
58   qt/locale/bitcoin_ku_IQ.ts \
59   qt/locale/bitcoin_ky.ts \
60   qt/locale/bitcoin_la.ts \
61   qt/locale/bitcoin_lt.ts \
62   qt/locale/bitcoin_lv_LV.ts \
63   qt/locale/bitcoin_mk_MK.ts \
64   qt/locale/bitcoin_mn.ts \
65   qt/locale/bitcoin_ms_MY.ts \
66   qt/locale/bitcoin_nb.ts \
67   qt/locale/bitcoin_nl.ts \
68   qt/locale/bitcoin_pam.ts \
69   qt/locale/bitcoin_pl.ts \
70   qt/locale/bitcoin_pt_BR.ts \
71   qt/locale/bitcoin_pt_PT.ts \
72   qt/locale/bitcoin_ro_RO.ts \
73   qt/locale/bitcoin_ro.ts \
74   qt/locale/bitcoin_ru_RU.ts \
75   qt/locale/bitcoin_ru.ts \
76   qt/locale/bitcoin_sk.ts \
77   qt/locale/bitcoin_sl_SI.ts \
78   qt/locale/bitcoin_sq.ts \
79   qt/locale/bitcoin_sr@latin.ts \
80   qt/locale/bitcoin_sr.ts \
81   qt/locale/bitcoin_sv.ts \
82   qt/locale/bitcoin_ta.ts \
83   qt/locale/bitcoin_th_TH.ts \
84   qt/locale/bitcoin_tr_TR.ts \
85   qt/locale/bitcoin_tr.ts \
86   qt/locale/bitcoin_uk.ts \
87   qt/locale/bitcoin_ur_PK.ts \
88   qt/locale/bitcoin_uz@Cyrl.ts \
89   qt/locale/bitcoin_vi.ts \
90   qt/locale/bitcoin_vi_VN.ts \
91   qt/locale/bitcoin_zh_CN.ts \
92   qt/locale/bitcoin_zh_HK.ts \
93   qt/locale/bitcoin_zh.ts \
94   qt/locale/bitcoin_zh_TW.ts
96 QT_FORMS_UI = \
97   qt/forms/addressbookpage.ui \
98   qt/forms/askpassphrasedialog.ui \
99   qt/forms/coincontroldialog.ui \
100   qt/forms/editaddressdialog.ui \
101   qt/forms/helpmessagedialog.ui \
102   qt/forms/intro.ui \
103   qt/forms/modaloverlay.ui \
104   qt/forms/openuridialog.ui \
105   qt/forms/optionsdialog.ui \
106   qt/forms/overviewpage.ui \
107   qt/forms/receivecoinsdialog.ui \
108   qt/forms/receiverequestdialog.ui \
109   qt/forms/debugwindow.ui \
110   qt/forms/sendcoinsdialog.ui \
111   qt/forms/sendcoinsentry.ui \
112   qt/forms/signverifymessagedialog.ui \
113   qt/forms/transactiondescdialog.ui
115 QT_MOC_CPP = \
116   qt/moc_addressbookpage.cpp \
117   qt/moc_addresstablemodel.cpp \
118   qt/moc_askpassphrasedialog.cpp \
119   qt/moc_bantablemodel.cpp \
120   qt/moc_bitcoinaddressvalidator.cpp \
121   qt/moc_bitcoinamountfield.cpp \
122   qt/moc_bitcoingui.cpp \
123   qt/moc_bitcoinunits.cpp \
124   qt/moc_clientmodel.cpp \
125   qt/moc_coincontroldialog.cpp \
126   qt/moc_coincontroltreewidget.cpp \
127   qt/moc_csvmodelwriter.cpp \
128   qt/moc_editaddressdialog.cpp \
129   qt/moc_guiutil.cpp \
130   qt/moc_intro.cpp \
131   qt/moc_macdockiconhandler.cpp \
132   qt/moc_macnotificationhandler.cpp \
133   qt/moc_modaloverlay.cpp \
134   qt/moc_notificator.cpp \
135   qt/moc_openuridialog.cpp \
136   qt/moc_optionsdialog.cpp \
137   qt/moc_optionsmodel.cpp \
138   qt/moc_overviewpage.cpp \
139   qt/moc_peertablemodel.cpp \
140   qt/moc_paymentserver.cpp \
141   qt/moc_qvalidatedlineedit.cpp \
142   qt/moc_qvaluecombobox.cpp \
143   qt/moc_receivecoinsdialog.cpp \
144   qt/moc_receiverequestdialog.cpp \
145   qt/moc_recentrequeststablemodel.cpp \
146   qt/moc_rpcconsole.cpp \
147   qt/moc_sendcoinsdialog.cpp \
148   qt/moc_sendcoinsentry.cpp \
149   qt/moc_signverifymessagedialog.cpp \
150   qt/moc_splashscreen.cpp \
151   qt/moc_trafficgraphwidget.cpp \
152   qt/moc_transactiondesc.cpp \
153   qt/moc_transactiondescdialog.cpp \
154   qt/moc_transactionfilterproxy.cpp \
155   qt/moc_transactiontablemodel.cpp \
156   qt/moc_transactionview.cpp \
157   qt/moc_utilitydialog.cpp \
158   qt/moc_walletframe.cpp \
159   qt/moc_walletmodel.cpp \
160   qt/moc_walletview.cpp
162 BITCOIN_MM = \
163   qt/macdockiconhandler.mm \
164   qt/macnotificationhandler.mm
166 QT_MOC = \
167   qt/bitcoin.moc \
168   qt/bitcoinamountfield.moc \
169   qt/intro.moc \
170   qt/overviewpage.moc \
171   qt/rpcconsole.moc
173 QT_QRC_CPP = qt/qrc_bitcoin.cpp
174 QT_QRC = qt/bitcoin.qrc
175 QT_QRC_LOCALE_CPP = qt/qrc_bitcoin_locale.cpp
176 QT_QRC_LOCALE = qt/bitcoin_locale.qrc
178 PROTOBUF_CC = qt/paymentrequest.pb.cc
179 PROTOBUF_H = qt/paymentrequest.pb.h
180 PROTOBUF_PROTO = qt/paymentrequest.proto
182 BITCOIN_QT_H = \
183   qt/addressbookpage.h \
184   qt/addresstablemodel.h \
185   qt/askpassphrasedialog.h \
186   qt/bantablemodel.h \
187   qt/bitcoinaddressvalidator.h \
188   qt/bitcoinamountfield.h \
189   qt/bitcoingui.h \
190   qt/bitcoinunits.h \
191   qt/clientmodel.h \
192   qt/coincontroldialog.h \
193   qt/coincontroltreewidget.h \
194   qt/csvmodelwriter.h \
195   qt/editaddressdialog.h \
196   qt/guiconstants.h \
197   qt/guiutil.h \
198   qt/intro.h \
199   qt/macdockiconhandler.h \
200   qt/macnotificationhandler.h \
201   qt/modaloverlay.h \
202   qt/networkstyle.h \
203   qt/notificator.h \
204   qt/openuridialog.h \
205   qt/optionsdialog.h \
206   qt/optionsmodel.h \
207   qt/overviewpage.h \
208   qt/paymentrequestplus.h \
209   qt/paymentserver.h \
210   qt/peertablemodel.h \
211   qt/platformstyle.h \
212   qt/qvalidatedlineedit.h \
213   qt/qvaluecombobox.h \
214   qt/receivecoinsdialog.h \
215   qt/receiverequestdialog.h \
216   qt/recentrequeststablemodel.h \
217   qt/rpcconsole.h \
218   qt/sendcoinsdialog.h \
219   qt/sendcoinsentry.h \
220   qt/signverifymessagedialog.h \
221   qt/splashscreen.h \
222   qt/trafficgraphwidget.h \
223   qt/transactiondesc.h \
224   qt/transactiondescdialog.h \
225   qt/transactionfilterproxy.h \
226   qt/transactionrecord.h \
227   qt/transactiontablemodel.h \
228   qt/transactionview.h \
229   qt/utilitydialog.h \
230   qt/walletframe.h \
231   qt/walletmodel.h \
232   qt/walletmodeltransaction.h \
233   qt/walletview.h \
234   qt/winshutdownmonitor.h
236 RES_ICONS = \
237   qt/res/icons/add.png \
238   qt/res/icons/address-book.png \
239   qt/res/icons/about.png \
240   qt/res/icons/about_qt.png \
241   qt/res/icons/bitcoin.ico \
242   qt/res/icons/bitcoin_testnet.ico \
243   qt/res/icons/bitcoin.png \
244   qt/res/icons/chevron.png \
245   qt/res/icons/clock1.png \
246   qt/res/icons/clock2.png \
247   qt/res/icons/clock3.png \
248   qt/res/icons/clock4.png \
249   qt/res/icons/clock5.png \
250   qt/res/icons/configure.png \
251   qt/res/icons/connect0.png \
252   qt/res/icons/connect1.png \
253   qt/res/icons/connect2.png \
254   qt/res/icons/connect3.png \
255   qt/res/icons/connect4.png \
256   qt/res/icons/debugwindow.png \
257   qt/res/icons/edit.png \
258   qt/res/icons/editcopy.png \
259   qt/res/icons/editpaste.png \
260   qt/res/icons/export.png \
261   qt/res/icons/eye.png \
262   qt/res/icons/eye_minus.png \
263   qt/res/icons/eye_plus.png \
264   qt/res/icons/filesave.png \
265   qt/res/icons/fontbigger.png \
266   qt/res/icons/fontsmaller.png \
267   qt/res/icons/hd_disabled.png \
268   qt/res/icons/hd_enabled.png \
269   qt/res/icons/history.png \
270   qt/res/icons/info.png \
271   qt/res/icons/key.png \
272   qt/res/icons/lock_closed.png \
273   qt/res/icons/lock_open.png \
274   qt/res/icons/network_disabled.png \
275   qt/res/icons/open.png \
276   qt/res/icons/overview.png \
277   qt/res/icons/quit.png \
278   qt/res/icons/receive.png \
279   qt/res/icons/remove.png \
280   qt/res/icons/send.png \
281   qt/res/icons/synced.png \
282   qt/res/icons/transaction0.png \
283   qt/res/icons/transaction2.png \
284   qt/res/icons/transaction_abandoned.png \
285   qt/res/icons/transaction_conflicted.png \
286   qt/res/icons/tx_inout.png \
287   qt/res/icons/tx_input.png \
288   qt/res/icons/tx_output.png \
289   qt/res/icons/tx_mined.png \
290   qt/res/icons/warning.png \
291   qt/res/icons/verify.png
293 BITCOIN_QT_BASE_CPP = \
294   qt/bantablemodel.cpp \
295   qt/bitcoinaddressvalidator.cpp \
296   qt/bitcoinamountfield.cpp \
297   qt/bitcoingui.cpp \
298   qt/bitcoinunits.cpp \
299   qt/clientmodel.cpp \
300   qt/csvmodelwriter.cpp \
301   qt/guiutil.cpp \
302   qt/intro.cpp \
303   qt/modaloverlay.cpp \
304   qt/networkstyle.cpp \
305   qt/notificator.cpp \
306   qt/optionsdialog.cpp \
307   qt/optionsmodel.cpp \
308   qt/peertablemodel.cpp \
309   qt/platformstyle.cpp \
310   qt/qvalidatedlineedit.cpp \
311   qt/qvaluecombobox.cpp \
312   qt/rpcconsole.cpp \
313   qt/splashscreen.cpp \
314   qt/trafficgraphwidget.cpp \
315   qt/utilitydialog.cpp
317 BITCOIN_QT_WINDOWS_CPP = qt/winshutdownmonitor.cpp
319 BITCOIN_QT_WALLET_CPP = \
320   qt/addressbookpage.cpp \
321   qt/addresstablemodel.cpp \
322   qt/askpassphrasedialog.cpp \
323   qt/coincontroldialog.cpp \
324   qt/coincontroltreewidget.cpp \
325   qt/editaddressdialog.cpp \
326   qt/openuridialog.cpp \
327   qt/overviewpage.cpp \
328   qt/paymentrequestplus.cpp \
329   qt/paymentserver.cpp \
330   qt/receivecoinsdialog.cpp \
331   qt/receiverequestdialog.cpp \
332   qt/recentrequeststablemodel.cpp \
333   qt/sendcoinsdialog.cpp \
334   qt/sendcoinsentry.cpp \
335   qt/signverifymessagedialog.cpp \
336   qt/transactiondesc.cpp \
337   qt/transactiondescdialog.cpp \
338   qt/transactionfilterproxy.cpp \
339   qt/transactionrecord.cpp \
340   qt/transactiontablemodel.cpp \
341   qt/transactionview.cpp \
342   qt/walletframe.cpp \
343   qt/walletmodel.cpp \
344   qt/walletmodeltransaction.cpp \
345   qt/walletview.cpp
347 BITCOIN_QT_CPP = $(BITCOIN_QT_BASE_CPP)
348 if TARGET_WINDOWS
349 BITCOIN_QT_CPP += $(BITCOIN_QT_WINDOWS_CPP)
350 endif
351 if ENABLE_WALLET
352 BITCOIN_QT_CPP += $(BITCOIN_QT_WALLET_CPP)
353 endif
355 RES_IMAGES = 
357 RES_MOVIES = $(wildcard qt/res/movies/spinner-*.png)
359 BITCOIN_RC = qt/res/bitcoin-qt-res.rc
361 BITCOIN_QT_INCLUDES = -I$(builddir)/qt -I$(srcdir)/qt -I$(srcdir)/qt/forms \
362   -I$(builddir)/qt/forms -DQT_NO_KEYWORDS
364 qt_libbitcoinqt_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
365   $(QT_INCLUDES) $(QT_DBUS_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS)
366 qt_libbitcoinqt_a_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
368 qt_libbitcoinqt_a_SOURCES = $(BITCOIN_QT_CPP) $(BITCOIN_QT_H) $(QT_FORMS_UI) \
369   $(QT_QRC) $(QT_QRC_LOCALE) $(QT_TS) $(PROTOBUF_PROTO) $(RES_ICONS) $(RES_IMAGES) $(RES_MOVIES)
371 nodist_qt_libbitcoinqt_a_SOURCES = $(QT_MOC_CPP) $(QT_MOC) $(PROTOBUF_CC) \
372   $(PROTOBUF_H) $(QT_QRC_CPP) $(QT_QRC_LOCALE_CPP)
374 # forms/foo.h -> forms/ui_foo.h
375 QT_FORMS_H=$(join $(dir $(QT_FORMS_UI)),$(addprefix ui_, $(notdir $(QT_FORMS_UI:.ui=.h))))
377 # Most files will depend on the forms and moc files as includes. Generate them
378 # before anything else.
379 $(QT_MOC): $(QT_FORMS_H)
380 $(qt_libbitcoinqt_a_OBJECTS) $(qt_bitcoin_qt_OBJECTS) : | $(QT_MOC)
382 #Generating these with a half-written protobuf header leads to wacky results.
383 #This makes sure it's done.
384 $(QT_MOC): $(PROTOBUF_H)
385 $(QT_MOC_CPP): $(PROTOBUF_H)
387 # bitcoin-qt binary #
388 qt_bitcoin_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
389   $(QT_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS)
390 qt_bitcoin_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
392 qt_bitcoin_qt_SOURCES = qt/bitcoin.cpp
393 if TARGET_DARWIN
394   qt_bitcoin_qt_SOURCES += $(BITCOIN_MM)
395 endif
396 if TARGET_WINDOWS
397   qt_bitcoin_qt_SOURCES += $(BITCOIN_RC)
398 endif
399 qt_bitcoin_qt_LDADD = qt/libbitcoinqt.a $(LIBBITCOIN_SERVER)
400 if ENABLE_WALLET
401 qt_bitcoin_qt_LDADD += $(LIBBITCOIN_WALLET)
402 endif
403 if ENABLE_ZMQ
404 qt_bitcoin_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
405 endif
406 qt_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \
407   $(BOOST_LIBS) $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
408   $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
409 qt_bitcoin_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
410 qt_bitcoin_qt_LIBTOOLFLAGS = --tag CXX
412 #locale/foo.ts -> locale/foo.qm
413 QT_QM=$(QT_TS:.ts=.qm)
415 SECONDARY: $(QT_QM)
417 $(srcdir)/qt/bitcoinstrings.cpp: $(libbitcoin_server_a_SOURCES) $(libbitcoin_wallet_a_SOURCES)
418         @test -n $(XGETTEXT) || echo "xgettext is required for updating translations"
419         $(AM_V_GEN) cd $(srcdir); XGETTEXT=$(XGETTEXT) PACKAGE_NAME="$(PACKAGE_NAME)" COPYRIGHT_HOLDERS="$(COPYRIGHT_HOLDERS)" COPYRIGHT_HOLDERS_SUBSTITUTION="$(COPYRIGHT_HOLDERS_SUBSTITUTION)" $(PYTHON) ../share/qt/extract_strings_qt.py $^
421 translate: $(srcdir)/qt/bitcoinstrings.cpp $(QT_FORMS_UI) $(QT_FORMS_UI) $(BITCOIN_QT_BASE_CPP) $(BITCOIN_QT_WINDOWS_CPP) $(BITCOIN_QT_WALLET_CPP) $(BITCOIN_QT_H) $(BITCOIN_MM)
422         @test -n $(LUPDATE) || echo "lupdate is required for updating translations"
423         $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(LUPDATE) $^ -locations relative -no-obsolete -ts $(srcdir)/qt/locale/bitcoin_en.ts
425 $(QT_QRC_LOCALE_CPP): $(QT_QRC_LOCALE) $(QT_QM)
426         @test -f $(RCC)
427         @cp -f $< $(@D)/temp_$(<F)
428         $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name bitcoin_locale $(@D)/temp_$(<F) | \
429           $(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
430         @rm $(@D)/temp_$(<F)
432 $(QT_QRC_CPP): $(QT_QRC) $(QT_FORMS_H) $(RES_ICONS) $(RES_IMAGES) $(RES_MOVIES) $(PROTOBUF_H)
433         @test -f $(RCC)
434         $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name bitcoin $< | \
435           $(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
437 CLEAN_QT = $(nodist_qt_libbitcoinqt_a_SOURCES) $(QT_QM) $(QT_FORMS_H) qt/*.gcda qt/*.gcno
439 CLEANFILES += $(CLEAN_QT)
441 bitcoin_qt_clean: FORCE
442         rm -f $(CLEAN_QT) $(qt_libbitcoinqt_a_OBJECTS) $(qt_bitcoin_qt_OBJECTS) qt/bitcoin-qt$(EXEEXT) $(LIBBITCOINQT)
444 bitcoin_qt : qt/bitcoin-qt$(EXEEXT)
446 ui_%.h: %.ui
447         @test -f $(UIC)
448         @$(MKDIR_P) $(@D)
449         $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(UIC) -o $@ $< || (echo "Error creating $@"; false)
451 %.moc: %.cpp
452         $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(MOC) $(DEFAULT_INCLUDES) $(QT_INCLUDES) $(MOC_DEFS) $< | \
453           $(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
455 moc_%.cpp: %.h
456         $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(MOC) $(DEFAULT_INCLUDES) $(QT_INCLUDES) $(MOC_DEFS) $< | \
457           $(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
459 %.qm: %.ts
460         @test -f $(LRELEASE)
461         @$(MKDIR_P) $(@D)
462         $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(LRELEASE) -silent $< -qm $@