#
#  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.
#

CONFIG += no_launch_target
load(qt_app)

CONFIG += console
DEFINES *= QT_USE_QSTRINGBUILDER

# If we are doing a prefix build, create a "module" pri which enables
# qtPrepareTool() to work with the non-installed build.
# Non-bootstrapped tools always need this because of the environment setup.
!build_pass:if(!host_build|!force_bootstrap|force_independent|!isEmpty(HOST_QT_TOOLS)) {
    isEmpty(MODULE):MODULE = $$TARGET

    load(qt_build_paths)

    TOOL_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_tool_$${MODULE}.pri

    vars = binary depends

    !host_build|isEmpty(HOST_QT_TOOLS) {
        load(resolve_target)

        !host_build|!force_bootstrap: MODULE_DEPENDS = $$replace(QT, -private$, _private)

        !isEmpty(QT_TOOL_ENV) {
            vars += envvars
            module_var_names =
            module_var_sets =
            for(var, QT_TOOL_ENV) {
                vars += env.$${var}.name env.$${var}.value
                module_var_names += QT_TOOL.$${MODULE}.env.$${var}
                module_var_sets += \
                    "QT_TOOL.$${MODULE}.env.$${var}.name = $$val_escape($${var}.name)" \
                    "QT_TOOL.$${MODULE}.env.$${var}.value = $$val_escape($${var}.value)"
            }
            module_envvars = \
                "QT_TOOL.$${MODULE}.envvars = $$module_var_names" \
                $$module_var_sets
        } else {
            module_envvars =
        }

        bin = $$system_path($$QMAKE_RESOLVED_TARGET)
    } else {
        bin = $${HOST_QT_TOOLS}/$${TARGET}
        equals(QMAKE_HOST.os, Windows): bin = $${bin}.exe
        bin = $$system_path($$bin)
    }

    TOOL_PRI_CONT = \
        "QT_TOOL.$${MODULE}.binary = $$val_escape(bin)" \
        "QT_TOOL.$${MODULE}.depends =$$join(MODULE_DEPENDS, " ", " ")" \
        $$module_envvars
    write_file($$TOOL_PRI, TOOL_PRI_CONT)|error()

    # Then, inject the new tool into the current cache state
    !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$TOOL_PRI) { # before the actual include()!
        added = $$TOOL_PRI
        cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, added)
        unset(added)
    }
    include($$TOOL_PRI)
    for(var, vars): \
        cache(QT_TOOL.$${MODULE}.$$var, transient)

}
# The variable is re-used by qtPrepareTool(), and we really don't want that.
unset(QT_TOOL_ENV)
