#-------------------------------------------------
#
# Project created by QtCreator 2019-08-06T10:27:47
#
#-------------------------------------------------
TARGET = OldDeviceUsbAdapter
TEMPLATE = app

VERSION_MAJOR = 1
VERSION_MINOR = 0
VERSION_BUILD = 0

VERSION = $${VERSION_MAJOR}.$${VERSION_MINOR}.$${VERSION_BUILD}
DEFINES += APP_VERSION=\\\"$$VERSION\\\"

QT -= gui
QT += core
QT += network
QT += websockets

CONFIG += c++17
CONFIG += console
CONFIG += thread
CONFIG -= app_bundle

!versionAtLeast(QT_VERSION, 5.15) {
  DEFINES += OLD_QT_VERSION
}

versionAtLeast(QT_VERSION, 6.0) {
  DEFINES += QT_VERSION_6_OR_HIGHER
  QT += core5compat
}

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

win* {
  DEFINES += WIN_COMPILER
}
!win* {
  DEFINES += UNIX_COMPILER
}
win32-msvc* {
  QMAKE_LFLAGS += /NODEFAULTLIB:LIBCMT
  QMAKE_LFLAGS += /ignore:4099  # ignore warnings from libusb-1.0
  QMAKE_CXXFLAGS += /bigobj
}
win32-g++ {
  QMAKE_CXXFLAGS += -flto
}

RC_FILE = app.rc

SOURCES += \
  $$PWD/src/main.cpp

HEADERS += \
  $$PWD/include/LinkConfiguration.h

INCLUDEPATH += $$PWD/include
INCLUDEPATH += $$PWD/libs
INCLUDEPATH += $$PWD/libs/CppCommon
INCLUDEPATH += $$PWD/libs/DeviceCommonInfo

include(./libs/CppCommon/Common/Common.pri)
include(./libs/CppCommon/NetQt/NetQt.pri)
include(./libs/DeviceCommonInfo/DeviceCommonInfo.pri)
include(./libs/DeviceCommonInfo/Cpp/Qt/Qt.pri)
include(./include/Usb/Usb.pri)
include(./include/DeviceComplexCommands/DeviceComplexCommands.pri)
include(./include/DeviceWebApi/DeviceWebApi.pri)
include(./include/DeviceSettings/DeviceSettings.pri)
include(./include/Terminal/Terminal.pri)

PROJECT_DIR_PATH = $$PWD

CONFIG(debug, debug|release) {
  DESTDIR_PATH = $$PWD/build-$${TARGET}-debug
}
CONFIG(release, debug|release) {
  DESTDIR_PATH = $$PWD/build-$${TARGET}-release
}

DESTDIR = $${DESTDIR_PATH}
OBJECTS_DIR = $${DESTDIR_PATH}/.obj
MOC_DIR = $${DESTDIR_PATH}/.moc
RCC_DIR = $${DESTDIR_PATH}/.rcc
UI_DIR = $${DESTDIR_PATH}/.ui

win32 {
  DESTDIR_PATH ~= s,/,\\,g
  PROJECT_DIR_PATH ~= s,/,\\,g
}

