win32-msvc {
    TARGET = Jami
    TEMPLATE = app

    QT += core winextras qml quickcontrols2 quick xml multimedia network webengine svg sql

    CONFIG += suppress_vcproj_warnings c++17 qtquickcompiler

    QTQUICK_COMPILER_SKIPPED_RESOURCES += ./ressources.qrc

    # compiler options
    QMAKE_CXXFLAGS += /wd"4068" /wd"4099" /wd"4189" /wd"4267" /wd"4577" /wd"4467" /wd"4715" /wd"4828"
    QMAKE_CXXFLAGS += /MP /GS /W3 /Gy /Zc:wchar_t /Zi /Gm- /O2 /Zc:inline /fp:precise /errorReport:prompt
    QMAKE_CXXFLAGS += /Gd /Oi /MD /std:c++17 /FC /EHsc /nologo /sdl

    # linker options
    QMAKE_LFLAGS+= /ignore:4006,4049,4078,4098 /FORCE:MULTIPLE /INCREMENTAL:NO /Debug /LTCG /NODEFAULTLIB:LIBCMT

    # preprocessor defines
    DEFINES += UNICODE QT_NO_DEBUG NDEBUG

    # dependencies
    LRC= ../lrc
    DRING= ../daemon
    QRENCODE= $$PWD/qrencode-win32/qrencode-win32

    # client deps
    INCLUDEPATH += $${QRENCODE}
    LIBS += $${QRENCODE}/vc8/qrcodelib/x64/Release-Lib/qrcodelib.lib

    # lrc
    INCLUDEPATH += $${LRC}/src/
    LIBS += $${LRC}/msvc/release/ringclient_static.lib
    LIBS += $${LRC}/msvc/src/qtwrapper/Release/qtwrapper.lib

    # daemon
    INCLUDEPATH += ../daemon/contrib/msvc/include/
    LIBS += $${DRING}/build-local/x64/ReleaseLib_win32/bin/dring.lib
    LIBS += $${DRING}/contrib/msvc/lib/x64/libgnutls.lib

    # windows system libs
    LIBS += Shell32.lib Ole32.lib Advapi32.lib Shlwapi.lib User32.lib Gdi32.lib Crypt32.lib Strmiids.lib

    # output paths
    OBJECTS_DIR = obj/.obj
    MOC_DIR = obj/.moc
    RCC_DIR = obj/.rcc
    UI_DIR = obj/.ui

    # ReleaseCompile config
    contains(CONFIG, ReleaseCompile) {
        CONFIG(ReleaseCompile) {
            message(ReleaseCompile config enabled)
            Release: DEFINES += COMPILE_ONLY
        }
    }

    # beta config
    contains(CONFIG, Beta) {
        CONFIG(Beta) {
            message(Beta config enabled)
            Release: DESTDIR = x64/Beta
            Release: DEFINES += BETA
        }
    } else {
        Release: DESTDIR = x64/Release
    }
    Debug: DESTDIR = x64/Debug

    # qt dir
    QMAKE_INCDIR_QT=$(QTDIR)\include
    QMAKE_LIBDIR=$(QTDIR)\lib
    QMAKE_MOC=$(QTDIR)\bin\moc.exe
    QMAKE_QMAKE=$(QTDIR)\bin\qmake.exe

    # exe icons
    Release: RC_FILE = ico.rc

    # run the deployment script(run windeployqt)
    QMAKE_POST_LINK += $$quote(powershell -ExecutionPolicy Unrestricted -File $$PWD/copy-runtime-files.ps1 -outDir $${DESTDIR})
}

unix {
    TARGET = jami-qt
    TEMPLATE = app

    QT += quick quickwidgets widgets xml multimedia multimediawidgets network \
          webenginewidgets svg quickcontrols2 webengine webenginecore sql dbus

    # Maj/min versions can be checked(if needed) using:
    # equals(QT_MAJOR_VERSION, 5):lessThan(QT_MINOR_VERSION, 12) {}
    versionAtLeast(QT_VERSION, 5.12.0) {
        CONFIG += c++17
    } else {
        QMAKE_CXXFLAGS += -std=c++17
    }

    isEmpty(LRC) { LRC=$$PWD/../install/lrc/ }

    INCLUDEPATH += $${LRC}/include/libringclient
    INCLUDEPATH += $${LRC}/include
    INCLUDEPATH += ../src

    LIBS += -L$${LRC}/lib -lringclient
    LIBS += -lqrencode

    isEmpty(PREFIX) { PREFIX = /tmp/$${TARGET}/bin }
    target.path = $$PREFIX/bin
    INSTALLS += target
}

