goldendict-ng/goldendict.pro
Igor Kushnir 8acec2e062 Reduce build log verbosity
The default qmake build output is overly verbose. Adding the "silent"
switch to CONFIG makes it much more concise, comparable to default CMake
output. This way warnings and errors are much easier to find.

Adding CONFIG-=silent to the qmake command line doesn't restore the
verbosity because it is applied before the "CONFIG += silent" line in
goldendict.pro. Add a new CONFIG switch "verbose_build_output" to allow
increasing build log verbosity without editing goldendict.pro.
2022-06-01 18:00:45 +03:00

688 lines
16 KiB
Prolog

TEMPLATE = app
TARGET = goldendict
VERSION = 1.5.0-RC2+git
# Generate version file. We do this here and in a build rule described later.
# The build rule is required since qmake isn't run each time the project is
# rebuilt; and doing it here is required too since any other way the RCC
# compiler would complain if version.txt wouldn't exist (fresh checkouts).
system(git describe --tags --always --dirty > version.txt): hasGit=1
isEmpty( hasGit ) {
message(Failed to precisely describe the version via Git -- using the default version string)
system(echo $$VERSION > version.txt)
}
!CONFIG( verbose_build_output ) {
!win32|*-msvc* {
# Reduce build log verbosity except for MinGW builds (mingw-make cannot
# execute "@echo ..." commands inserted by qmake).
CONFIG += silent
}
}
# DEPENDPATH += . generators
INCLUDEPATH += .
QT += core \
gui \
xml \
network \
svg
greaterThan(QT_MAJOR_VERSION, 4) {
QT += widgets \
webkitwidgets \
printsupport \
help
# QMediaPlayer is not available in Qt4.
!CONFIG( no_qtmultimedia_player ) {
QT += multimedia
DEFINES += MAKE_QTMULTIMEDIA_PLAYER
}
} else {
QT += webkit
CONFIG += help
}
!CONFIG( no_ffmpeg_player ) {
DEFINES += MAKE_FFMPEG_PLAYER
}
QT += sql
CONFIG += exceptions \
rtti \
stl
OBJECTS_DIR = build
UI_DIR = build
MOC_DIR = build
RCC_DIR = build
LIBS += \
-lz \
-lbz2 \
-llzo2
win32 {
TARGET = GoldenDict
win32-msvc* {
VERSION = 1.5.0 # More complicated things cause errors during compilation under MSVC++
DEFINES += __WIN32 _CRT_SECURE_NO_WARNINGS
contains(QMAKE_TARGET.arch, x86_64) {
DEFINES += NOMINMAX __WIN64
}
LIBS += -L$${PWD}/winlibs/lib/msvc
QMAKE_CXXFLAGS += /wd4290 # silence the warning C4290: C++ exception specification ignored
QMAKE_LFLAGS_RELEASE += /OPT:REF /OPT:ICF
DEFINES += GD_NO_MANIFEST
# QMAKE_CXXFLAGS_RELEASE += /GL # slows down the linking significantly
LIBS += -lshell32 -luser32 -lsapi -lole32
Debug: LIBS+= -lhunspelld
Release: LIBS+= -lhunspell
HUNSPELL_LIB = hunspell
} else {
CONFIG(gcc48) {
x64 {
LIBS += -L$${PWD}/winlibs/lib64-48
QMAKE_CXXFLAGS += -m64
QMAKE_CFLAGS += -m64
} else {
LIBS += -L$${PWD}/winlibs/lib32-48
}
} else {
LIBS += -L$${PWD}/winlibs/lib
}
!x64:QMAKE_LFLAGS += -Wl,--large-address-aware
isEmpty(HUNSPELL_LIB) {
LIBS += -lhunspell-1.6.1
} else {
LIBS += -l$$HUNSPELL_LIB
}
QMAKE_CXXFLAGS += -Wextra -Wempty-body
}
LIBS += -liconv \
-lwsock32 \
-lpsapi \
-lole32 \
-loleaut32 \
-ladvapi32 \
-lcomdlg32
LIBS += -lvorbisfile \
-lvorbis \
-logg
!CONFIG( no_ffmpeg_player ) {
LIBS += -lao \
-lswresample-gd \
-lavutil-gd \
-lavformat-gd \
-lavcodec-gd
}
RC_FILE = goldendict.rc
INCLUDEPATH += winlibs/include
# Enable console in Debug mode on Windows, with useful logging messages
Debug:CONFIG += console
Release:DEFINES += NO_CONSOLE
gcc48:QMAKE_CXXFLAGS += -Wno-unused-local-typedefs
CONFIG += zim_support
!CONFIG( no_chinese_conversion_support ) {
CONFIG += chinese_conversion_support
}
greaterThan(QT_MAJOR_VERSION, 4) {
LIBS += -luxtheme
}
}
unix:!mac {
DEFINES += HAVE_X11
# This is to keep symbols for backtraces
QMAKE_CXXFLAGS += -rdynamic
QMAKE_LFLAGS += -rdynamic
greaterThan(QT_MAJOR_VERSION, 4) {
greaterThan(QT_MINOR_VERSION, 0) {
QT += x11extras
}
}
CONFIG += link_pkgconfig
PKGCONFIG += vorbisfile \
vorbis \
ogg \
hunspell
!CONFIG( no_ffmpeg_player ) {
PKGCONFIG += ao \
libavutil \
libavformat \
libavcodec \
libswresample \
}
arm {
LIBS += -liconv
} else {
LIBS += -lX11 -lXtst
}
# Install prefix: first try to use qmake's PREFIX variable,
# then $PREFIX from system environment, and if both fails,
# use the hardcoded /usr/local.
PREFIX = $${PREFIX}
isEmpty( PREFIX ):PREFIX = $$(PREFIX)
isEmpty( PREFIX ):PREFIX = /usr/local
message(Install Prefix is: $$PREFIX)
DEFINES += PROGRAM_DATA_DIR=\\\"$$PREFIX/share/goldendict/\\\"
target.path = $$PREFIX/bin/
locale.path = $$PREFIX/share/goldendict/locale/
locale.files = locale/*.qm
INSTALLS += target \
locale
icons.path = $$PREFIX/share/pixmaps
icons.files = redist/icons/*.*
INSTALLS += icons
desktops.path = $$PREFIX/share/applications
desktops.files = redist/*.desktop
INSTALLS += desktops
metainfo.path = $$PREFIX/share/metainfo
metainfo.files = redist/*.metainfo.xml
INSTALLS += metainfo
helps.path = $$PREFIX/share/goldendict/help/
helps.files = help/*.qch
INSTALLS += helps
}
freebsd {
LIBS += -liconv -lexecinfo
}
mac {
TARGET = GoldenDict
# Uncomment this line to make a universal binary.
# You will need to use Xcode 3 and Qt Carbon SDK
# if you want the support for PowerPC and/or Mac OS X 10.4
# CONFIG += x86 x86_64 ppc
LIBS = -lz \
-lbz2 \
-liconv \
-lvorbisfile \
-lvorbis \
-logg \
-lhunspell-1.6.1 \
-llzo2
!CONFIG( no_ffmpeg_player ) {
LIBS += -lao \
-lswresample-gd \
-lavutil-gd \
-lavformat-gd \
-lavcodec-gd
}
INCLUDEPATH = $${PWD}/maclibs/include
LIBS += -L$${PWD}/maclibs/lib -framework AppKit -framework Carbon
OBJECTIVE_SOURCES += lionsupport.mm \
machotkeywrapper.mm \
macmouseover.mm \
speechclient_mac.mm
ICON = icons/macicon.icns
QMAKE_INFO_PLIST = myInfo.plist
QMAKE_POST_LINK = mkdir -p GoldenDict.app/Contents/Frameworks & \
cp -nR $${PWD}/maclibs/lib/ GoldenDict.app/Contents/Frameworks/ & \
mkdir -p GoldenDict.app/Contents/MacOS/locale & \
cp -R locale/*.qm GoldenDict.app/Contents/MacOS/locale/ & \
mkdir -p GoldenDict.app/Contents/MacOS/help & \
cp -R $${PWD}/help/*.qch GoldenDict.app/Contents/MacOS/help/
CONFIG += zim_support
!CONFIG( no_chinese_conversion_support ) {
CONFIG += chinese_conversion_support
CONFIG( x86 ) {
QMAKE_POST_LINK += & mkdir -p GoldenDict.app/Contents/MacOS/opencc & \
cp -R $${PWD}/opencc/*.json GoldenDict.app/Contents/MacOS/opencc/ & \
cp -R $${PWD}/opencc/*.ocd GoldenDict.app/Contents/MacOS/opencc/
} else {
QMAKE_POST_LINK += & mkdir -p GoldenDict.app/Contents/MacOS/opencc & \
cp -R $${PWD}/opencc/x64/*.json GoldenDict.app/Contents/MacOS/opencc/ & \
cp -R $${PWD}/opencc/x64/*.ocd GoldenDict.app/Contents/MacOS/opencc/
}
}
}
DEFINES += PROGRAM_VERSION=\\\"$$VERSION\\\"
# Input
HEADERS += folding.hh \
inc_case_folding.hh \
inc_diacritic_folding.hh \
mainwindow.hh \
sptr.hh \
dictionary.hh \
ex.hh \
config.hh \
sources.hh \
utf8.hh \
file.hh \
bgl_babylon.hh \
bgl.hh \
initializing.hh \
article_netmgr.hh \
dictzip.h \
btreeidx.hh \
stardict.hh \
chunkedstorage.hh \
xdxf2html.hh \
iconv.hh \
lsa.hh \
htmlescape.hh \
dsl.hh \
dsl_details.hh \
filetype.hh \
fsencoding.hh \
groups.hh \
groups_widgets.hh \
instances.hh \
article_maker.hh \
scanpopup.hh \
articleview.hh \
audioplayerinterface.hh \
audioplayerfactory.hh \
ffmpegaudioplayer.hh \
multimediaaudioplayer.hh \
externalaudioplayer.hh \
externalviewer.hh \
wordfinder.hh \
groupcombobox.hh \
keyboardstate.hh \
mouseover.hh \
preferences.hh \
mutex.hh \
mediawiki.hh \
sounddir.hh \
hunspell.hh \
dictdfiles.hh \
audiolink.hh \
wstring.hh \
wstring_qt.hh \
processwrapper.hh \
hotkeywrapper.hh \
searchpanewidget.hh \
hotkeyedit.hh \
langcoder.hh \
editdictionaries.hh \
loaddictionaries.hh \
transliteration.hh \
romaji.hh \
belarusiantranslit.hh \
russiantranslit.hh \
german.hh \
website.hh \
orderandprops.hh \
language.hh \
dictionarybar.hh \
broken_xrecord.hh \
history.hh \
atomic_rename.hh \
articlewebview.hh \
zipfile.hh \
indexedzip.hh \
termination.hh \
greektranslit.hh \
webmultimediadownload.hh \
forvo.hh \
country.hh \
about.hh \
programs.hh \
parsecmdline.hh \
dictspanewidget.hh \
maintabwidget.hh \
mainstatusbar.hh \
gdappstyle.hh \
ufile.hh \
xdxf.hh \
sdict.hh \
decompress.hh \
aard.hh \
mruqmenu.hh \
dictinfo.hh \
zipsounds.hh \
stylescombobox.hh \
extlineedit.hh \
translatebox.hh \
historypanewidget.hh \
wordlist.hh \
mdictparser.hh \
mdx.hh \
voiceengines.hh \
ffmpegaudio.hh \
articleinspector.hh \
delegate.hh \
zim.hh \
gddebug.hh \
qt4x5.hh \
gestures.hh \
tiff.hh \
dictheadwords.hh \
fulltextsearch.hh \
ftshelpers.hh \
dictserver.hh \
helpwindow.hh \
slob.hh \
ripemd.hh \
gls.hh \
splitfile.hh \
favoritespanewidget.hh \
cpp_features.hh \
treeview.hh
FORMS += groups.ui \
dictgroupwidget.ui \
mainwindow.ui \
sources.ui \
initializing.ui \
scanpopup.ui \
articleview.ui \
preferences.ui \
about.ui \
editdictionaries.ui \
orderandprops.ui \
dictinfo.ui \
dictheadwords.ui \
authentication.ui \
fulltextsearch.ui
SOURCES += folding.cc \
main.cc \
dictionary.cc \
config.cc \
sources.cc \
mainwindow.cc \
utf8.cc \
file.cc \
bgl_babylon.cc \
bgl.cc \
initializing.cc \
article_netmgr.cc \
dictzip.c \
btreeidx.cc \
stardict.cc \
chunkedstorage.cc \
xdxf2html.cc \
iconv.cc \
lsa.cc \
htmlescape.cc \
dsl.cc \
dsl_details.cc \
filetype.cc \
fsencoding.cc \
groups.cc \
groups_widgets.cc \
instances.cc \
article_maker.cc \
scanpopup.cc \
articleview.cc \
audioplayerfactory.cc \
multimediaaudioplayer.cc \
externalaudioplayer.cc \
externalviewer.cc \
wordfinder.cc \
groupcombobox.cc \
keyboardstate.cc \
mouseover.cc \
preferences.cc \
mutex.cc \
mediawiki.cc \
sounddir.cc \
hunspell.cc \
dictdfiles.cc \
audiolink.cc \
wstring.cc \
wstring_qt.cc \
processwrapper.cc \
hotkeywrapper.cc \
hotkeyedit.cc \
langcoder.cc \
editdictionaries.cc \
loaddictionaries.cc \
transliteration.cc \
romaji.cc \
belarusiantranslit.cc \
russiantranslit.cc \
german.cc \
website.cc \
orderandprops.cc \
language.cc \
dictionarybar.cc \
broken_xrecord.cc \
history.cc \
atomic_rename.cc \
articlewebview.cc \
zipfile.cc \
indexedzip.cc \
termination.cc \
greektranslit.cc \
webmultimediadownload.cc \
forvo.cc \
country.cc \
about.cc \
programs.cc \
parsecmdline.cc \
maintabwidget.cc \
mainstatusbar.cc \
gdappstyle.cc \
ufile.cc \
xdxf.cc \
sdict.cc \
decompress.cc \
aard.cc \
mruqmenu.cc \
dictinfo.cc \
zipsounds.cc \
stylescombobox.cc \
extlineedit.cc \
translatebox.cc \
historypanewidget.cc \
wordlist.cc \
mdictparser.cc \
mdx.cc \
voiceengines.cc \
ffmpegaudio.cc \
articleinspector.cc \
delegate.cc \
zim.cc \
gddebug.cc \
gestures.cc \
tiff.cc \
dictheadwords.cc \
fulltextsearch.cc \
ftshelpers.cc \
dictserver.cc \
helpwindow.cc \
slob.cc \
ripemd.cc \
gls.cc \
splitfile.cc \
favoritespanewidget.cc \
treeview.cc
win32 {
FORMS += texttospeechsource.ui
SOURCES += mouseover_win32/ThTypes.c \
wordbyauto.cc \
guids.c \
x64.cc \
speechclient_win.cc \
texttospeechsource.cc \
speechhlp.cc
HEADERS += mouseover_win32/ThTypes.h \
wordbyauto.hh \
uiauto.hh \
x64.hh \
texttospeechsource.hh \
sapi.hh \
sphelper.hh \
speechclient.hh \
speechhlp.hh \
hotkeys.h
}
mac {
HEADERS += macmouseover.hh \
texttospeechsource.hh \
speechclient.hh
FORMS += texttospeechsource.ui
SOURCES += texttospeechsource.cc
}
unix:!mac {
HEADERS += scanflag.hh
FORMS += scanflag.ui
SOURCES += scanflag.cc
}
greaterThan(QT_MAJOR_VERSION, 4) {
HEADERS += wildcard.hh
SOURCES += wildcard.cc
}
CONFIG( zim_support ) {
DEFINES += MAKE_ZIM_SUPPORT
LIBS += -llzma -lzstd
}
!CONFIG( no_extra_tiff_handler ) {
DEFINES += MAKE_EXTRA_TIFF_HANDLER
LIBS += -ltiff
}
CONFIG( no_epwing_support ) {
DEFINES += NO_EPWING_SUPPORT
}
!CONFIG( no_epwing_support ) {
HEADERS += epwing.hh \
epwing_book.hh \
epwing_charmap.hh
SOURCES += epwing.cc \
epwing_book.cc \
epwing_charmap.cc
LIBS += -leb
}
CONFIG( chinese_conversion_support ) {
DEFINES += MAKE_CHINESE_CONVERSION_SUPPORT
FORMS += chineseconversion.ui
HEADERS += chinese.hh \
chineseconversion.hh
SOURCES += chinese.cc \
chineseconversion.cc
win32-msvc* {
Debug: LIBS += -lopenccd
Release: LIBS += -lopencc
} else {
mac {
LIBS += -lopencc.2
} else {
LIBS += -lopencc
}
}
}
CONFIG( old_hunspell ) {
DEFINES += OLD_HUNSPELL_INTERFACE
}
RESOURCES += resources.qrc \
flags.qrc
TRANSLATIONS += locale/ru_RU.ts \
locale/zh_CN.ts \
locale/cs_CZ.ts \
locale/de_DE.ts \
locale/el_GR.ts \
locale/bg_BG.ts \
locale/ar_SA.ts \
locale/lt_LT.ts \
locale/uk_UA.ts \
locale/vi_VN.ts \
locale/it_IT.ts \
locale/pl_PL.ts \
locale/ja_JP.ts \
locale/zh_TW.ts \
locale/sq_AL.ts \
locale/pt_BR.ts \
locale/es_AR.ts \
locale/es_BO.ts \
locale/es_ES.ts \
locale/sk_SK.ts \
locale/tr_TR.ts \
locale/qu_WI.ts \
locale/tg_TJ.ts \
locale/ay_WI.ts \
locale/be_BY.ts \
locale/be_BY@latin.ts \
locale/fr_FR.ts \
locale/ko_KR.ts \
locale/nl_NL.ts \
locale/sr_SR.ts \
locale/sv_SE.ts \
locale/tk_TM.ts \
locale/fa_IR.ts \
locale/mk_MK.ts \
locale/eo_EO.ts \
locale/fi_FI.ts \
locale/jb_JB.ts \
locale/hi_IN.ts \
locale/ie_001.ts
# Build version file
!isEmpty( hasGit ) {
QMAKE_EXTRA_TARGETS += revtarget
PRE_TARGETDEPS += $$PWD/version.txt
revtarget.target = $$PWD/version.txt
!win32 {
revtarget.commands = cd $$PWD; git describe --tags --always --dirty > $$revtarget.target
} else {
revtarget.commands = git --git-dir=\"$$PWD/.git\" describe --tags --always --dirty > $$revtarget.target
}
ALL_SOURCES = $$SOURCES $$HEADERS $$FORMS
for(src, ALL_SOURCES) {
QUALIFIED_SOURCES += $${PWD}/$${src}
}
revtarget.depends = $$QUALIFIED_SOURCES
}
# This makes qmake generate translations
win32:# Windows doesn't seem to have *-qt4 symlinks
isEmpty(QMAKE_LRELEASE):QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
isEmpty(QMAKE_LRELEASE):QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease-qt4
# The *.qm files might not exist when qmake is run for the first time,
# causing the standard install rule to be ignored, and no translations
# will be installed. With this, we create the qm files during qmake run.
!win32 {
system($${QMAKE_LRELEASE} -silent $${_PRO_FILE_} 2> /dev/null)
}
updateqm.input = TRANSLATIONS
updateqm.output = locale/${QMAKE_FILE_BASE}.qm
updateqm.commands = $$QMAKE_LRELEASE \
${QMAKE_FILE_IN} \
-qm \
${QMAKE_FILE_OUT}
updateqm.CONFIG += no_link
QMAKE_EXTRA_COMPILERS += updateqm
TS_OUT = $$TRANSLATIONS
TS_OUT ~= s/.ts/.qm/g
PRE_TARGETDEPS += $$TS_OUT
include( qtsingleapplication/src/qtsingleapplication.pri )