QT += quick qml quickcontrols2
CONFIG += c++11

VERSION = 0.8.0
TARGET = blueROCK

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Refer to the documentation for the
# deprecated API to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses 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

INCLUDEPATH += $$PWD/headers

# Add version to define
DEFINES += APP_VERSION=\"\\\"$${VERSION}\\\"\"

SOURCES += \
    sources/shareUtils/platformshareutils.cpp \
    sources/appsettings.cpp \
    sources/bluerockbackend.cpp \
    sources/shareUtils/shareutils.cpp \
    sources/main.cpp

HEADERS += \
    headers/appsettings.h \
    headers/bluerockbackend.h \
    headers/shareUtils/shareutils.h \
    headers/shareUtils/platformshareutils.h

RESOURCES += resources/qml/qml.qrc \
    resources/shared/shared.qrc \
    resources/translations/translations.qrc

TRANSLATIONS += resources/translations/en.ts \
    resources/translations/de.ts

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

DISTFILES += \
    CHANGELOG.md \
    README.md

android {
    QT += androidextras

    SOURCES += sources/shareUtils/androidshareutils.cpp
    HEADERS += headers/shareUtils/androidshareutils.h

    OTHER_FILES += android/src/org/ekkescorner/utils/QShareUtils.java \
        android/src/org/ekkescorner/utils/QSharePathResolver.java \
        android/src/de/itsblue/blueROCK/MainActivity.java \
        android/AndroidManifest.xml \
        android/build.gradle \
        android/gradle.properties \
        android/gradle/wrapper/gradle-wrapper.jar \
        android/gradle/wrapper/gradle-wrapper.properties \
        android/gradlew \
        android/gradlew.bat \
        android/res/values/libs.xml \
        android/res/xml/filepaths.xml

    defineReplace(droidVersionCode) {
            segments = $$split(1, ".")
            for (segment, segments): vCode = "$$first(vCode)$$format_number($$segment, width=3 zeropad)"

            contains(ANDROID_TARGET_ARCH, arm64-v8a): \
                suffix = 1
            else:contains(ANDROID_TARGET_ARCH, armeabi-v7a): \
                suffix = 0
            # add more cases as needed

            return($$first(vCode)$$first(suffix))
    }

    ANDROID_VERSION_NAME = $$VERSION
    ANDROID_VERSION_CODE = $$droidVersionCode($$ANDROID_VERSION_NAME)
    ANDROID_TARGET_SDK_VERSION = 31

    ANDROID_HOME = $$(ANDROID_HOME)
    include($$ANDROID_HOME/android_openssl/openssl.pri)
    ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
}

ios {
    QT += purchasing
    OBJECTIVE_SOURCES += sources/shareUtils/ios/iosshareutils.mm \
        sources/iospermissionutils.mm \
        sources/shareUtils/ios/docviewcontroller.mm

    HEADERS += headers/shareUtils/ios/iosshareutils.h \
        headers/iospermissionutils.h \
        headers/shareUtils/ios/docviewcontroller.h

    OTHER_FILES += ios/Info.plist \
        ios/blueROCK.entitlements

    QMAKE_INFO_PLIST = ios/Info.plist


    #QMAKE_IOS_DEPLOYMENT_TARGET = 12.0

    #disable_warning.name = GCC_WARN_64_TO_32_BIT_CONVERSION
    #disable_warning.value = NO
    #QMAKE_MAC_XCODE_SETTINGS += disable_warning

    # see https://bugreports.qt.io/browse/QTCREATORBUG-16968
    # ios_signature.pri not part of project repo because of private signature details
    # contains:
    # QMAKE_XCODE_CODE_SIGN_IDENTITY = "iPhone Developer"
    # MY_DEVELOPMENT_TEAM.name = DEVELOPMENT_TEAM
    # MY_DEVELOPMENT_TEAM.value = your team Id from Apple Developer Account
    # QMAKE_MAC_XCODE_SETTINGS += MY_DEVELOPMENT_TEAM

    #include(ios_signature.pri)

    QMAKE_ASSET_CATALOGS += resources/shared/Assets.xcassets

    MY_ENTITLEMENTS.name = CODE_SIGN_ENTITLEMENTS
    MY_ENTITLEMENTS.value = $$PWD/ios/blueROCK.entitlements
    QMAKE_MAC_XCODE_SETTINGS += MY_ENTITLEMENTS

    MY_BUNDLE_ID.name = PRODUCT_BUNDLE_IDENTIFIER
    MY_BUNDLE_ID.value = de.itsblue.bluerock
    QMAKE_MAC_XCODE_SETTINGS += MY_BUNDLE_ID
    xcode_product_bundle_identifier_setting.value = "de.itsblue.bluerock"
    PRODUCT_IDENTIFIER = de.itsblue.bluerock
}

CONFIG += enable_decoder_qr_code \
          enable_encoder_qr_code \
          qzxing_multimedia \
          qzxing_qml

include(qzxing/src/QZXing-components.pri)

# this has to be the last line!
ANDROID_ABIS = armeabi-v7a arm64-v8a