# Input
HEADERS += ./src/smartlistmodel.h \
        ./src/utils.h \
        ./src/bannedlistmodel.h \
        ./src/version.h \
        ./src/accountlistmodel.h \
        ./src/runguard.h \
        ./src/lrcinstance.h \
        ./src/globalsystemtray.h \
        ./src/settingskey.h \
        ./src/webchathelpers.h \
        ./src/pixbufmanipulator.h \
        ./src/rendermanager.h \
        ./src/connectivitymonitor.h \
        ./src/jamiavatartheme.h \
        ./src/mainapplication.h \
        ./src/qrimageprovider.h \
        ./src/messagesadapter.h \
        ./src/accountadapter.h \
        ./src/tintedbuttonimageprovider.h \
        ./src/calladapter.h \
        ./src/conversationsadapter.h \
        ./src/distantrenderer.h \
        ./src/previewrenderer.h \
        ./src/qmladapterbase.h \
        ./src/avadapter.h \
        ./src/contactadapter.h \
        ./src/mediahandleradapter.h \
        ./src/settingsadaptor.h \
        ./src/deviceitemlistmodel.h \
        ./src/pluginitemlistmodel.h \
        ./src/mediahandleritemlistmodel.h \
        ./src/preferenceitemlistmodel.h \
        ./src/audiocodeclistmodel.h \
        ./src/videocodeclistmodel.h \
        ./src/accountstomigratelistmodel.h \
        ./src/clientwrapper.h \
        ./src/audioinputdevicemodel.h \
        ./src/videoinputdevicemodel.h \
        ./src/audiooutputdevicemodel.h \
        ./src/pluginlistpreferencemodel.h \
        ./src/videoformatfpsmodel.h \
        ./src/videoformatresolutionmodel.h \
        ./src/audiomanagerlistmodel.h

SOURCES += ./src/bannedlistmodel.cpp \
        ./src/accountlistmodel.cpp \
        ./src/runguard.cpp \
        ./src/webchathelpers.cpp \
        ./src/main.cpp \
        ./src/globalsystemtray.cpp \
        ./src/smartlistmodel.cpp \
        ./src/utils.cpp \
        ./src/pixbufmanipulator.cpp \
        ./src/rendermanager.cpp \
        ./src/connectivitymonitor.cpp \
        ./src/mainapplication.cpp \
        ./src/messagesadapter.cpp \
        ./src/accountadapter.cpp \
        ./src/calladapter.cpp \
        ./src/conversationsadapter.cpp \
        ./src/distantrenderer.cpp \
        ./src/previewrenderer.cpp \
        ./src/qmladapterbase.cpp \
        ./src/avadapter.cpp \
        ./src/contactadapter.cpp \
        ./src/mediahandleradapter.cpp \
        ./src/settingsadaptor.cpp \
        ./src/deviceitemlistmodel.cpp \
        ./src/pluginitemlistmodel.cpp \
        ./src/mediahandleritemlistmodel.cpp \
        ./src/preferenceitemlistmodel.cpp \
        ./src/audiocodeclistmodel.cpp \
        ./src/videocodeclistmodel.cpp \
        ./src/accountstomigratelistmodel.cpp \
        ./src/clientwrapper.cpp \
        ./src/audioinputdevicemodel.cpp \
        ./src/videoinputdevicemodel.cpp \
        ./src/audiooutputdevicemodel.cpp \
        ./src/pluginlistpreferencemodel.cpp \
        ./src/videoformatfpsmodel.cpp \
        ./src/videoformatresolutionmodel.cpp \
        ./src/audiomanagerlistmodel.cpp

RESOURCES += ./ressources.qrc \
             ./qml.qrc
