TEMPLATE = subdirs
QT_FOR_CONFIG += qml-private

qtConfig(qml-devtools) {
    SUBDIRS += \
        qmllint \
        qmlmin \
        qmlimportscanner \
        qmlformat

    qtConfig(commandlineparser):qtConfig(xmlstreamwriter): SUBDIRS += qmlcachegen
}

qtConfig(thread):!android|android_app:!wasm:!rtems {
    SUBDIRS += \
        qml

    qtConfig(qml-profiler): SUBDIRS += qmlprofiler
    qtConfig(qml-preview): SUBDIRS += qmlpreview

    qtHaveModule(quick) {
        !static: {
            SUBDIRS += \
                qmlscene \
                qmltime

            qtConfig(regularexpression):qtConfig(process) {
                SUBDIRS += \
                    qmlplugindump
            }
        }
        qtHaveModule(widgets) {
            QT_FOR_CONFIG += widgets
            qtConfig(dialogbuttonbox) {
                SUBDIRS += \
                    qmleasing
            }
        }
    }
    qtHaveModule(qmltest): SUBDIRS += qmltestrunner
    qtConfig(private_tests): SUBDIRS += qmljs
}

qtConfig(qml-devtools) {
    qml.depends = qmlimportscanner
    qmleasing.depends = qmlimportscanner
}

# qmlmin, qmlimportscanner & qmlcachegen are build tools.
# qmlscene is needed by the autotests.
# qmltestrunner may be useful for manual testing.
# qmlplugindump cannot be a build tool, because it loads target plugins.
# The other apps are mostly "desktop" tools and are thus excluded.
qtNomakeTools( \
    qmlprofiler \
    qmlplugindump \
    qmleasing \
)
