
#  W A R N I N G
#  -------------
#
# This file is not part of the Qt API.  It exists purely as an
# implementation detail.  It may change from version to version
# without notice, or even be removed.
#
# We mean it.
#

# Generates an xml file to match the library in lib/ listing the dependencies
# of the module on JNI-based libraries etc. Used for deployment of an Android
# app.

ANDROID_DEPENDS_DIR = $$MODULE_BASE_OUTDIR/lib/
DEPENDENCY_FILE = $$ANDROID_DEPENDS_DIR$$TARGET-android-dependencies.xml
build_pass|single_android_abi:!isEmpty(QT_ARCH): {
    !isEmpty(MODULE_PLUGIN_TYPES) {
        for(PLUGIN_TYPE, MODULE_PLUGIN_TYPES) {
            ANDROID_BUNDLED_FILES += "plugins/$$PLUGIN_TYPE"
        }
    }

    !isEmpty(ANDROID_JAR_DEPENDENCIES) {
        for(JAR_FILE, ANDROID_JAR_DEPENDENCIES) {
            INIT_CLASS = $$section(JAR_FILE, ":", 1, 1)
            !isEmpty(INIT_CLASS): INIT_CLASS = "initClass=\"$$INIT_CLASS\""
            JAR_FILE = $$section(JAR_FILE, ":", 0, 0)
            FILE_CONTENT += "<jar file=\"$$JAR_FILE\" $$INIT_CLASS />"
        }
    }

    !isEmpty(ANDROID_BUNDLED_JAR_DEPENDENCIES) {
        for(JAR_FILE, ANDROID_BUNDLED_JAR_DEPENDENCIES) {
            INIT_CLASS = $$section(JAR_FILE, ":", 1, 1)
            !isEmpty(INIT_CLASS): INIT_CLASS = "initClass=\"$$INIT_CLASS\""
            JAR_FILE = $$section(JAR_FILE, ":", 0, 0)
            FILE_CONTENT += "<jar bundling=\"1\" file=\"$$JAR_FILE\" $$INIT_CLASS />"
        }
    }

    !isEmpty(ANDROID_LIB_DEPENDENCIES) {
        for(LIB_FILE, ANDROID_LIB_DEPENDENCIES) {
            EXTENDS = $$section(LIB_FILE, ":", 1, 1)
            !isEmpty(EXTENDS): EXTENDS = "extends=\"$$EXTENDS\""
            LIB_FILE = $$section(LIB_FILE, ":", 0, 0)
            LIB_FILE = $$replace(LIB_FILE,"\.so", "_$${QT_ARCH}.so")
            !isEmpty(EXTENDS): EXTENDS = $$replace(EXTENDS,"\.so", "_$${QT_ARCH}.so")
            FILE_CONTENT += "<lib file=\"$$LIB_FILE\" $$EXTENDS />"
        }
    }

    !isEmpty(ANDROID_LIB_DEPENDENCY_REPLACEMENTS) {
        for(REPLACEMENT, ANDROID_LIB_DEPENDENCY_REPLACEMENTS) {
            REPLACEMENT_FILE = $$section(REPLACEMENT, ":", 0, 0)
            LIB_FILE = $$section(REPLACEMENT, ":", 1, 1)
            REPLACEMENT_FILE = $$replace(REPLACEMENT_FILE,"\.so", "_$${QT_ARCH}.so")
            FILE_CONTENT += "<lib file=\"$$LIB_FILE\" replaces=\"$$REPLACEMENT_FILE\" />"
        }
    }

    !isEmpty(ANDROID_BUNDLED_FILES) {
        for (BUNDLED_FILE, ANDROID_BUNDLED_FILES) {
            BUNDLED_FILE = $$replace(BUNDLED_FILE,"\.so", "_$${QT_ARCH}.so")
            FILE_CONTENT += "<bundled file=\"$$BUNDLED_FILE\" />"
        }
    }

    !isEmpty(ANDROID_PERMISSIONS) {
        for (ANDROID_PERMISSION, ANDROID_PERMISSIONS) {
            FILE_CONTENT += "<permission name=\"$$ANDROID_PERMISSION\" />"
        }
    }

    !isEmpty(ANDROID_FEATURES) {
        for (ANDROID_FEATURE, ANDROID_FEATURES) {
            FILE_CONTENT += "<feature name=\"$$ANDROID_FEATURE\" />"
        }
    }


    !isEmpty(FILE_CONTENT) {
        FILE_CONTENT = "<rules><dependencies><lib name=\"$$TARGET\"><depends>" $$FILE_CONTENT "</depends></lib></dependencies></rules>"
        write_file($$DEPENDENCY_FILE, FILE_CONTENT)|error()
    }
}

!isEmpty(ANDROID_JAR_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCY_REPLACEMENTS)|!isEmpty(ANDROID_BUNDLED_JAR_DEPENDENCIES)|!isEmpty(ANDROID_BUNDLED_FILES) {
    install_dependencies_file.files = $$DEPENDENCY_FILE
    install_dependencies_file.path = $$[QT_INSTALL_LIBS]
    INSTALLS += install_dependencies_file
}
