monero-gui/monero-wallet-gui.pro

533 lines
15 KiB
Prolog
Raw Normal View History

# qml components require at least QT 5.9.7
lessThan (QT_MAJOR_VERSION, 5) | lessThan (QT_MINOR_VERSION, 9) {
error("Can't build with Qt $${QT_VERSION}. Use at least Qt 5.9.7")
}
2014-07-07 17:08:30 +00:00
TEMPLATE = app
QT += svg qml gui-private quick widgets
2014-07-07 17:08:30 +00:00
WALLET_ROOT=$$PWD/monero
2016-05-17 13:03:59 +00:00
CONFIG += c++11 link_pkgconfig
packagesExist(libusb-1.0) {
PKGCONFIG += libusb-1.0
}
2018-10-13 23:04:19 +00:00
packagesExist(hidapi-libusb) {
PKGCONFIG += hidapi-libusb
}
GCC_VERSION = $$system("g++ -dumpversion")
GCC_VERSION = $$split(GCC_VERSION, .)
GCC_VERSION_MAJOR = $$member(GCC_VERSION, 0)
GCC_VERSION_MINOR = $$member(GCC_VERSION, 1)
greaterThan(GCC_VERSION_MAJOR, 9) | if(equals(GCC_VERSION_MAJOR, 9) : greaterThan(GCC_VERSION_MINOR, 0)) {
GCC_9_1_OR_GREATER = TRUE
}
!win32 | !isEmpty(GCC_9_1_OR_GREATER) {
QMAKE_CXXFLAGS += -fPIC -fstack-protector -fstack-protector-strong
QMAKE_LFLAGS += -fstack-protector -fstack-protector-strong
}
2019-06-01 04:50:56 +00:00
!win32 {
2019-06-01 04:50:56 +00:00
packagesExist(protobuf) {
PKGCONFIG += protobuf
}
}
2016-02-23 15:59:26 +00:00
# cleaning "auto-generated" bitmonero directory on "make distclean"
QMAKE_DISTCLEAN += -r $$WALLET_ROOT
2017-01-12 19:53:27 +00:00
INCLUDEPATH += $$WALLET_ROOT/include \
$$PWD/src/libwalletqt \
$$PWD/src/QR-Code-generator \
2017-01-01 04:55:49 +00:00
$$PWD/src \
$$WALLET_ROOT/src
2016-05-17 13:03:59 +00:00
HEADERS += \
src/main/filter.h \
src/main/clipboardAdapter.h \
src/main/oscursor.h \
2016-06-03 14:30:19 +00:00
src/libwalletqt/WalletManager.h \
2016-06-08 10:53:24 +00:00
src/libwalletqt/Wallet.h \
src/libwalletqt/PendingTransaction.h \
src/libwalletqt/TransactionHistory.h \
src/libwalletqt/TransactionInfo.h \
src/libwalletqt/QRCodeImageProvider.h \
2016-12-03 11:06:57 +00:00
src/libwalletqt/Transfer.h \
2018-03-05 16:19:45 +00:00
src/NetworkType.h \
src/main/oshelper.h \
src/TranslationManager.h \
2016-10-07 20:05:51 +00:00
src/model/TransactionHistoryModel.h \
src/model/TransactionHistorySortFilterModel.h \
src/QR-Code-generator/BitBuffer.hpp \
src/QR-Code-generator/QrCode.hpp \
2016-11-25 20:08:39 +00:00
src/QR-Code-generator/QrSegment.hpp \
2016-12-10 01:01:04 +00:00
src/model/AddressBookModel.h \
2016-12-15 23:47:53 +00:00
src/libwalletqt/AddressBook.h \
src/model/SubaddressModel.h \
src/libwalletqt/Subaddress.h \
src/model/SubaddressAccountModel.h \
src/libwalletqt/SubaddressAccount.h \
2017-01-12 19:53:27 +00:00
src/zxcvbn-c/zxcvbn.h \
2017-01-31 04:36:08 +00:00
src/libwalletqt/UnsignedTransaction.h \
src/main/Logger.h \
src/main/MainApp.h \
src/qt/FutureScheduler.h \
src/qt/ipc.h \
2019-05-01 22:41:09 +00:00
src/qt/KeysFiles.h \
src/qt/utils.h \
src/qt/prices.h \
src/qt/macoshelper.h \
2019-07-16 16:47:12 +00:00
src/qt/MoneroSettings.h \
src/qt/TailsOS.h
SOURCES += src/main/main.cpp \
src/main/filter.cpp \
src/main/clipboardAdapter.cpp \
src/main/oscursor.cpp \
2016-06-03 14:30:19 +00:00
src/libwalletqt/WalletManager.cpp \
2016-06-08 10:53:24 +00:00
src/libwalletqt/Wallet.cpp \
src/libwalletqt/PendingTransaction.cpp \
src/libwalletqt/TransactionHistory.cpp \
src/libwalletqt/TransactionInfo.cpp \
src/libwalletqt/QRCodeImageProvider.cpp \
src/main/oshelper.cpp \
src/TranslationManager.cpp \
2016-10-07 20:05:51 +00:00
src/model/TransactionHistoryModel.cpp \
src/model/TransactionHistorySortFilterModel.cpp \
src/QR-Code-generator/BitBuffer.cpp \
src/QR-Code-generator/QrCode.cpp \
2016-11-25 20:08:39 +00:00
src/QR-Code-generator/QrSegment.cpp \
2016-12-10 01:01:04 +00:00
src/model/AddressBookModel.cpp \
2016-12-15 23:47:53 +00:00
src/libwalletqt/AddressBook.cpp \
src/model/SubaddressModel.cpp \
src/libwalletqt/Subaddress.cpp \
src/model/SubaddressAccountModel.cpp \
src/libwalletqt/SubaddressAccount.cpp \
2017-01-12 19:53:27 +00:00
src/zxcvbn-c/zxcvbn.c \
2017-01-31 04:36:08 +00:00
src/libwalletqt/UnsignedTransaction.cpp \
src/main/Logger.cpp \
src/main/MainApp.cpp \
src/qt/FutureScheduler.cpp \
src/qt/ipc.cpp \
2019-05-01 22:41:09 +00:00
src/qt/KeysFiles.cpp \
src/qt/utils.cpp \
src/qt/prices.cpp \
src/qt/MoneroSettings.cpp \
src/qt/TailsOS.cpp
2014-07-07 17:08:30 +00:00
CONFIG(DISABLE_PASS_STRENGTH_METER) {
HEADERS -= src/zxcvbn-c/zxcvbn.h
SOURCES -= src/zxcvbn-c/zxcvbn.c
DEFINES += "DISABLE_PASS_STRENGTH_METER"
}
2017-01-29 18:47:00 +00:00
!ios {
HEADERS += src/daemon/DaemonManager.h
SOURCES += src/daemon/DaemonManager.cpp
}
2016-01-29 19:01:52 +00:00
lupdate_only {
SOURCES = *.qml \
components/*.qml \
2019-04-11 01:17:29 +00:00
components/effects/*.qml \
2016-01-29 19:01:52 +00:00
pages/*.qml \
pages/settings/*.qml \
2018-12-08 15:55:29 +00:00
pages/merchant/*.qml \
wizard/*.qml \
wizard/*js
2016-01-29 19:01:52 +00:00
}
# Linker flags required by Trezor
TREZOR_LINKER = $$cat($$WALLET_ROOT/lib/trezor_link_flags.txt)
2017-01-29 18:47:00 +00:00
ios:armv7 {
message("target is armv7")
LIBS += \
2017-04-03 16:51:55 +00:00
-L$$PWD/../ofxiOSBoost/build/libs/boost/lib/armv7 \
2017-01-29 18:47:00 +00:00
}
ios:arm64 {
message("target is arm64")
LIBS += \
2017-04-03 16:51:55 +00:00
-L$$PWD/../ofxiOSBoost/build/libs/boost/lib/arm64 \
2017-01-29 18:47:00 +00:00
}
LIBS_COMMON = \
-lwallet_merged \
-llmdb \
-lepee \
-lunbound \
-lsodium \
-leasylogging \
-lrandomx
2017-08-07 12:52:34 +00:00
!ios:!android {
LIBS += -L$$WALLET_ROOT/lib \
$$LIBS_COMMON
2017-01-29 18:47:00 +00:00
}
2017-08-07 12:52:34 +00:00
android {
message("Host is Android")
LIBS += -L$$WALLET_ROOT/lib \
$$LIBS_COMMON
2017-08-07 12:52:34 +00:00
}
QMAKE_CXXFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -Wformat -Wformat-security
QMAKE_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -Wformat -Wformat-security
2017-04-03 16:51:55 +00:00
2017-01-29 18:47:00 +00:00
ios {
message("Host is IOS")
QMAKE_LFLAGS += -v
QMAKE_IOS_DEVICE_ARCHS = arm64
CONFIG += arm64
LIBS += -L$$WALLET_ROOT/lib-ios \
$$LIBS_COMMON
2016-07-04 15:17:26 +00:00
2017-01-29 18:47:00 +00:00
LIBS+= \
2017-04-03 16:51:55 +00:00
-L$$PWD/../OpenSSL-for-iPhone/lib \
-L$$PWD/../ofxiOSBoost/build/libs/boost/lib/arm64 \
2017-01-29 18:47:00 +00:00
-lboost_serialization \
-lboost_thread \
-lboost_system \
-lboost_date_time \
-lboost_filesystem \
-lboost_regex \
-lboost_chrono \
-lboost_program_options \
-lssl \
-lcrypto \
-ldl
}
2017-01-31 04:36:08 +00:00
CONFIG(WITH_SCANNER) {
if( greaterThan(QT_MINOR_VERSION, 5) ) {
message("using camera scanner")
2017-03-27 17:39:47 +00:00
QT += multimedia
2017-01-31 04:36:08 +00:00
DEFINES += "WITH_SCANNER"
2017-03-27 17:39:47 +00:00
INCLUDEPATH += $$PWD/src/QR-Code-scanner
HEADERS += \
src/QR-Code-scanner/QrScanThread.h \
src/QR-Code-scanner/QrCodeScanner.h
SOURCES += \
src/QR-Code-scanner/QrScanThread.cpp \
src/QR-Code-scanner/QrCodeScanner.cpp
2017-01-31 04:36:08 +00:00
android {
INCLUDEPATH += $$PWD/../ZBar/include
LIBS += -lzbarjni -liconv
} else {
LIBS += -lzbar
}
} else {
message("Skipping camera scanner because of Incompatible Qt Version !")
}
}
2017-01-29 18:47:00 +00:00
# currently we only support x86 build as qt.io only provides prebuilt qt for x86 mingw
2016-07-04 15:17:26 +00:00
win32 {
# QMAKE_HOST.arch is unreliable, will allways report 32bit if mingw32 shell is run.
# Obtaining arch through uname should be reliable. This also fixes building the project in Qt creator without changes.
MSYS_HOST_ARCH = $$system(uname -a | grep -o "x86_64")
# WIN64 Host settings
contains(MSYS_HOST_ARCH, x86_64) {
message("Host is 64bit")
MSYS_ROOT_PATH=c:/msys64
2016-12-13 20:57:14 +00:00
# WIN32 Host settings
} else {
message("Host is 32bit")
MSYS_ROOT_PATH=c:/msys32
}
# WIN64 Target settings
contains(QMAKE_HOST.arch, x86_64) {
2017-03-08 13:21:35 +00:00
MSYS_MINGW_PATH=/mingw64
2016-12-04 19:03:24 +00:00
# WIN32 Target settings
} else {
2017-03-08 13:21:35 +00:00
MSYS_MINGW_PATH=/mingw32
}
MSYS_PATH=$$MSYS_ROOT_PATH$$MSYS_MINGW_PATH
# boost root path
BOOST_PATH=$$MSYS_PATH/boost
BOOST_MINGW_PATH=$$MSYS_MINGW_PATH/boost
LIBS+=-L$$MSYS_PATH/lib
LIBS+=-L$$MSYS_MINGW_PATH/lib
2016-12-04 19:03:24 +00:00
LIBS+=-L$$BOOST_PATH/lib
LIBS+=-L$$BOOST_MINGW_PATH/lib
2016-12-13 20:57:14 +00:00
QMAKE_LFLAGS += -static-libgcc -static-libstdc++
2016-07-04 15:17:26 +00:00
LIBS+= \
-Wl,-Bdynamic \
-lwinscard \
-lwsock32 \
-lIphlpapi \
-lcrypt32 \
-lhidapi \
-lgdi32 $$TREZOR_LINKER \
2016-07-04 15:17:26 +00:00
-Wl,-Bstatic \
-lboost_serialization-mt \
-lboost_thread-mt \
-lboost_system-mt \
-lboost_date_time-mt \
-lboost_filesystem-mt \
-lboost_regex-mt \
-lboost_chrono-mt \
-lboost_program_options-mt \
-lboost_locale-mt \
-licuio \
-licuin \
-licuuc \
-licudt \
-licutu \
-liconv \
-lstdc++ \
-lpthread \
-lsetupapi \
2016-07-04 15:17:26 +00:00
-lssl \
2018-10-10 00:24:33 +00:00
-lsodium \
2019-06-01 04:50:56 +00:00
-lcrypto \
2019-12-30 12:29:17 +00:00
-lws2_32 \
-lole32
2016-12-13 20:57:14 +00:00
!contains(QMAKE_TARGET.arch, x86_64) {
message("Target is 32bit")
## Windows x86 (32bit) specific build here
## there's 2Mb stack in libwallet allocated internally, so we set stack=4Mb
## this fixes app crash for x86 Windows build
QMAKE_LFLAGS += -Wl,--stack,4194304
} else {
message("Target is 64bit")
}
QMAKE_LFLAGS += -Wl,--dynamicbase -Wl,--nxcompat
2016-07-04 15:17:26 +00:00
}
linux {
CONFIG(static) {
message("using static libraries")
2017-02-07 19:10:17 +00:00
LIBS+= -Wl,-Bstatic
QMAKE_LFLAGS += -static-libgcc -static-libstdc++
QMAKE_LIBDIR += /usr/local/ssl/lib
2017-03-27 19:42:01 +00:00
# contains(QT_ARCH, x86_64) {
2018-11-02 01:31:08 +00:00
LIBS+= -lunbound \
-lusb-1.0 \
-lhidapi-hidraw \
-ludev
2017-03-27 19:42:01 +00:00
# }
} else {
2017-02-24 02:23:55 +00:00
# On some distro's we need to add dynload
LIBS+= -ldl
}
2017-02-07 19:10:17 +00:00
2016-07-04 15:17:26 +00:00
LIBS+= \
-lboost_serialization \
-lboost_thread \
-lboost_system \
-lboost_date_time \
-lboost_filesystem \
2016-07-04 15:17:26 +00:00
-lboost_regex \
-lboost_chrono \
-lboost_program_options \
-lssl \
2018-03-27 00:03:59 +00:00
-llmdb \
2018-10-10 00:24:33 +00:00
-lsodium \
-lhidapi-libusb \
2019-08-10 20:09:30 +00:00
-lcrypto $$TREZOR_LINKER
2017-02-24 16:29:35 +00:00
if(!android) {
LIBS+= \
-Wl,-Bdynamic \
2019-08-10 20:09:30 +00:00
-lGL \
-lX11
2017-02-24 16:29:35 +00:00
}
# currently monero has an issue with "static" build and linunwind-dev,
# so we link libunwind-dev only for non-Ubuntu distros
CONFIG(libunwind_off) {
message(Building without libunwind)
} else {
message(Building with libunwind)
LIBS += -Wl,-Bdynamic -lunwind
}
QMAKE_LFLAGS += -pie -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack
2016-07-04 15:17:26 +00:00
}
macx {
# mixing static and shared libs are not supported on mac
# CONFIG(static) {
# message("using static libraries")
# LIBS+= -Wl,-Bstatic
# }
OPENSSL_LIBRARY_DIRS = $$system(brew --prefix openssl, lines, EXIT_CODE)
equals(EXIT_CODE, 0) {
OPENSSL_LIBRARY_DIRS = $$OPENSSL_LIBRARY_DIRS/lib
} else {
OPENSSL_LIBRARY_DIRS = /usr/local/ssl/lib
}
QT += macextras
OBJECTIVE_SOURCES += src/qt/macoshelper.mm
LIBS+= -Wl,-dead_strip
LIBS+= -Wl,-dead_strip_dylibs
LIBS+= -Wl,-bind_at_load
LIBS+= \
-L/usr/local/lib \
-L$$OPENSSL_LIBRARY_DIRS \
-L/usr/local/opt/boost/lib \
-lboost_serialization \
2016-07-21 13:29:37 +00:00
-lboost_thread-mt \
-lboost_system \
-lboost_date_time \
-lboost_filesystem \
-lboost_regex \
-lboost_chrono \
-lboost_program_options \
-framework CoreFoundation \
-framework AppKit \
-lhidapi \
-lssl \
2018-10-10 00:24:33 +00:00
-lsodium \
-lcrypto \
-ldl $$TREZOR_LINKER
QMAKE_LFLAGS += -pie
}
2016-07-27 19:32:33 +00:00
# translation stuff
TRANSLATIONS = $$files($$PWD/translations/monero-core_*.ts)
2016-07-27 19:32:33 +00:00
CONFIG(release, debug|release) {
2016-08-03 12:59:42 +00:00
DESTDIR = release/bin
LANGUPD_OPTIONS = -locations none -no-ui-lines -no-obsolete
2016-07-27 19:32:33 +00:00
LANGREL_OPTIONS = -compress -nounfinished -removeidentical
} else {
2016-08-03 12:59:42 +00:00
DESTDIR = debug/bin
2016-07-27 19:32:33 +00:00
LANGUPD_OPTIONS =
# LANGREL_OPTIONS = -markuntranslated "MISS_TR "
2016-07-27 19:32:33 +00:00
}
TRANSLATION_TARGET_DIR = $$OUT_PWD/translations
2016-08-03 12:59:42 +00:00
2017-01-29 18:47:00 +00:00
!ios {
isEmpty(QMAKE_LUPDATE) {
win32:LANGUPD = $$[QT_INSTALL_BINS]\lupdate.exe
else:LANGUPD = $$[QT_INSTALL_BINS]/lupdate
}
2016-01-29 19:01:52 +00:00
2017-01-29 18:47:00 +00:00
isEmpty(QMAKE_LRELEASE) {
win32:LANGREL = $$[QT_INSTALL_BINS]\lrelease.exe
else:LANGREL = $$[QT_INSTALL_BINS]/lrelease
}
langupd.command = \
$$LANGUPD $$LANGUPD_OPTIONS $$shell_path($$_PRO_FILE) -ts $$_PRO_FILE_PWD/$$TRANSLATIONS
2016-07-27 19:32:33 +00:00
2017-01-29 18:47:00 +00:00
langrel.depends = langupd
langrel.input = TRANSLATIONS
langrel.output = $$TRANSLATION_TARGET_DIR/${QMAKE_FILE_BASE}.qm
langrel.commands = \
$$LANGREL $$LANGREL_OPTIONS ${QMAKE_FILE_IN} -qm $$TRANSLATION_TARGET_DIR/${QMAKE_FILE_BASE}.qm
langrel.CONFIG += no_link
QMAKE_EXTRA_TARGETS += langupd deploy deploy_win
QMAKE_EXTRA_COMPILERS += langrel
# Compile an initial version of translation files when running qmake
# the first time and generate the resource file for translations.
!exists($$TRANSLATION_TARGET_DIR) {
mkpath($$TRANSLATION_TARGET_DIR)
}
qrc_entry = "<RCC>"
qrc_entry += ' <qresource prefix="/">'
write_file($$TRANSLATION_TARGET_DIR/translations.qrc, qrc_entry)
for(tsfile, TRANSLATIONS) {
qmfile = $$TRANSLATION_TARGET_DIR/$$basename(tsfile)
qmfile ~= s/.ts$/.qm/
system($$LANGREL $$LANGREL_OPTIONS $$tsfile -qm $$qmfile)
qrc_entry = " <file>$$basename(qmfile)</file>"
write_file($$TRANSLATION_TARGET_DIR/translations.qrc, qrc_entry, append)
}
qrc_entry = " </qresource>"
qrc_entry += "</RCC>"
write_file($$TRANSLATION_TARGET_DIR/translations.qrc, qrc_entry, append)
RESOURCES += $$TRANSLATION_TARGET_DIR/translations.qrc
}
# Update: no issues with the "slow link process" anymore,
# for development, just build debug version of libwallet_merged lib
# by invoking 'get_libwallet_api.sh Debug'
# so we update translations everytime even for debug build
PRE_TARGETDEPS += langupd compiler_langrel_make_all
2014-07-07 17:08:30 +00:00
RESOURCES += qml.qrc
2017-04-03 16:51:55 +00:00
CONFIG += qtquickcompiler
2014-07-07 17:08:30 +00:00
# Additional import path used to resolve QML modules in Qt Creator's code model
2019-02-01 16:57:30 +00:00
QML_IMPORT_PATH = fonts
2014-07-07 17:08:30 +00:00
# Default rules for deployment.
include(deployment.pri)
2016-07-27 19:32:33 +00:00
macx {
2016-07-27 20:17:21 +00:00
deploy.commands += macdeployqt $$sprintf("%1/%2/%3.app", $$OUT_PWD, $$DESTDIR, $$TARGET) -qmldir=$$PWD
2016-07-27 19:32:33 +00:00
}
win32 {
deploy.commands += windeployqt $$sprintf("%1/%2/%3.exe", $$OUT_PWD, $$DESTDIR, $$TARGET) -release -no-translations -qmldir=$$PWD
2016-12-13 20:57:14 +00:00
# Win64 msys2 deploy settings
contains(QMAKE_HOST.arch, x86_64) {
deploy.commands += $$escape_expand(\n\t) $$PWD/windeploy_helper.sh $$DESTDIR
}
2016-07-27 19:32:33 +00:00
}
2017-01-01 04:55:49 +00:00
linux:!android {
2016-12-20 15:44:01 +00:00
deploy.commands += $$escape_expand(\n\t) $$PWD/linuxdeploy_helper.sh $$DESTDIR $$TARGET
}
2017-01-01 04:55:49 +00:00
android{
deploy.commands += make install INSTALL_ROOT=$$DESTDIR && androiddeployqt --input android-libmonero-wallet-gui.so-deployment-settings.json --output $$DESTDIR --deployment bundled --android-platform android-21 --jdk /usr/lib/jvm/java-8-openjdk-amd64 -qmldir=$$PWD
}
2014-07-07 17:08:30 +00:00
2016-02-06 16:19:54 +00:00
OTHER_FILES += \
.gitignore \
$$TRANSLATIONS
2016-02-23 15:59:26 +00:00
DISTFILES += \
2017-01-12 19:53:27 +00:00
notes.txt \
2019-01-14 00:02:44 +00:00
monero/src/wallet/CMakeLists.txt
VERSION = $$cat('version.js', lines)
VERSION = $$find(VERSION, 'GUI_VERSION')
2020-02-13 02:19:18 +00:00
VERSION_LONG = $$replace(VERSION, '.*\"v(.*)\"', '\1')
VERSION = $$replace(VERSION, '.*(\d+\.\d+\.\d+\.\d+).*', '\1')
2016-08-04 11:16:38 +00:00
2016-08-04 11:52:33 +00:00
# windows application icon
RC_ICONS = images/appicon.ico
2016-08-04 11:52:33 +00:00
2018-05-02 15:27:22 +00:00
# mac Info.plist & application icon
QMAKE_INFO_PLIST = $$PWD/share/Info.plist
2020-02-13 02:19:18 +00:00
macx {
QMAKE_POST_LINK += sed -i "''" -e "s/@VERSION@/$$VERSION/g" -e "s/@VERSION_LONG@/$$VERSION_LONG/g" "$$sprintf("%1/%2/%3.app", $$OUT_PWD, $$DESTDIR, $$TARGET)/Contents/Info.plist";
}
2016-08-04 11:52:33 +00:00
ICON = $$PWD/images/appicon.icns