{
    "files": {
        "qconfigSource": "src/corelib/global/qconfig.cpp",
        "publicHeader": "src/corelib/global/qconfig.h",
        "privateHeader": "src/corelib/global/qconfig_p.h",
        "publicPro": "mkspecs/qconfig.pri",
        "privatePro": "mkspecs/qmodule.pri"
    },

    "subconfigs": [
        "src/corelib",
        "src/network",
        "src/gui",
        "src/xml",
        "src/widgets",
        "src/printsupport",
        "src/plugins/sqldrivers"
    ],

    "commandline": {
        "assignments": {
            "DBUS_HOST_PATH": "host_dbus.prefix",
            "DBUS_PATH": "dbus.prefix"
        },
        "custom": "qmakeArgs",
        "options": {
            "prefix": "string",
            "hostprefix": "optionalString",
            "extprefix": "string",

            "archdatadir": "string",
            "bindir": "string",
            "datadir": "string",
            "docdir": "string",
            "examplesdir": "string",
            "external-hostbindir": "string",
            "headerdir": "string",
            "hostbindir": "string",
            "hostdatadir": "string",
            "hostlibdir": "string",
            "importdir": "string",
            "libdir": "string",
            "libexecdir": "string",
            "plugindir": "string",
            "qmldir": "string",
            "settingsdir": { "type": "string", "name": "sysconfdir" },
            "sysconfdir": "string",
            "testsdir": "string",
            "translationdir": "string",

            "android-arch": "string",
            "android-ndk": "string",
            "android-ndk-host": "string",
            "android-ndk-platform": "string",
            "android-sdk": "string",
            "android-toolchain-version": "string",

            "android-style-assets": "boolean",
            "appstore-compliant": "boolean",
            "avx": "boolean",
            "avx2": "boolean",
            "avx512": { "type": "boolean", "name": "avx512f" },
            "c++std": "cxxstd",
            "ccache": { "type": "boolean", "name": "ccache" },
            "commercial": "void",
            "compile-examples": { "type": "boolean", "name": "compile_examples" },
            "confirm-license": "void",
            "dbus": { "type": "optionalString", "values": [ "no", "yes", "linked", "runtime" ] },
            "dbus-linked": { "type": "void", "name": "dbus", "value": "linked" },
            "dbus-runtime": { "type": "void", "name": "dbus", "value": "runtime" },
            "debug": "void",
            "debug-and-release": { "type": "boolean", "name": "debug_and_release" },
            "developer-build": "void",
            "device": "string",
            "device-option": "addString",
            "f16c": "boolean",
            "force-asserts": { "type": "boolean", "name": "force_asserts" },
            "force-debug-info": { "type": "boolean", "name": "force_debug_info" },
            "force-pkg-config": { "type": "void", "name": "pkg-config" },
            "framework": "boolean",
            "gcc-sysroot": "boolean",
            "gcov": "boolean",
            "gnumake": { "type": "boolean", "name": "GNUmake" },
            "gui": "boolean",
            "headersclean": "boolean",
            "incredibuild-xge": { "type": "boolean", "name": "incredibuild_xge" },
            "libudev": "boolean",
            "ltcg": "boolean",
            "make": { "type": "addString", "values": [ "examples", "libs", "tests", "tools" ] },
            "make-tool": "string",
            "mips_dsp": "boolean",
            "mips_dspr2": "boolean",
            "mp": { "type": "boolean", "name": "msvc_mp" },
            "nomake": { "type": "addString", "values": [ "examples", "tests", "tools" ] },
            "opensource": { "type": "void", "name": "commercial", "value": "no" },
            "optimize-debug": { "type": "boolean", "name": "optimize_debug" },
            "optimize-size": { "type": "boolean", "name": "optimize_size" },
            "optimized-qmake": { "type": "boolean", "name": "release_tools" },
            "optimized-tools":  { "type": "boolean", "name": "release_tools" },
            "pch": { "type": "boolean", "name": "precompile_header" },
            "pkg-config": "boolean",
            "platform": "string",
            "plugin-manifests": "boolean",
            "profile": "boolean",
            "qml-debug": "boolean",
            "qreal": "string",
            "qtlibinfix": { "type": "string", "name": "qt_libinfix" },
            "qtnamespace": { "type": "string", "name": "qt_namespace" },
            "reduce-exports": { "type": "boolean", "name": "reduce_exports" },
            "reduce-relocations": { "type": "boolean", "name": "reduce_relocations" },
            "release": { "type": "enum", "name": "debug", "values": { "yes": "no", "no": "yes" } },
            "rpath": "boolean",
            "sanitize": "sanitize",
            "sdk": "string",
            "separate-debug-info": { "type": "boolean", "name": "separate_debug_info" },
            "shared": "boolean",
            "silent": "void",
            "qdbus": { "type": "boolean", "name": "dbus" },
            "sse2": "boolean",
            "sse3": "boolean",
            "sse4.1": { "type": "boolean", "name": "sse4_1" },
            "sse4.2": { "type": "boolean", "name": "sse4_2" },
            "ssse3": "boolean",
            "static": { "type": "enum", "name": "shared", "values": { "yes": "no", "no": "yes" } },
            "static-runtime": { "type": "boolean", "name": "static_runtime" },
            "strip": "boolean",
            "syncqt": "boolean",
            "sysroot": "string",
            "testcocoon": "boolean",
            "use-gold-linker": { "type": "boolean", "name": "use_gold_linker" },
            "warnings-are-errors": { "type": "boolean", "name": "warnings_are_errors" },
            "Werror": { "type": "boolean", "name": "warnings_are_errors" },
            "widgets": "boolean",
            "xplatform": "string",
            "zlib": { "type": "enum", "name": "system-zlib", "values": { "system": "yes", "qt": "no" } }
        },
        "prefix": {
            "D": "defines",
            "F": "fpaths",
            "I": "includes",
            "L": "lpaths",
            "R": "rpaths",
            "W": "wflags"
        }

    },

    "libraries": {
        "zlib": {
            "label": "zlib",
            "test": {
                "include": "zlib.h",
                "main": [
                    "z_streamp stream = 0;",
                    "(void) zlibVersion();",
                    "(void) compress2(0, 0, 0, 0, 1);  // compress2 was added in zlib version 1.0.8"
                ]
            },
            "sources": [
                { "libs": "-lzdll", "condition": "config.msvc" },
                { "libs": "-lz", "condition": "!config.msvc" }
            ]
        },
        "dbus": {
            "label": "D-Bus >= 1.2",
            "test": {
                "include": "dbus/dbus.h",
                "main": "(void) dbus_bus_get_private(DBUS_BUS_SYSTEM, (DBusError *)NULL);",
                "qmake": [
                    "CONFIG += build_all",
                    "CONFIG(debug, debug|release): \\",
                    "    LIBS += $$LIBS_DEBUG",
                    "else: \\",
                    "    LIBS += $$LIBS_RELEASE"
                ]
            },
            "sources": [
                { "type": "pkgConfig", "args": "dbus-1 >= 1.2" },
                {
                    "libs": "",
                    "builds": {
                        "debug": "-ldbus-1d",
                        "release": "-ldbus-1"
                    },
                    "condition": "config.win32"
                },
                { "libs": "-ldbus-1", "condition": "!config.win32" }
            ]
        },
        "host_dbus": {
            "label": "D-Bus >= 1.2 (host)",
            "export": "",
            "sources": [
                { "type": "pkgConfig", "host": true, "args": "dbus-1 >= 1.2" },
                { "libs": "", "comment": "placeholder for DBUS_HOST_PATH" }
            ]
        },
        "libudev": {
            "label": "udev",
            "test": {
                "include": "libudev.h",
                "main": "udev_unref(udev_new());"
            },
            "sources": [
                { "type": "pkgConfig", "args": "libudev" },
                "-ludev"
            ]
        }
    },

    "testTypeDependencies": {
        "linkerSupportsFlag": [ "use_gold_linker" ],
        "verifySpec": [ "shared", "use_gold_linker", "compiler-flags", "gcc-sysroot", "qmakeargs", "commit" ],
        "compile": [ "verifyspec" ],
        "detectPkgConfig": [ "cross_compile", "machineTuple" ],
        "library": [ "pkg-config" ],
        "getPkgConfigVariable": [ "pkg-config" ],
        "subarch": [ "architecture" ]
    },

    "testTypeAliases": {
        "compile": [ "library", "architecture" ]
    },

    "tests": {
        "machineTuple": {
            "label": "machine tuple",
            "type": "machineTuple"
        },
        "verifyspec": {
            "label": "valid makespec",
            "type": "verifySpec",
            "test": "verifyspec"
        },
        "architecture": {
            "label": "target architecture",
            "type": "architecture",
            "test": "arch",
            "log": "arch"
        },
        "host_architecture": {
            "label": "host architecture",
            "type": "architecture",
            "test": "arch",
            "host": true,
            "pro": "arch_host.pro",
            "log": "arch"
        },
        "GNUmake": {
            "label": "GNU make",
            "type": "gnumake"
        },
        "pkg-config": {
            "label": "pkg-config",
            "type": "detectPkgConfig"
        },
        "stl": {
            "label": "STL compatibility",
            "type": "compile",
            "test": "stl"
        },
        "c++14": {
            "label": "C++14 support",
            "type": "compile",
            "test": {
                "head": [
                    "#if __cplusplus > 201103L",
                    "// Compiler claims to support C++14, trust it",
                    "#else",
                    "#  error __cplusplus must be > 201103L (the value of C++11)",
                    "#endif"
                ],
                "qmake": "CONFIG += c++11 c++14"
            }
        },
        "c++1z": {
            "label": "C++1z support",
            "type": "compile",
            "test": {
                "head": [
                    "#if __cplusplus > 201402L",
                    "// Compiler claims to support experimental C++1z, trust it",
                    "#else",
                    "#  error __cplusplus must be > 201402L (the value for C++14)",
                    "#endif",
                    "#include <map>  // https://bugs.llvm.org//show_bug.cgi?id=33117"
                ],
                "qmake": "CONFIG += c++11 c++14 c++1z"
            }
        },
        "precompile_header": {
            "label": "precompiled header support",
            "type": "compile",
            "test": "common/pch"
        },
        "use_gold_linker": {
            "label": "gold linker",
            "type": "compilerSupportsFlag",
            "flag": "-fuse-ld=gold"
        },
        "optimize_debug": {
            "label": "-Og support",
            "type": "compilerSupportsFlag",
            "flag": "-Og"
        },
        "enable_new_dtags": {
            "label": "new dtags support",
            "type": "linkerSupportsFlag",
            "flag": "--enable-new-dtags"
        },
        "reduce_exports": {
            "label": "symbol visibility support",
            "type": "compile",
            "test": {
                "head": [
                    "#if defined(__GNUC__)",
                    "__attribute((visibility(\"default\")))",
                    "#elif defined(__SUNPRO_CC)",
                    "__global",
                    "#else",
                    "#  error GCC4+ or SunStudio 8+ are required to support ELF visibility",
                    "#endif"
                ],
                "qmake": [
                    "TEMPLATE = lib",
                    "CONFIG += dll hide_symbols",
                    "isEmpty(QMAKE_CFLAGS_HIDESYMS): error(\"Nope\")"
                ]
            }
        },
        "reduce_relocations": {
            "label": "-Bsymbolic-functions support",
            "type": "compile",
            "test": {
                "head": [
                    "#if !(defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__) || defined(__amd64))",
                    "#  error Symbolic function binding on this architecture may be broken, disabling it (see QTBUG-36129).",
                    "#endif"
                ],
                "qmake": [
                    "TEMPLATE = lib",
                    "CONFIG += dll bsymbolic_functions",
                    "isEmpty(QMAKE_LFLAGS_BSYMBOLIC_FUNC): error(\"Nope\")"
                ]
            }
        },
        "build_parts": {
            "type": "buildParts"
        },
        "separate_debug_info": {
            "label": "separate debug information support",
            "type": "compile",
            "test": {
                "qmake": [
                    "TARGET = objcopytest",
                    "load(resolve_target)",
                    "QMAKE_POST_LINK += \\",
                    "    $$QMAKE_OBJCOPY --only-keep-debug $$QMAKE_RESOLVED_TARGET objcopytest.debug && \\",
                    "    $$QMAKE_OBJCOPY --strip-debug $$QMAKE_RESOLVED_TARGET && \\",
                    "    $$QMAKE_OBJCOPY --add-gnu-debuglink=objcopytest.debug $$QMAKE_RESOLVED_TARGET"
                ]
            }
        },
        "sse2": {
            "label": "SSE2 instructions",
            "type": "compile",
            "test": {
                "include": "emmintrin.h",
                "main": [
                    "__m128i a = _mm_setzero_si128();",
                    "_mm_maskmoveu_si128(a, _mm_setzero_si128(), 0);"
                ],
                "qmake": [
                    "!defined(QMAKE_CFLAGS_SSE2, var): error(\"This compiler does not support SSE2\")",
                    "QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSE2"
                ]
            }
        },
        "sse3": {
            "label": "SSE3 instructions",
            "type": "compile",
            "test": {
                "include": "pmmintrin.h",
                "main": [
                    "__m128d a = _mm_set1_pd(6.28);",
                    "__m128d b = _mm_set1_pd(3.14);",
                    "__m128d result = _mm_addsub_pd(a, b);",
                    "(void) _mm_movedup_pd(result);"
                ],
                "qmake": [
                    "!defined(QMAKE_CFLAGS_SSE3, var): error(\"This compiler does not support SSE3\")",
                    "QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSE3"
                ]
            }
        },
        "ssse3": {
            "label": "SSSE3 instructions",
            "type": "compile",
            "test": {
                "include": "tmmintrin.h",
                "main": [
                    "__m128i a = _mm_set1_epi32(42);",
                    "_mm_abs_epi8(a);",
                    "(void) _mm_sign_epi16(a, _mm_set1_epi32(64));"
                ],
                "qmake": [
                    "!defined(QMAKE_CFLAGS_SSSE3, var): error(\"This compiler does not support SSSE3\")",
                    "QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSSE3"
                ]
            }
        },
        "sse4_1": {
            "label": "SSE4.1 instructions",
            "type": "compile",
            "test": {
                "include": "smmintrin.h",
                "main": [
                    "__m128 a = _mm_setzero_ps();",
                    "_mm_ceil_ps(a);",
                    "__m128i result = _mm_mullo_epi32(_mm_set1_epi32(42), _mm_set1_epi32(64));",
                    "(void)result;"
                ],
                "qmake": [
                    "!defined(QMAKE_CFLAGS_SSE4_1, var): error(\"This compiler does not support SSE4.1\")",
                    "QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSE4_1"
                ]
            }
        },
        "sse4_2": {
            "label": "SSE4.2 instructions",
            "type": "compile",
            "test": {
                "include": "nmmintrin.h",
                "main": [
                    "__m128i a = _mm_setzero_si128();",
                    "__m128i b = _mm_set1_epi32(42);",
                    "(void) _mm_cmpestrm(a, 16, b, 16, 0);"
                ],
                "qmake": [
                    "!defined(QMAKE_CFLAGS_SSE4_2, var): error(\"This compiler does not support SSE4.2\")",
                    "QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSE4_2"
                ]
            }
        },
        "f16c": {
            "label": "F16C instructions",
            "type": "compile",
            "test": {
                "include": "immintrin.h",
                "main": [
                    "__m128i a = _mm_setzero_si128();",
                    "__m128 b = _mm_cvtph_ps(a);",
                    "__m256 b256 = _mm256_cvtph_ps(a);",
                    "(void) _mm_cvtps_ph(b, 0);",
                    "(void) _mm256_cvtps_ph(b256, 0);"
                ],
                "qmake": [
                    "!defined(QMAKE_CFLAGS_F16C, var): error(\"This compiler does not support F16C\")",
                    "QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_F16C"
                ]
            }
        },
        "avx": {
            "label": "AVX instructions",
            "type": "compile",
            "test": {
                "include": "immintrin.h",
                "main": [
                    "__m256d a = _mm256_setzero_pd();",
                    "__m256d b = _mm256_set1_pd(42.42);",
                    "(void) _mm256_add_pd(a, b);"
                ],
                "qmake": [
                    "!defined(QMAKE_CFLAGS_AVX, var): error(\"This compiler does not support AVX\")",
                    "QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_AVX"
                ]
            }
        },
        "avx2": {
            "label": "AVX2 instructions",
            "type": "compile",
            "test": {
                "include": "immintrin.h",
                "main": [
                    "// AVX",
                    "_mm256_zeroall();",
                    "__m256i a = _mm256_setzero_si256();",
                    "// AVX2",
                    "__m256i b = _mm256_and_si256(a, a);",
                    "(void) _mm256_add_epi8(a, b);"
                ],
                "qmake": [
                    "!defined(QMAKE_CFLAGS_AVX2, var): error(\"This compiler does not support AVX2\")",
                    "QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_AVX2"
                ]
            }
        },
        "avx512f": {
            "label": "AVX512 F instructions",
            "type": "compile",
            "test": "avx512",
            "args": "AVX512=F"
        },
        "avx512er": {
            "label": "AVX512 ER instructions",
            "type": "compile",
            "test": "avx512",
            "args": "AVX512=ER"
        },
        "avx512cd": {
            "label": "AVX512 CD instructions",
            "type": "compile",
            "test": "avx512",
            "args": "AVX512=CD"
        },
        "avx512pf": {
            "label": "AVX512 PF instructions",
            "type": "compile",
            "test": "avx512",
            "args": "AVX512=PF"
        },
        "avx512dq": {
            "label": "AVX512 DQ instructions",
            "type": "compile",
            "test": "avx512",
            "args": "AVX512=DQ"
        },
        "avx512bw": {
            "label": "AVX512 BW instructions",
            "type": "compile",
            "test": "avx512",
            "args": "AVX512=BW"
        },
        "avx512vl": {
            "label": "AVX512 VL instructions",
            "type": "compile",
            "test": "avx512",
            "args": "AVX512=VL"
        },
        "avx512ifma": {
            "label": "AVX512 IFMA instructions",
            "type": "compile",
            "test": "avx512",
            "args": "AVX512=IFMA"
        },
        "avx512vbmi": {
            "label": "AVX512 VBMI instructions",
            "type": "compile",
            "test": "avx512",
            "args": "AVX512=VBMI"
        },
        "mips_dsp": {
            "label": "MIPS DSP instructions",
            "type": "subarch",
            "subarch": "dsp"
        },
        "mips_dspr2": {
            "label": "MIPS DSPr2 instructions",
            "type": "subarch",
            "subarch": "dspr2"
        },
        "neon": {
            "label": "NEON instructions",
            "type": "subarch",
            "subarch": "neon"
        },
        "posix_fallocate": {
            "label": "POSIX fallocate()",
            "type": "compile",
            "test": {
                "include": [ "fcntl.h", "unistd.h" ],
                "main": "(void) posix_fallocate(0, 0, 0);"
            }
        },
        "alloca_stdlib_h": {
            "label": "alloca() in stdlib.h",
            "type": "compile",
            "test": {
                "include": "stdlib.h",
                "main": "alloca(1);"
            }
        },
        "alloca_h": {
            "label": "alloca() in alloca.h",
            "type": "compile",
            "test": {
                "include": "alloca.h",
                "tail": [
                    "#ifdef __QNXNTO__",
                    "// extra include needed in QNX7 to define NULL for the alloca() macro",
                    "#  include <stddef.h>",
                    "#endif"
                ],
                "main": "alloca(1);"
            }
        },
        "alloca_malloc_h": {
            "label": "alloca() in malloc.h",
            "type": "compile",
            "test": {
                "include": "malloc.h",
                "main": "alloca(1);"
            }
        },
        "stack_protector": {
            "label": "stack protection",
            "type": "compile",
            "test": {
                "head": [
                    "#ifdef __QNXNTO__",
                    "#  include <sys/neutrino.h>",
                    "#  if _NTO_VERSION < 700",
                    "#    error stack-protector not used (by default) before QNX 7.0.0.",
                    "#  endif",
                    "#endif"
                ],
                "qmake": "QMAKE_CXXFLAGS += -fstack-protector-strong"
            }
        },
        "incredibuild_xge": {
            "label": "IncrediBuild",
            "type": "files",
            "files": [ "BuildConsole.exe", "xgConsole.exe" ]
        },
        "ccache": {
            "label": "ccache",
            "type": "files",
            "files": [ "ccache" ]
        }
    },

    "features": {
        "prepare": {
            "output": [ "prepareSpec", "prepareOptions", "preparePaths", "reloadSpec" ]
        },
        "machineTuple": {
            "condition": "!config.linux || config.android || tests.machineTuple",
            "output": [ "machineTuple" ]
        },
        "commit": {
            "condition": "features.machineTuple",
            "output": [ "commitOptions" ]
        },
        "android-style-assets": {
            "label": "Android Style Assets",
            "condition": "config.android",
            "output": [ "privateFeature" ],
            "comment": "This belongs into gui, but the license check needs it here already."
        },
        "shared": {
            "label": "Building shared libraries",
            "autoDetect": "!config.uikit",
            "condition": "!config.integrity",
            "output": [
                "shared",
                "publicFeature",
                "publicQtConfig",
                "publicConfig"
            ]
        },
        "static": {
            "condition": "!features.shared",
            "output": [
                "publicFeature",
                "publicQtConfig",
                "publicConfig"
            ]
        },
        "cross_compile": {
            "label": "Cross compiling",
            "condition": "call.crossCompile",
            "output": [ "publicConfig", "privateConfig", "publicFeature", "crossCompile" ]
        },
        "compiler-flags": {
            "output": [ "compilerFlags" ]
        },
        "gcc-sysroot": {
            "output": [ "gccSysroot" ],
            "condition": "input.sysroot != ''"
        },
        "qmakeargs": {
            "output": [ "qmakeArgs" ],
            "condition": "input.qmakeArgs != ''"
        },
        "use_gold_linker": {
            "label": "Using gold linker",
            "condition": "!config.win32 && !config.integrity && tests.use_gold_linker",
            "output": [ "privateConfig", "useGoldLinker" ]
        },
        "optimize_debug": {
            "label": "Optimize debug build",
            "condition": "!config.msvc && !config.clang && (features.debug || features.debug_and_release) && tests.optimize_debug",
            "output": [ "privateConfig" ]
        },
        "optimize_size": {
            "label": "Optimize release build for size",
            "autoDetect": false,
            "condition": "!features.debug || features.debug_and_release",
            "output": [ "privateConfig" ]
        },
        "architecture": {
            "label": "Architecture",
            "output": [ "architecture" ]
        },
        "pkg-config": {
            "label": "Using pkg-config",
            "autoDetect": "!config.darwin && !config.win32",
            "condition": "tests.pkg-config",
            "output": [
                "publicFeature",
                { "type": "publicQtConfig", "negative": true },
                "pkgConfig"
            ]
        },
        "verifyspec": {
            "label": "Have valid makespec",
            "condition": "tests.verifyspec"
        },
        "developer-build": {
            "label": "Developer build",
            "autoDetect": false,
            "output": [
                { "type": "define", "name": "QT_BUILD_INTERNAL" },
                { "type": "privateFeature", "name": "private_tests" },
                { "type": "publicQtConfig", "name": "private_tests" }
            ]
        },
        "debug": {
            "label": "Build for debugging",
            "autoDetect": "features.developer-build || config.win32 || config.darwin"
        },
        "debug_and_release": {
            "label": "Compile libs in debug and release mode",
            "autoDetect": "input.debug == ''",
            "condition": "config.darwin || config.win32",
            "output": [ "publicFeature", "publicQtConfig", "debugAndRelease" ]
        },
        "force_debug_info": {
            "label": "Add debug info in release mode",
            "autoDetect": false,
            "output": [ "privateConfig" ]
        },
        "separate_debug_info": {
            "label": "Split off debug information",
            "autoDetect": false,
            "condition": [
                "features.shared",
                "features.debug || features.debug_and_release || features.force_debug_info",
                "config.darwin || tests.separate_debug_info"
            ],
            "output": [ "publicFeature", "publicQtConfig" ]
        },
        "release_tools": {
            "label": "Compile tools in release mode",
            "autoDetect": "features.debug",
            "output": [ "privateFeature", "publicQtConfig" ]
        },
        "appstore-compliant": {
            "label": "App store compliance",
            "purpose": "Disables code that is not allowed in platform app stores",
            "autoDetect": "config.uikit || config.android || config.winrt",
            "output": [ "publicFeature" ]
        },
        "simulator_and_device": {
            "label": "Build for both simulator and device",
            "condition": "config.uikit && input.sdk == ''",
            "output": [ "publicFeature", "publicQtConfig" ]
        },
        "build_all": {
            "condition": "features.debug_and_release || features.simulator_and_device",
            "output": [ "publicFeature", "publicQtConfig" ]
        },
        "rpath": {
            "label": "Build with RPATH",
            "autoDetect": "var.QMAKE_LFLAGS_RPATH != '' && features.shared",
            "output": [ "publicFeature", "publicQtConfig" ]
        },
        "rpath_dir": {
            "label": "RPATH directory",
            "enable": "input.rpaths != ''",
            "autoDetect": false,
            "output": [ { "type": "varAppend", "name": "EXTRA_RPATHS", "value": "input.rpaths" } ]
        },
        "force_asserts": {
            "label": "Force assertions",
            "autoDetect": false,
            "output": [ "publicFeature" ]
        },
        "warnings_are_errors": {
            "label": "WError",
            "autoDetect": "features.developer-build",
            "output": [ "privateConfig" ]
        },
        "headersclean": {
            "label": "Check for clean headers",
            "autoDetect": "features.developer-build",
            "output": [ "privateConfig" ]
        },
        "framework": {
            "label": "Build Apple Frameworks",
            "condition": "config.darwin && features.shared",
            "output": [
                { "type": "define", "name": "QT_MAC_FRAMEWORK_BUILD" },
                "publicFeature",
                { "type": "publicQtConfig", "name": "qt_framework"},
                { "type": "publicConfig", "name": "qt_framework"}
            ]
        },
        "largefile": {
            "label": "Large file support",
            "condition": "!config.android && !config.integrity && !config.winrt",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_LARGEFILE_SUPPORT", "value": 64 }
            ]
        },
        "testcocoon": {
            "label": "Testcocoon support",
            "autoDetect": false,
            "output": [ "publicConfig" ]
        },
        "gcov": {
            "label": "gcov support",
            "autoDetect": false,
            "output": [ "publicConfig" ]
        },
        "silent": {
            "label": "Silent build",
            "autoDetect": false,
            "output": [ "privateConfig" ]
        },
        "sanitize_address": {
            "label": "Addresses",
            "autoDetect": false,
            "output": [ "publicConfig" ]
        },
        "sanitize_thread": {
            "label": "Threads",
            "autoDetect": false,
            "output": [ "publicConfig" ]
        },
        "sanitize_memory": {
            "label": "Memory",
            "autoDetect": false,
            "output": [ "publicConfig" ]
        },
        "sanitize_undefined": {
            "label": "Undefined",
            "autoDetect": false,
            "output": [ "publicConfig" ]
        },
        "sanitizer": {
            "label": "Sanitizers",
            "condition": "features.sanitize_address || features.sanitize_thread || features.sanitize_memory || features.sanitize_undefined",
            "output": [ "publicConfig" ]
        },
        "GNUmake": {
            "label": "GNU make",
            "autoDetect": false,
            "condition": "tests.GNUmake",
            "output": [ "privateConfig" ]
        },
        "plugin-manifests": {
            "label": "Embed manifests in plugins",
            "emitIf": "config.win32",
            "autoDetect": false,
            "output": [ { "type": "publicConfig", "negative": true, "name": "no_plugin_manifest" } ]
        },
        "profile": {
            "label": "GNU profiling support",
            "autoDetect": false,
            "output": [
                { "type": "varAppend", "name": "QMAKE_CFLAGS", "value": "'-pg'" },
                { "type": "varAppend", "name": "QMAKE_CXXFLAGS", "value": "'-pg'" },
                { "type": "varAppend", "name": "QMAKE_LFLAGS", "value": "'-pg'" }
            ]
        },
        "strip": {
            "label": "Strip binaries",
            "condition": "!features.profile",
            "output": [ { "type": "privateConfig", "negative": true, "name": "nostrip" } ]
        },
        "stl": {
            "label": "STL compatibility",
            "condition": "tests.stl",
            "output": [ "publicQtConfig" ]
        },
        "c++11": {
            "label": "C++11",
            "output": [ "publicFeature", "publicQtConfig" ]
        },
        "c++14": {
            "label": "C++14",
            "condition": "features.c++11 && tests.c++14",
            "output": [ "publicFeature", "publicQtConfig" ]
        },
        "c++1z": {
            "label": "C++1z",
            "condition": "features.c++14 && tests.c++1z",
            "output": [ "publicFeature", "publicQtConfig" ]
        },
        "precompile_header": {
            "label": "Using precompiled headers",
            "condition": "config.msvc || tests.precompile_header",
            "output": [
                "privateConfig",
                { "type": "varRemove", "negative": true, "name": "CONFIG", "value": "'precompile_header'" }
            ]
        },
        "ltcg": {
            "label": "Using LTCG",
            "autoDetect": false,
            "output": [ "privateConfig" ]
        },
        "enable_new_dtags": {
            "label": "Using new DTAGS",
            "condition": "config.linux && tests.enable_new_dtags",
            "output": [ "privateConfig" ]
        },
        "reduce_exports": {
            "label": "Reduce amount of exported symbols",
            "condition": "!config.win32 && tests.reduce_exports",
            "output": [
                "privateFeature",
                "publicQtConfig",
                { "type": "define", "name": "QT_VISIBILITY_AVAILABLE" }
            ]
        },
        "reduce_relocations": {
            "label": "Reduce amount of relocations",
            "condition": "!config.win32 && tests.reduce_relocations",
            "output": [
                "privateFeature",
                "publicQtConfig",
                { "type": "define", "name": "QT_REDUCE_RELOCATIONS" }
            ]
        },
        "sse2": {
            "label": "SSE2",
            "condition": "(arch.i386 || arch.x86_64) && tests.sse2",
            "output": [
                "privateConfig",
                "privateFeature",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_SSE2", "value": 1 }
            ]
        },
        "sse3": {
            "label": "SSE3",
            "condition": "features.sse2 && tests.sse3",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_SSE3", "value": 1 }
            ]
        },
        "ssse3": {
            "label": "SSSE3",
            "condition": "features.sse3 && tests.ssse3",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_SSSE3", "value": 1 }
            ]
        },
        "sse4_1": {
            "label": "SSE4.1",
            "condition": "features.ssse3 && tests.sse4_1",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_SSE4_1", "value": 1 }
            ]
        },
        "sse4_2": {
            "label": "SSE4.2",
            "condition": "features.sse4_1 && tests.sse4_2",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_SSE4_2", "value": 1 }
            ]
        },
        "avx": {
            "label": "AVX",
            "condition": "features.sse4_2 && tests.avx",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX", "value": 1 }
            ]
        },
        "f16c": {
            "label": "F16C",
            "condition": "features.avx && tests.f16c",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_F16C", "value": 1 }
            ]
        },
        "avx2": {
            "label": "AVX2",
            "condition": "features.avx && tests.avx2",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX2", "value": 1 }
            ]
        },
        "avx512f": {
            "label": "F",
            "condition": "features.avx2 && tests.avx512f",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512F", "value": 1 }
            ]
        },
        "avx512er": {
            "label": "ER",
            "condition": "features.avx512f && tests.avx512er",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512ER", "value": 1 }
            ]
        },
        "avx512cd": {
            "label": "CD",
            "condition": "features.avx512f && tests.avx512cd",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512CD", "value": 1 }
            ]
        },
        "avx512pf": {
            "label": "PF",
            "condition": "features.avx512f && tests.avx512pf",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512PF", "value": 1 }
            ]
        },
        "avx512dq": {
            "label": "DQ",
            "condition": "features.avx512f && tests.avx512dq",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512DQ", "value": 1 }
            ]
        },
        "avx512bw": {
            "label": "BW",
            "condition": "features.avx512f && tests.avx512bw",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512BW", "value": 1 }
            ]
        },
        "avx512vl": {
            "label": "VL",
            "condition": "features.avx512f && tests.avx512vl",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512VL", "value": 1 }
            ]
        },
        "avx512ifma": {
            "label": "IFMA",
            "condition": "features.avx512f && tests.avx512ifma",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512IFMA", "value": 1 }
            ]
        },
        "avx512vbmi": {
            "label": "VBMI",
            "condition": "features.avx512f && tests.avx512vbmi",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512VBMI", "value": 1 }
            ]
        },
        "mips_dsp": {
            "label": "DSP",
            "condition": "arch.mips && tests.mips_dsp",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_MIPS_DSP", "value": 1 }
            ]
        },
        "mips_dspr2": {
            "label": "DSPr2",
            "condition": "arch.mips && tests.mips_dspr2",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_MIPS_DSPR2", "value": 1 }
            ]
        },
        "neon": {
            "label": "NEON",
            "condition": "(arch.arm || arch.arm64) && tests.neon",
            "output": [
                "privateConfig",
                { "type": "define", "name": "QT_COMPILER_SUPPORTS_NEON", "value": 1 }
            ]
        },
        "posix_fallocate": {
            "label": "POSIX fallocate()",
            "condition": "tests.posix_fallocate",
            "output": [ "privateFeature" ]
        },
        "alloca_h": {
            "label": "alloca.h",
            "condition": "tests.alloca_h",
            "output": [ "privateFeature" ]
        },
        "alloca_malloc_h": {
            "label": "alloca() in malloc.h",
            "condition": "!features.alloca_h && tests.alloca_malloc_h",
            "output": [ "privateFeature" ]
        },
        "alloca": {
            "label": "alloca()",
            "condition": "features.alloca_h || features.alloca_malloc_h || tests.alloca_stdlib_h",
            "output": [ "privateFeature" ]
        },
        "stack-protector-strong": {
            "label": "stack protection",
            "condition": "config.qnx && tests.stack_protector",
            "output": [ "privateFeature" ]
        },
        "system-zlib": {
            "label": "Using system zlib",
            "condition": "libs.zlib",
            "output": [ "privateFeature" ]
        },
        "concurrent": {
            "label": "Qt Concurrent",
            "purpose": "Provides a high-level multi-threading API.",
            "section": "Kernel",
            "output": [ "publicFeature", "feature" ]
        },
        "dbus": {
            "label": "Qt D-Bus",
            "autoDetect": "!config.uikit && !config.android && !config.winrt",
            "output": [ "privateFeature", "feature" ]
        },
        "dbus-linked": {
            "label": "Qt D-Bus directly linked to libdbus",
            "enable": "input.dbus == 'linked'",
            "disable": "input.dbus == 'runtime'",
            "condition": "features.dbus && libs.dbus",
            "output": [ "privateFeature" ]
        },
        "host-dbus": {
            "label": "Qt D-Bus (Host)",
            "autoDetect": "!config.android",
            "condition": "libs.host_dbus",
            "output": [ { "type": "varAppend", "name": "QT_HOST_CFLAGS_DBUS", "value": "libs.host_dbus.cflags", "eval": "true" } ]
        },
        "build_parts": {
            "output": [ { "type": "varAppend", "name": "QT_BUILD_PARTS", "value": "tests.build_parts.value" } ]
        },
        "qreal": {
            "label": "Type for qreal",
            "output": [ "qreal" ]
        },
        "gui": {
            "label": "Qt Gui",
            "output": [
                "privateFeature",
                { "type": "publicQtConfig", "negative": true }
            ]
        },
        "network": {
            "label": "Qt Network",
            "output": [ "privateFeature" ]
        },
        "sql": {
            "label": "Qt Sql",
            "output": [ "privateFeature" ]
        },
        "testlib": {
            "label": "Qt Testlib",
            "output": [ "privateFeature" ]
        },
        "widgets": {
            "label": "Qt Widgets",
            "autoDetect": "!config.tvos && !config.watchos",
            "condition": "features.gui",
            "output": [
                "privateFeature",
                { "type": "define", "negative": true, "name": "QT_NO_WIDGETS" },
                { "type": "publicQtConfig", "negative": true }
            ]
        },
        "xml": {
            "label": "Qt Xml",
            "output": [ "privateFeature" ]
        },
        "libudev": {
            "label": "udev",
            "condition": "libs.libudev",
            "output": [ "privateFeature" ]
        },
        "qml-debug": {
            "label": "QML debugging",
            "output": [
                "privateFeature",
                { "type": "publicQtConfig", "negative": true }
            ]
        },
        "compile_examples": {
            "label": "Compile examples",
            "output": [ "privateConfig" ]
        },
        "incredibuild_xge": {
            "label": "IncrediBuild",
            "emitIf": "var.QMAKE_HOST.os == 'Windows'",
            "condition": "tests.incredibuild_xge",
            "output": [ "publicConfig" ]
        },
        "ccache": {
            "label": "Using ccache",
            "autoDetect": false,
            "condition": "config.unix && tests.ccache",
            "output": [ "privateConfig" ]
        },
        "msvc_mp": {
            "label": "Use multiple processors when compiling with MSVC",
            "emitIf": "config.msvc",
            "autoDetect": "false",
            "output": [ "privateConfig" ]
        },
        "static_runtime": {
            "label": "Statically link the C/C++ runtime library",
            "emitIf": "config.win32",
            "autoDetect": false,
            "condition": "!features.shared",
            "output": [ "publicConfig", "publicQtConfig" ]
        }
    },

    "earlyReport": [
        {
            "type": "fatal",
            "condition": "input.xplatform != '' && input.device != ''",
            "message": "Cannot specify both -xplatform and -device."
        },
        {
            "condition": "!features.prepare",
            "comment": "This is not an actual report - instead, it activates the early setup."
        },
        {
            "type": "fatal",
            "condition": "!call.licenseCheck",
            "message": "You are not licensed to use this software."
        },
        {
            "type": "warning",
            "condition": "input.debug_and_release == 'yes' && !config.darwin && !config.win32",
            "message": "-debug-and-release is only supported on Darwin and Windows platforms.
Qt can be built in release mode with separate debug information, so
-debug-and-release is no longer necessary."
        },
        {
            "type": "error",
            "condition": "features.framework && features.debug && !features.debug_and_release",
            "message": "debug-only framework builds are not supported. Configure with -no-framework if you want a pure debug build."
        },
        {
            "type": "error",
            "condition": "(features.rpath || features.rpath_dir) && !features.shared",
            "message": "Static builds don't support RPATH"
        },
        {
            "type": "error",
            "condition": "(features.rpath || features.rpath_dir) && var.QMAKE_LFLAGS_RPATH == ''",
            "message": "This platform does not support RPATH"
        }
    ],

    "report": [
        {
            "type": "note",
            "condition": "!features.shared",
            "message": "Using static linking will disable the use of dynamically
loaded plugins. Make sure to import all needed static plugins,
or compile needed modules into the library."
        },
        {
            "type": "note",
            "condition": "features.release_tools && !features.debug",
            "message": "-optimized-tools is not useful in -release mode."
        },
        {
            "type": "note",
            "condition": "input.qreal == 'double' && arch.arm",
            "message": "Qt is using double for qreal on this system. This is binary-incompatible against Qt 5.1.
Configure with '-qreal float' to create a build that is binary-compatible with 5.1."
        },
        {
            "type": "error",
            "condition": "!features.stl",
            "message": "Qt requires a compliant STL library."
        }
    ],

    "summary": [
        {
            "type": "buildTypeAndConfig"
        },
        {
            "section": "Build options",
            "entries": [
                {
                    "message": "Mode",
                    "type": "buildMode"
                },
                {
                    "type": "feature",
                    "args": "optimize_debug",
                    "condition": "!config.msvc && !config.clang && (features.debug || features.debug_and_release)"
                },
                {
                    "type": "feature",
                    "args": "optimize_size",
                    "condition": "!features.debug || features.debug_and_release"
                },
                "shared",
                {
                    "message": "Using C++ standard",
                    "type": "firstAvailableFeature",
                    "args": "c++1z c++14 c++11"
                },
                {
                    "type": "feature",
                    "args": "ccache",
                    "condition": "config.unix"
                },
                "use_gold_linker",
                {
                    "type": "feature",
                    "args": "enable_new_dtags",
                    "condition": "config.linux"
                },
                "precompile_header",
                "ltcg",
                {
                    "section": "Target compiler supports",
                    "entries": [
                        {
                            "message": "SSE",
                            "type": "featureList",
                            "args": "sse2 sse3 ssse3 sse4_1 sse4_2",
                            "condition": "(arch.i386 || arch.x86_64)"
                        },
                        {
                            "message": "AVX",
                            "type": "featureList",
                            "args": "avx avx2 f16c",
                            "condition": "(arch.i386 || arch.x86_64)"
                        },
                        {
                            "message": "AVX512",
                            "type": "featureList",
                            "args": "avx512f avx512er avx512cd avx512pf avx512dq avx512bw avx512vl avx512ifma avx512vbmi",
                            "condition": "(arch.i386 || arch.x86_64)"
                        },
                        {
                            "type": "feature",
                            "args": "neon",
                            "condition": "arch.arm || arch.arm64"
                        },
                        {
                            "type": "feature",
                            "args": "mips_dsp",
                            "condition": "arch.mips"
                        },
                        {
                            "type": "feature",
                            "args": "mips_dspr2",
                            "condition": "arch.mips"
                        }
                    ]
                },
                {
                    "section": "Sanitizers",
                    "condition": "features.sanitizer",
                    "entries": [ "sanitize_address", "sanitize_thread", "sanitize_memory", "sanitize_undefined" ]
                },
                {
                    "message": "Build parts",
                    "type": "buildParts"
                },
                {
                    "type": "feature",
                    "args": "appstore-compliant",
                    "condition": "config.darwin || config.android || config.winrt || config.win32"
                }
            ]
        }, {
            "section": "Qt modules and options",
            "entries": [
                "concurrent",
                "dbus",
                "dbus-linked",
                "gui",
                "network",
                "sql",
                "testlib",
                "widgets",
                "xml"
            ]
        }, {
            "section": "Support enabled for",
            "entries": [
                "pkg-config",
                "qml-debug",
                "libudev",
                "system-zlib"
            ]
        }
    ]

}