!equals(PROJECT_DIR_PATH, $${DESTDIR_PATH}) {
  DEVICE_SETTINGS_SRC_DIR_PATH = $$PWD/include/DeviceSettings
  DEVICE_COMMON_INFO_SRC_DIR_PATH = $$PWD/libs/DeviceCommonInfo/Devices
  WEB_TERMINAL_SRC_DIR_PATH = $$PWD/html/web-socket-terminal
  COMMAND_TEST_SRC_DIR_PATH = $$PWD/html/command-test/dist
  CABLE_SETTINGS_SRC_PATH = $$PWD/libs/DeviceCommonInfo/Cables.json

  DEVICE_SETTINGS_DEST_DIR_PATH = $${DESTDIR_PATH}
  DEVICE_COMMON_INFO_DEST_DIR_PATH = $${DESTDIR_PATH}/Devices
  WEB_TERMINAL_DEST_DIR_PATH = $${DESTDIR_PATH}/html/web-socket-terminal
  COMMAND_TEST_DEST_DIR_PATH = $${DESTDIR_PATH}/html/command-test/dist
  CABLE_SETTINGS_DEST_PATH = $${DESTDIR_PATH}/Cables.json

  linux-g++{
    !exists($${DESTDIR_PATH}/html) {
      QMAKE_POST_LINK += $$quote(mkdir -p $${DESTDIR_PATH}/html $$escape_expand(\n\t))
    }
    !exists($${DESTDIR_PATH}/html/command-test) {
      QMAKE_POST_LINK += $$quote(mkdir -p $${DESTDIR_PATH}/html/command-test $$escape_expand(\n\t))
    }
    !exists($${COMMAND_TEST_DEST_DIR_PATH}) {
      QMAKE_POST_LINK += $$quote(mkdir -p $${COMMAND_TEST_DEST_DIR_PATH} $$escape_expand(\n\t))
    }
    !exists($${WEB_TERMINAL_DEST_DIR_PATH}) {
      QMAKE_POST_LINK += $$quote(mkdir -p $${WEB_TERMINAL_DEST_DIR_PATH} $$escape_expand(\n\t))
    }
    !exists($${COMMAND_TEST_DEST_DIR_PATH}) {
      QMAKE_POST_LINK += $$quote(mkdir -p $${DEVICE_COMMON_INFO_DEST_DIR_PATH} $$escape_expand(\n\t))
    }
    QMAKE_POST_LINK +=$$quote(cp $${PROJECT_DIR_PATH}/settings.json $${DESTDIR_PATH}/settings.json $$escape_expand(\n\t))
    QMAKE_POST_LINK +=$$quote(cp $${CABLE_SETTINGS_SRC_PATH} $${CABLE_SETTINGS_DEST_PATH} $$escape_expand(\n\t))
    QMAKE_POST_LINK +=$$quote(cp -r $${DEVICE_COMMON_INFO_SRC_DIR_PATH}/* $${DEVICE_COMMON_INFO_DEST_DIR_PATH} $$escape_expand(\n\t))
    QMAKE_POST_LINK +=$$quote(find $${DEVICE_COMMON_INFO_DEST_DIR_PATH} -type f -name "*.pri" -print0 | xargs -0 rm -f $$escape_expand(\n\t))
    QMAKE_POST_LINK +=$$quote(cp -r $${DEVICE_SETTINGS_SRC_DIR_PATH}/* $${DEVICE_SETTINGS_DEST_DIR_PATH} $$escape_expand(\n\t))
    QMAKE_POST_LINK +=$$quote(find $${DEVICE_SETTINGS_DEST_DIR_PATH} -type f -name "*.pri" -print0 | xargs -0 rm -f $$escape_expand(\n\t))
    QMAKE_POST_LINK +=$$quote(cp -r $${WEB_TERMINAL_SRC_DIR_PATH}/* $${WEB_TERMINAL_DEST_DIR_PATH} $$escape_expand(\n\t))
    QMAKE_POST_LINK +=$$quote(cp -r $${COMMAND_TEST_SRC_DIR_PATH}/* $${COMMAND_TEST_DEST_DIR_PATH} $$escape_expand(\n\t))
  }
  win32 {
    DEVICE_COMMON_INFO_SRC_DIR_PATH ~= s,/,\\,g
    DEVICE_COMMON_INFO_DEST_DIR_PATH ~= s,/,\\,g
    DEVICE_SETTINGS_SRC_DIR_PATH ~= s,/,\\,g
    DEVICE_SETTINGS_DEST_DIR_PATH ~= s,/,\\,g
    WEB_TERMINAL_SRC_DIR_PATH ~= s,/,\\,g
    WEB_TERMINAL_DEST_DIR_PATH ~= s,/,\\,g
    COMMAND_TEST_SRC_DIR_PATH ~= s,/,\\,g
    COMMAND_TEST_DEST_DIR_PATH ~= s,/,\\,g
    CABLE_SETTINGS_SRC_PATH ~= s,/,\\,g
    CABLE_SETTINGS_DEST_PATH ~= s,/,\\,g

    !exists($${DESTDIR_PATH}\\html) {
      QMAKE_POST_LINK += $$quote(mkdir $${DESTDIR_PATH}\\html $$escape_expand(\n\t))
    }
    !exists($${DESTDIR_PATH}\\html\\command-test) {
      QMAKE_POST_LINK += $$quote(mkdir $${DESTDIR_PATH}\\html\\command-test $$escape_expand(\n\t))
    }
    !exists($${COMMAND_TEST_DEST_DIR_PATH}) {
      QMAKE_POST_LINK += $$quote(mkdir $${COMMAND_TEST_DEST_DIR_PATH} $$escape_expand(\n\t))
    }
    !exists($${WEB_TERMINAL_DEST_DIR_PATH}) {
      QMAKE_POST_LINK += $$quote(mkdir $${WEB_TERMINAL_DEST_DIR_PATH} $$escape_expand(\n\t))
    }
    !exists($${DEVICE_COMMON_INFO_DEST_DIR_PATH}) {
      QMAKE_POST_LINK += $$quote(mkdir $${DEVICE_COMMON_INFO_DEST_DIR_PATH} $$escape_expand(\n\t))
    }
    QMAKE_POST_LINK += $$quote(copy /Y $${PROJECT_DIR_PATH}\\settings.json $${DESTDIR_PATH}\\settings.json $$escape_expand(\n\t))
    QMAKE_POST_LINK += $$quote(copy /Y $${CABLE_SETTINGS_SRC_PATH} $${CABLE_SETTINGS_DEST_PATH} $$escape_expand(\n\t))
    QMAKE_POST_LINK += $$quote(xcopy /e /i /r /Y $${WEB_TERMINAL_SRC_DIR_PATH} $${WEB_TERMINAL_DEST_DIR_PATH} $$escape_expand(\n\t))
    QMAKE_POST_LINK += $$quote(xcopy /e /i /r /Y $${COMMAND_TEST_SRC_DIR_PATH} $${COMMAND_TEST_DEST_DIR_PATH} $$escape_expand(\n\t))
    QMAKE_POST_LINK += $$quote(xcopy /e /i /r /Y /exclude:$${PROJECT_DIR_PATH}\\copy_excludes.txt $${DEVICE_COMMON_INFO_SRC_DIR_PATH} $${DEVICE_COMMON_INFO_DEST_DIR_PATH} $$escape_expand(\n\t))
    QMAKE_POST_LINK += $$quote(xcopy /e /i /r /Y /exclude:$${PROJECT_DIR_PATH}\\copy_excludes.txt $${DEVICE_SETTINGS_SRC_DIR_PATH} $${DEVICE_SETTINGS_DEST_DIR_PATH} $$escape_expand(\n\t))
  }
}

# Deployment - Automatically Detect and Copy Dependencies to Build Folder
win32 {
  TARGET_CUSTOM_EXT = .exe
  DEPLOY_COMMAND = $$[QT_INSTALL_BINS]/windeployqt
  DEPLOY_OPTIONS = "--no-svg --no-system-d3d-compiler --no-opengl --no-opengl-sw"
  DEPLOY_TARGET = $$shell_quote($$shell_path($${DESTDIR_PATH}/$${TARGET}$${TARGET_CUSTOM_EXT}))
  CONFIG(debug, debug|release) {
    # debug
    DEPLOY_OPTIONS += "--debug"
  } else {
    # release
    DEPLOY_OPTIONS += "--release"
  }
  # Uncomment the following line to help debug the deploy command when running qmake
  #message($${DEPLOY_COMMAND} $${DEPLOY_OPTIONS} $${DEPLOY_TARGET})

  QMAKE_POST_LINK += $${DEPLOY_COMMAND} $${DEPLOY_OPTIONS} $${DEPLOY_TARGET}
}

DISTFILES += \
  settings.json
