1{
2    "files": {
3        "qconfigSource": "src/corelib/global/qconfig.cpp",
4        "publicHeader": "src/corelib/global/qconfig.h",
5        "privateHeader": "src/corelib/global/qconfig_p.h",
6        "publicPro": "mkspecs/qconfig.pri",
7        "privatePro": "mkspecs/qmodule.pri"
8    },
9
10    "subconfigs": [
11        "src/corelib",
12        "src/network",
13        "src/gui",
14        "src/sql",
15        "src/xml",
16        "src/widgets",
17        "src/printsupport",
18        "src/plugins/sqldrivers",
19        "src/testlib"
20    ],
21
22    "commandline": {
23        "assignments": {
24            "DBUS_HOST_PATH": "host_dbus.prefix",
25            "DBUS_PATH": "dbus.prefix"
26        },
27        "custom": "qmakeArgs",
28        "options": {
29            "prefix": "string",
30            "hostprefix": "optionalString",
31            "extprefix": "string",
32
33            "archdatadir": "string",
34            "bindir": "string",
35            "datadir": "string",
36            "docdir": "string",
37            "examplesdir": "string",
38            "external-hostbindir": "string",
39            "headerdir": "string",
40            "hostbindir": "string",
41            "hostdatadir": "string",
42            "hostlibdir": "string",
43            "importdir": "string",
44            "libdir": "string",
45            "libexecdir": "string",
46            "plugindir": "string",
47            "qmldir": "string",
48            "settingsdir": { "type": "string", "name": "sysconfdir" },
49            "sysconfdir": "string",
50            "testsdir": "string",
51            "translationdir": "string",
52
53            "android-arch": "string",
54            "android-abis": "string",
55            "android-ndk": "string",
56            "android-ndk-host": "string",
57            "android-ndk-platform": "string",
58            "android-sdk": "string",
59            "android-javac-target": "string",
60            "android-javac-source": "string",
61
62            "android-style-assets": "boolean",
63            "appstore-compliant": "boolean",
64            "avx": "boolean",
65            "avx2": "boolean",
66            "avx512": { "type": "boolean", "name": "avx512f" },
67            "c++std": "cxxstd",
68            "ccache": { "type": "boolean", "name": "ccache" },
69            "commercial": "void",
70            "compile-examples": { "type": "boolean", "name": "compile_examples" },
71            "confirm-license": "void",
72            "coverage": "coverage",
73            "dbus": { "type": "optionalString", "values": [ "no", "yes", "linked", "runtime" ] },
74            "dbus-linked": { "type": "void", "name": "dbus", "value": "linked" },
75            "dbus-runtime": { "type": "void", "name": "dbus", "value": "runtime" },
76            "debug": "void",
77            "debug-and-release": { "type": "boolean", "name": "debug_and_release" },
78            "developer-build": "void",
79            "device": "string",
80            "device-option": "addString",
81            "f16c": "boolean",
82            "force-asserts": { "type": "boolean", "name": "force_asserts" },
83            "force-debug-info": { "type": "boolean", "name": "force_debug_info" },
84            "force-pkg-config": { "type": "void", "name": "pkg-config" },
85            "framework": "boolean",
86            "gc-binaries": { "type": "boolean", "name": "gc_binaries" },
87            "gdb-index": { "type": "boolean", "name": "enable_gdb_index" },
88            "gcc-sysroot": "boolean",
89            "gcov": "boolean",
90            "gnumake": { "type": "boolean", "name": "GNUmake" },
91            "gui": "boolean",
92            "headersclean": "boolean",
93            "incredibuild-xge": { "type": "boolean", "name": "incredibuild_xge" },
94            "libudev": "boolean",
95            "linker": { "type": "optionalString", "values": [ "bfd", "gold", "lld" ] },
96            "ltcg": "boolean",
97            "make": { "type": "addString", "values": [ "examples", "libs", "tests", "tools" ] },
98            "make-tool": "string",
99            "mips_dsp": "boolean",
100            "mips_dspr2": "boolean",
101            "mp": { "type": "boolean", "name": "msvc_mp" },
102            "nomake": { "type": "addString", "values": [ "examples", "tests", "tools" ] },
103            "opensource": { "type": "void", "name": "commercial", "value": "no" },
104            "optimize-debug": { "type": "boolean", "name": "optimize_debug" },
105            "optimize-size": { "type": "boolean", "name": "optimize_size" },
106            "optimized-qmake": { "type": "boolean", "name": "release_tools" },
107            "optimized-tools":  { "type": "boolean", "name": "release_tools" },
108            "pch": { "type": "boolean", "name": "precompile_header" },
109            "pkg-config": "boolean",
110            "platform": "string",
111            "plugin-manifests": "boolean",
112            "profile": "boolean",
113            "qreal": "string",
114            "qtlibinfix": { "type": "string", "name": "qt_libinfix" },
115            "qtlibinfix-plugins": { "type": "boolean", "name": "qt_libinfix_plugins" },
116            "qtnamespace": { "type": "string", "name": "qt_namespace" },
117            "reduce-exports": { "type": "boolean", "name": "reduce_exports" },
118            "reduce-relocations": { "type": "boolean", "name": "reduce_relocations" },
119            "release": { "type": "enum", "name": "debug", "values": { "yes": "no", "no": "yes" } },
120            "rpath": "boolean",
121            "sanitize": "sanitize",
122            "sdk": "string",
123            "separate-debug-info": { "type": "boolean", "name": "separate_debug_info" },
124            "shared": "boolean",
125            "silent": "void",
126            "qdbus": { "type": "boolean", "name": "dbus" },
127            "sse2": "boolean",
128            "sse3": "boolean",
129            "sse4.1": { "type": "boolean", "name": "sse4_1" },
130            "sse4.2": { "type": "boolean", "name": "sse4_2" },
131            "ssse3": "boolean",
132            "static": { "type": "enum", "name": "shared", "values": { "yes": "no", "no": "yes" } },
133            "static-runtime": { "type": "boolean", "name": "static_runtime" },
134            "strip": "boolean",
135            "syncqt": "boolean",
136            "sysroot": "string",
137            "testcocoon": "boolean",
138            "use-gold-linker": { "type": "boolean", "name": "use_gold_linker_alias" },
139            "warnings-are-errors": { "type": "boolean", "name": "warnings_are_errors" },
140            "Werror": { "type": "boolean", "name": "warnings_are_errors" },
141            "widgets": "boolean",
142            "xplatform": "string",
143            "zlib": { "type": "enum", "name": "system-zlib", "values": { "system": "yes", "qt": "no" } },
144            "zstd": "boolean"
145        },
146        "prefix": {
147            "D": "defines",
148            "F": "fpaths",
149            "I": "includes",
150            "L": "lpaths",
151            "R": "rpaths",
152            "W": "wflags"
153        }
154
155    },
156
157    "libraries": {
158        "zlib": {
159            "label": "zlib",
160            "test": {
161                "main": [
162                    "z_streamp stream = 0;",
163                    "(void) zlibVersion();",
164                    "(void) compress2(0, 0, 0, 0, 1);  // compress2 was added in zlib version 1.0.8"
165                ]
166            },
167            "headers": "zlib.h",
168            "sources": [
169                { "libs": "-lzdll", "condition": "config.msvc" },
170                { "libs": "-lzlib", "condition": "config.msvc" },
171                { "libs": "-lz", "condition": "!config.msvc" },
172                { "libs": "-s USE_ZLIB=1", "condition": "config.wasm" }
173            ]
174        },
175        "zstd": {
176            "label": "Zstandard",
177            "test": {
178                "include": "zstd.h",
179                "main": [
180                    "(void) ZSTD_compress(NULL, 0, NULL, 0, 1);",
181                    "unsigned long long n = ZSTD_getFrameContentSize(NULL, 0);",
182                    "(void) ZSTD_decompress(NULL, 0, NULL, n);"
183                ]
184            },
185            "sources": [
186                { "type": "pkgConfig", "args": "libzstd >= 1.3" },
187                "-lzstd"
188            ]
189        },
190        "dbus": {
191            "label": "D-Bus >= 1.2",
192            "test": {
193                "main": "(void) dbus_bus_get_private(DBUS_BUS_SYSTEM, (DBusError *)NULL);"
194            },
195            "headers": "dbus/dbus.h",
196            "sources": [
197                { "type": "pkgConfig", "args": "dbus-1 >= 1.2" },
198                {
199                    "libs": "",
200                    "builds": {
201                        "debug": "-ldbus-1d",
202                        "release": "-ldbus-1"
203                    },
204                    "condition": "config.win32"
205                },
206                { "libs": "-ldbus-1", "condition": "!config.win32" }
207            ]
208        },
209        "host_dbus": {
210            "label": "D-Bus >= 1.2 (host)",
211            "export": "",
212            "sources": [
213                { "type": "pkgConfig", "host": true, "args": "dbus-1 >= 1.2" },
214                { "libs": "", "comment": "placeholder for DBUS_HOST_PATH" }
215            ]
216        },
217        "libudev": {
218            "label": "udev",
219            "test": {
220                "main": "udev_unref(udev_new());"
221            },
222            "headers": "libudev.h",
223            "sources": [
224                { "type": "pkgConfig", "args": "libudev" },
225                "-ludev"
226            ]
227        },
228        "libdl": {
229            "label": "dlopen()",
230            "test": {
231                "main": [
232                    "dlclose(dlopen(0, 0));",
233                    "dlsym(RTLD_DEFAULT, 0);",
234                    "dlerror();"
235                ]
236            },
237            "headers": "dlfcn.h",
238            "sources": [
239                "",
240                "-ldl"
241            ]
242        }
243    },
244
245    "testTypeDependencies": {
246        "linkerSupportsFlag": [ "use_bfd_linker", "use_gold_linker", "use_lld_linker" ],
247        "verifySpec": [ "shared", "use_bfd_linker", "use_gold_linker", "use_lld_linker", "compiler-flags", "qmakeargs", "commit" ],
248        "compile": [ "verifyspec" ],
249        "detectPkgConfig": [ "cross_compile", "machineTuple" ],
250        "library": [ "pkg-config", "compiler-flags" ],
251        "getPkgConfigVariable": [ "pkg-config" ]
252    },
253
254    "testTypeAliases": {
255        "compile": [ "library", "architecture", "x86Simd", "x86SimdAlways" ]
256    },
257
258    "tests": {
259        "machineTuple": {
260            "label": "machine tuple",
261            "type": "machineTuple"
262        },
263        "verifyspec": {
264            "label": "valid makespec",
265            "type": "verifySpec",
266            "test": "verifyspec"
267        },
268        "architecture": {
269            "label": "target architecture",
270            "type": "architecture",
271            "test": "arch",
272            "output": "arch",
273            "log": "arch"
274        },
275        "host_architecture": {
276            "label": "host architecture",
277            "type": "architecture",
278            "test": "arch",
279            "output": "arch_host",
280            "host": true,
281            "pro": "arch_host.pro",
282            "log": "arch"
283        },
284        "GNUmake": {
285            "label": "GNU make",
286            "type": "gnumake"
287        },
288        "pkg-config": {
289            "label": "pkg-config",
290            "type": "detectPkgConfig"
291        },
292        "stl": {
293            "label": "STL compatibility",
294            "type": "compile",
295            "test": "stl"
296        },
297        "c99": {
298            "label": "C99 support",
299            "type": "compile",
300            "test": {
301                "head": [
302                    "#if __STDC_VERSION__ >= 199901L",
303                    "// Compiler claims to support C99, trust it",
304                    "#else",
305                    "#  error __STDC_VERSION__ must be >= 199901L",
306                    "#endif"
307                ],
308                "lang": "c",
309                "qmake": "CONFIG += c99"
310            }
311        },
312        "c11": {
313            "label": "C11 support",
314            "type": "compile",
315            "test": {
316                "head": [
317                    "#if __STDC_VERSION__ >= 201112L",
318                    "// Compiler claims to support C11, trust it",
319                    "#else",
320                    "#  error __STDC_VERSION__ must be >= 201112L",
321                    "#endif"
322                ],
323                "lang": "c",
324                "qmake": "CONFIG += c11"
325            }
326        },
327        "cxx14": {
328            "label": "C++14 support",
329            "type": "compile",
330            "test": {
331                "head": [
332                    "#if __cplusplus > 201103L",
333                    "// Compiler claims to support C++14, trust it",
334                    "#else",
335                    "#  error __cplusplus must be > 201103L (the value of C++11)",
336                    "#endif"
337                ],
338                "qmake": "CONFIG += c++11 c++14"
339            }
340        },
341        "cxx17": {
342            "label": "C++17 support",
343            "type": "compile",
344            "test": {
345                "head": [
346                    "#if __cplusplus > 201402L",
347                    "// Compiler claims to support C++17, trust it",
348                    "#else",
349                    "#  error __cplusplus must be > 201402L (the value for C++14)",
350                    "#endif",
351                    "#include <map>  // https://bugs.llvm.org//show_bug.cgi?id=33117",
352                    "#include <variant>"
353                ],
354                "main": [
355                    "std::variant<int> v(42);",
356                    "int i = std::get<int>(v);",
357                    "std::visit([](const auto &) { return 1; }, v);"
358                ],
359                "qmake": "CONFIG += c++11 c++14 c++17"
360            }
361        },
362        "cxx2a": {
363            "label": "C++2a support",
364            "type": "compile",
365            "test": {
366                "head": [
367                    "#if __cplusplus > 201703L",
368                    "// Compiler claims to support experimental C++2a, trust it",
369                    "#else",
370                    "#  error __cplusplus must be > 201703L (the value for C++17)",
371                    "#endif"
372                ],
373                "qmake": "CONFIG += c++11 c++14 c++17 c++2a"
374            }
375        },
376        "precompile_header": {
377            "label": "precompiled header support",
378            "type": "compile",
379            "test": {
380                "files": {
381                    "header.h": "#define HEADER_H"
382                },
383                "tail": [
384                    "#ifndef HEADER_H",
385                    "#error no go",
386                    "#endif"
387                ],
388                "qmake": [
389                    "CONFIG += precompile_header",
390                    "PRECOMPILED_DIR = .pch",
391                    "PRECOMPILED_HEADER = header.h"
392                ]
393            }
394        },
395        "use_bfd_linker": {
396            "label": "bfd linker",
397            "type": "compilerSupportsFlag",
398            "flag": "-fuse-ld=bfd"
399        },
400        "use_gold_linker": {
401            "label": "gold linker",
402            "type": "compilerSupportsFlag",
403            "flag": "-fuse-ld=gold"
404        },
405        "use_lld_linker" : {
406            "label": "lld linker",
407            "type": "compilerSupportsFlag",
408            "flag": "-fuse-ld=lld"
409        },
410        "optimize_debug": {
411            "label": "-Og support",
412            "type": "compilerSupportsFlag",
413            "flag": "-Og"
414        },
415        "enable_new_dtags": {
416            "label": "new dtags support",
417            "type": "linkerSupportsFlag",
418            "flag": "--enable-new-dtags"
419        },
420        "gdb_index": {
421            "label": "gdb index support",
422            "type": "linkerSupportsFlag",
423            "flag": "--gdb-index"
424        },
425        "reduce_exports": {
426            "label": "symbol visibility support",
427            "type": "compile",
428            "test": {
429                "head": [
430                    "#if defined(__GNUC__)",
431                    "__attribute((visibility(\"default\")))",
432                    "#elif defined(__SUNPRO_CC)",
433                    "__global",
434                    "#else",
435                    "#  error GCC4+ or SunStudio 8+ are required to support ELF visibility",
436                    "#endif"
437                ],
438                "qmake": [
439                    "TEMPLATE = lib",
440                    "CONFIG += dll hide_symbols",
441                    "isEmpty(QMAKE_CFLAGS_HIDESYMS): error(\"Nope\")"
442                ]
443            }
444        },
445        "reduce_relocations": {
446            "label": "-Bsymbolic-functions support",
447            "type": "compile",
448            "test": {
449                "head": [
450                    "#if !(defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__) || defined(__amd64))",
451                    "#  error Symbolic function binding on this architecture may be broken, disabling it (see QTBUG-36129).",
452                    "#endif"
453                ],
454                "qmake": [
455                    "TEMPLATE = lib",
456                    "CONFIG += dll bsymbolic_functions",
457                    "isEmpty(QMAKE_LFLAGS_BSYMBOLIC_FUNC): error(\"Nope\")"
458                ]
459            }
460        },
461        "build_parts": {
462            "type": "buildParts"
463        },
464        "separate_debug_info": {
465            "label": "separate debug information support",
466            "type": "compile",
467            "test": {
468                "qmake": [
469                    "TARGET = objcopytest",
470                    "load(resolve_target)",
471                    "QMAKE_POST_LINK += \\",
472                    "    $$QMAKE_OBJCOPY --only-keep-debug $$QMAKE_RESOLVED_TARGET objcopytest.debug && \\",
473                    "    $$QMAKE_OBJCOPY --strip-debug $$QMAKE_RESOLVED_TARGET && \\",
474                    "    $$QMAKE_OBJCOPY --add-gnu-debuglink=objcopytest.debug $$QMAKE_RESOLVED_TARGET"
475                ]
476            }
477        },
478        "gc_binaries": {
479            "label": "support for split sections and linker garbage collection",
480            "type": "compile",
481            "test": {
482                "qmake": [
483                    "isEmpty(QMAKE_CFLAGS_SPLIT_SECTIONS): error(\"Nope\")",
484                    "isEmpty(QMAKE_CXXFLAGS_SPLIT_SECTIONS): error(\"Nope\")",
485                    "isEmpty(QMAKE_LFLAGS_GCSECTIONS): error(\"Nope\")"
486                ]
487            }
488        },
489        "signaling_nan": {
490            "label": "Signaling NaN for doubles",
491            "type": "compile",
492            "test": {
493                "head": [ "#include <limits>" ],
494                "main": [
495                    "using B = std::numeric_limits<double>;",
496                    "static_assert(B::has_signaling_NaN, \"System lacks signaling NaN\");"
497                ]
498            }
499        },
500        "sse2": {
501            "label": "SSE2 instructions",
502            "type": "x86Simd"
503        },
504        "sse3": {
505            "label": "SSE3 instructions",
506            "type": "x86Simd"
507        },
508        "ssse3": {
509            "label": "SSSE3 instructions",
510            "type": "x86Simd"
511        },
512        "sse4_1": {
513            "label": "SSE4.1 instructions",
514            "type": "x86Simd"
515        },
516        "sse4_2": {
517            "label": "SSE4.2 instructions",
518            "type": "x86Simd"
519        },
520        "aesni": {
521            "label": "AES new instructions",
522            "type": "x86Simd"
523        },
524        "f16c": {
525            "label": "F16C instructions",
526            "type": "x86Simd"
527        },
528        "rdrnd": {
529            "label": "RDRAND instruction",
530            "type": "x86Simd"
531        },
532        "rdseed": {
533            "label": "RDSEED instruction",
534            "type": "x86Simd"
535        },
536        "shani": {
537            "label": "SHA new instructions",
538            "type": "x86Simd"
539        },
540        "avx": {
541            "label": "AVX instructions",
542            "type": "x86Simd"
543        },
544        "avx2": {
545            "label": "AVX2 instructions",
546            "type": "x86Simd"
547        },
548        "avx512f": {
549            "label": "AVX512 F instructions",
550            "type": "x86Simd"
551        },
552        "avx512er": {
553            "label": "AVX512 ER instructions",
554            "type": "x86Simd"
555        },
556        "avx512cd": {
557            "label": "AVX512 CD instructions",
558            "type": "x86Simd"
559        },
560        "avx512pf": {
561            "label": "AVX512 PF instructions",
562            "type": "x86Simd"
563        },
564        "avx512dq": {
565            "label": "AVX512 DQ instructions",
566            "type": "x86Simd"
567        },
568        "avx512bw": {
569            "label": "AVX512 BW instructions",
570            "type": "x86Simd"
571        },
572        "avx512vl": {
573            "label": "AVX512 VL instructions",
574            "type": "x86Simd"
575        },
576        "avx512ifma": {
577            "label": "AVX512 IFMA instructions",
578            "type": "x86Simd"
579        },
580        "avx512vbmi": {
581            "label": "AVX512 VBMI instructions",
582            "type": "x86Simd"
583        },
584        "x86SimdAlways": {
585            "label": "Intrinsics without -mXXX argument",
586            "type": "x86SimdAlways",
587            "test": "x86_simd"
588        },
589        "posix_fallocate": {
590            "label": "POSIX fallocate()",
591            "type": "compile",
592            "test": {
593                "include": [ "fcntl.h", "unistd.h" ],
594                "main": "(void) posix_fallocate(0, 0, 0);"
595            }
596        },
597        "alloca_stdlib_h": {
598            "label": "alloca() in stdlib.h",
599            "type": "compile",
600            "test": {
601                "include": "stdlib.h",
602                "main": "alloca(1);"
603            }
604        },
605        "alloca_h": {
606            "label": "alloca() in alloca.h",
607            "type": "compile",
608            "test": {
609                "include": "alloca.h",
610                "tail": [
611                    "#ifdef __QNXNTO__",
612                    "// extra include needed in QNX7 to define NULL for the alloca() macro",
613                    "#  include <stddef.h>",
614                    "#endif"
615                ],
616                "main": "alloca(1);"
617            }
618        },
619        "alloca_malloc_h": {
620            "label": "alloca() in malloc.h",
621            "type": "compile",
622            "test": {
623                "include": "malloc.h",
624                "main": "alloca(1);"
625            }
626        },
627        "stack_protector": {
628            "label": "stack protection",
629            "type": "compile",
630            "test": {
631                "head": [
632                    "#ifdef __QNXNTO__",
633                    "#  include <sys/neutrino.h>",
634                    "#  if _NTO_VERSION < 700",
635                    "#    error stack-protector not used (by default) before QNX 7.0.0.",
636                    "#  endif",
637                    "#endif"
638                ],
639                "qmake": "QMAKE_CXXFLAGS += -fstack-protector-strong"
640            }
641        },
642        "incredibuild_xge": {
643            "label": "IncrediBuild",
644            "type": "files",
645            "files": [ "BuildConsole.exe", "xgConsole.exe" ]
646        },
647        "ccache": {
648            "label": "ccache",
649            "type": "files",
650            "files": [ "ccache" ]
651        },
652        "intelcet": {
653            "label": "Support for Intel Control-flow Enforcement Technology",
654            "type": "compile",
655            "test": {
656                "main": [
657                    "#if !defined(__CET__)",
658                    "#  error Intel CET not available",
659                    "#endif"
660                ]
661            }
662        }
663    },
664
665    "features": {
666        "prepare": {
667            "condition": "features.gcc-sysroot || true",
668            "output": [ "prepareSpec", "prepareOptions", "preparePaths", "reloadSpec" ]
669        },
670        "machineTuple": {
671            "condition": "config.linux && !config.android && tests.machineTuple",
672            "output": [ "machineTuple" ]
673        },
674        "commit": {
675            "condition": "features.machineTuple || true",
676            "output": [ "commitOptions" ]
677        },
678        "android-style-assets": {
679            "label": "Android Style Assets",
680            "condition": "config.android",
681            "output": [ "privateFeature" ],
682            "comment": "This belongs into gui, but the license check needs it here already."
683        },
684        "shared": {
685            "label": "Building shared libraries",
686            "autoDetect": "!config.uikit",
687            "condition": "!config.integrity && !config.wasm && !config.rtems",
688            "output": [
689                "shared",
690                "publicFeature",
691                "publicQtConfig",
692                "publicConfig"
693            ]
694        },
695        "static": {
696            "condition": "!features.shared",
697            "output": [
698                "publicFeature",
699                "publicQtConfig",
700                "publicConfig"
701            ]
702        },
703        "cross_compile": {
704            "label": "Cross compiling",
705            "condition": "call.crossCompile",
706            "output": [ "publicConfig", "privateConfig", "publicFeature", "crossCompile" ]
707        },
708        "compiler-flags": {
709            "output": [ "compilerFlags" ]
710        },
711        "gc_binaries": {
712            "condition": "!features.shared && tests.gc_binaries",
713            "output": [ "privateFeature" ]
714        },
715        "gcc-sysroot": {
716            "output": [ "gccSysroot" ],
717            "condition": "input.sysroot != ''"
718        },
719        "qmakeargs": {
720            "output": [ "qmakeArgs" ],
721            "condition": "input.qmakeArgs != ''"
722        },
723        "use_bfd_linker": {
724            "label": "bfd",
725            "autoDetect": "false",
726            "enable" : "input.linker == 'bfd'",
727            "disable" : "input.linker == 'gold' || input.linker == 'lld'",
728            "condition": "!config.win32 && !config.integrity && !config.wasm && tests.use_bfd_linker",
729            "output": [ "privateConfig", "useBFDLinker" ]
730        },
731        "use_gold_linker_alias": {
732            "autoDetect": "false",
733            "condition": "!config.win32 && !config.integrity && !config.wasm && tests.use_gold_linker"
734        },
735        "use_gold_linker": {
736            "label": "gold",
737            "autoDetect": "false",
738            "enable" : "input.linker == 'gold' || features.use_gold_linker_alias" ,
739            "disable" : "input.linker == 'bfd' || input.linker == 'lld'",
740            "condition": "!config.win32 && !config.integrity && !config.wasm && !config.rtems && tests.use_gold_linker",
741            "output": [ "privateConfig", "useGoldLinker" ]
742        },
743        "use_lld_linker": {
744            "label": "lld",
745            "autoDetect": "false",
746            "enable" : "input.linker == 'lld'",
747            "disable" : "input.linker == 'bfd' || input.linker == 'gold'",
748            "condition": "!config.win32 && !config.integrity && !config.wasm && tests.use_lld_linker",
749            "output": [ "privateConfig", "useLLDLinker" ]
750        },
751        "optimize_debug": {
752            "label": "Optimize debug build",
753            "autoDetect": "!features.developer-build",
754            "condition": "!config.msvc && !config.clang && (features.debug || features.debug_and_release) && tests.optimize_debug",
755            "output": [ "privateConfig" ]
756        },
757        "optimize_size": {
758            "label": "Optimize release build for size",
759            "autoDetect": false,
760            "condition": "!features.debug || features.debug_and_release",
761            "output": [ "privateConfig" ]
762        },
763        "architecture": {
764            "label": "Architecture",
765            "output": [ "architecture" ]
766        },
767        "pkg-config": {
768            "label": "Using pkg-config",
769            "autoDetect": "!config.darwin && !config.win32",
770            "condition": "tests.pkg-config",
771            "output": [
772                "publicFeature",
773                { "type": "publicQtConfig", "negative": true },
774                "pkgConfig"
775            ]
776        },
777        "verifyspec": {
778            "label": "Have valid makespec",
779            "condition": "tests.verifyspec"
780        },
781        "developer-build": {
782            "label": "Developer build",
783            "autoDetect": false,
784            "output": [
785                { "type": "define", "name": "QT_BUILD_INTERNAL" },
786                { "type": "privateFeature", "name": "private_tests" },
787                { "type": "publicQtConfig", "name": "private_tests" }
788            ]
789        },
790        "debug": {
791            "label": "Build for debugging",
792            "autoDetect": "features.developer-build || (config.win32 && !config.gcc) || config.darwin"
793        },
794        "debug_and_release": {
795            "label": "Compile libs in debug and release mode",
796            "autoDetect": "input.debug == '' && !(config.win32 && config.gcc)",
797            "condition": "config.darwin || config.win32",
798            "output": [ "publicFeature", "publicQtConfig", "debugAndRelease" ]
799        },
800        "force_debug_info": {
801            "label": "Add debug info in release mode",
802            "autoDetect": false,
803            "output": [ "privateConfig" ]
804        },
805        "separate_debug_info": {
806            "label": "Split off debug information",
807            "autoDetect": false,
808            "condition": [
809                "features.shared",
810                "features.debug || features.debug_and_release || features.force_debug_info",
811                "config.darwin || tests.separate_debug_info"
812            ],
813            "output": [ "publicFeature", "publicQtConfig" ]
814        },
815        "release_tools": {
816            "label": "Compile tools in release mode",
817            "autoDetect": "features.debug",
818            "output": [ "privateFeature", "publicQtConfig" ]
819        },
820        "appstore-compliant": {
821            "label": "App store compliance",
822            "purpose": "Disables code that is not allowed in platform app stores",
823            "autoDetect": "config.uikit || config.android || config.winrt",
824            "output": [ "publicFeature" ]
825        },
826        "simulator_and_device": {
827            "label": "Build for both simulator and device",
828            "condition": "config.uikit && input.sdk == ''",
829            "output": [ "publicFeature", "publicQtConfig" ]
830        },
831        "build_all": {
832            "condition": "features.debug_and_release || features.simulator_and_device",
833            "output": [ "publicFeature", "publicQtConfig" ]
834        },
835        "rpath": {
836            "label": "Build with RPATH",
837            "autoDetect": "var.QMAKE_LFLAGS_RPATH != '' && features.shared",
838            "condition": "!config.android",
839            "output": [ "publicFeature", "publicQtConfig" ]
840        },
841        "rpath_dir": {
842            "label": "RPATH directory",
843            "enable": "input.rpaths != ''",
844            "autoDetect": false,
845            "output": [ { "type": "varAppend", "name": "EXTRA_RPATHS", "value": "input.rpaths" } ]
846        },
847        "force_asserts": {
848            "label": "Force assertions",
849            "autoDetect": false,
850            "output": [ "publicFeature" ]
851        },
852        "warnings_are_errors": {
853            "label": "WError",
854            "autoDetect": "features.developer-build",
855            "output": [ "privateConfig" ]
856        },
857        "headersclean": {
858            "label": "Check for clean headers",
859            "autoDetect": "features.developer-build",
860            "condition": "!config.wasm",
861            "output": [ "privateConfig" ]
862        },
863        "framework": {
864            "label": "Build Apple Frameworks",
865            "condition": "config.darwin && features.shared",
866            "output": [
867                { "type": "define", "name": "QT_MAC_FRAMEWORK_BUILD" },
868                "publicFeature",
869                { "type": "publicQtConfig", "name": "qt_framework"},
870                { "type": "publicConfig", "name": "qt_framework"}
871            ]
872        },
873        "largefile": {
874            "label": "Large file support",
875            "condition": "!config.android && !config.integrity && !config.winrt && !config.rtems",
876            "output": [
877                "privateConfig",
878                { "type": "define", "name": "QT_LARGEFILE_SUPPORT", "value": 64 }
879            ]
880        },
881        "testcocoon": {
882            "label": "Testcocoon support",
883            "autoDetect": false,
884            "output": [ "publicConfig" ]
885        },
886        "gcov": {
887            "label": "gcov support",
888            "autoDetect": false,
889            "output": [ "publicConfig" ]
890        },
891        "silent": {
892            "label": "Silent build",
893            "autoDetect": false,
894            "output": [ "privateConfig" ]
895        },
896        "sanitize_address": {
897            "label": "Addresses",
898            "autoDetect": false,
899            "output": [ "publicConfig" ]
900        },
901        "sanitize_thread": {
902            "label": "Threads",
903            "autoDetect": false,
904            "output": [ "publicConfig" ]
905        },
906        "sanitize_memory": {
907            "label": "Memory",
908            "autoDetect": false,
909            "output": [ "publicConfig" ]
910        },
911        "sanitize_fuzzer_no_link": {
912            "label": "Fuzzer (instrumentation only)",
913            "autoDetect": false,
914            "output": [ "publicConfig" ],
915            "purpose": [ "Adds instrumentation for fuzzing to the binaries but links to the usual main function instead of a fuzzer's." ]
916        },
917        "sanitize_undefined": {
918            "label": "Undefined",
919            "autoDetect": false,
920            "output": [ "publicConfig" ]
921        },
922        "sanitizer": {
923            "label": "Sanitizers",
924            "condition": "features.sanitize_address || features.sanitize_thread || features.sanitize_memory || features.sanitize_fuzzer_no_link || features.sanitize_undefined",
925            "output": [ "sanitizer", "publicConfig" ]
926        },
927        "coverage_trace_pc_guard": {
928            "label": "trace-pc-guard",
929            "autoDetect": false,
930            "output": [ "publicConfig" ]
931        },
932        "coverage_source_based": {
933            "label": "source-based",
934            "autoDetect": false,
935            "output": [ "publicConfig" ]
936        },
937        "coverage": {
938            "label": "Code Coverage Instrumentation",
939            "condition": "features.coverage_trace_pc_guard || features.coverage_source_based",
940            "output": [ "publicConfig" ]
941        },
942        "GNUmake": {
943            "label": "GNU make",
944            "autoDetect": false,
945            "condition": "tests.GNUmake",
946            "output": [ "privateConfig" ]
947        },
948        "plugin-manifests": {
949            "label": "Embed manifests in plugins",
950            "emitIf": "config.win32",
951            "autoDetect": false,
952            "output": [ { "type": "publicConfig", "negative": true, "name": "no_plugin_manifest" } ]
953        },
954        "profile": {
955            "label": "GNU profiling support",
956            "autoDetect": false,
957            "output": [
958                { "type": "varAppend", "name": "QMAKE_CFLAGS", "value": "'-pg'" },
959                { "type": "varAppend", "name": "QMAKE_CXXFLAGS", "value": "'-pg'" },
960                { "type": "varAppend", "name": "QMAKE_LFLAGS", "value": "'-pg'" }
961            ]
962        },
963        "strip": {
964            "label": "Strip binaries",
965            "condition": "!features.profile",
966            "output": [ { "type": "privateConfig", "negative": true, "name": "nostrip" } ]
967        },
968        "stl": {
969            "label": "STL compatibility",
970            "condition": "tests.stl",
971            "output": [ "publicQtConfig" ]
972        },
973        "c++11": {
974            "label": "C++11",
975            "output": [ "publicFeature", "publicQtConfig" ]
976        },
977        "c++14": {
978            "label": "C++14",
979            "condition": "features.c++11 && tests.cxx14",
980            "output": [ "publicFeature", "publicQtConfig" ]
981        },
982        "c++17": {
983            "label": "C++17",
984            "condition": "features.c++14 && tests.cxx17",
985            "output": [ "publicFeature", "publicQtConfig" ]
986        },
987        "c++1z": {
988            "label": "C++17",
989            "condition": "features.c++17",
990            "output": [ "publicFeature", "publicQtConfig" ]
991        },
992        "c++2a": {
993            "label": "C++2a",
994            "autoDetect": false,
995            "condition": "features.c++17 && tests.cxx2a",
996            "output": [ "publicFeature", "publicQtConfig" ]
997        },
998        "c89": {
999            "label": "C89"
1000        },
1001        "c99": {
1002            "label": "C99",
1003            "condition": "tests.c99",
1004            "output": [ "publicFeature" ]
1005        },
1006        "c11": {
1007            "label": "C11",
1008            "condition": "features.c99 && tests.c11",
1009            "output": [ "publicFeature" ]
1010        },
1011        "precompile_header": {
1012            "label": "Using precompiled headers",
1013            "condition": "tests.precompile_header",
1014            "output": [
1015                "privateConfig",
1016                { "type": "varRemove", "negative": true, "name": "CONFIG", "value": "'precompile_header'" }
1017            ]
1018        },
1019        "ltcg": {
1020            "label": "Using LTCG",
1021            "autoDetect": false,
1022            "output": [ "privateConfig" ]
1023        },
1024        "enable_new_dtags": {
1025            "label": "Using new DTAGS",
1026            "condition": "config.linux && tests.enable_new_dtags",
1027            "output": [ "privateConfig" ]
1028        },
1029        "enable_gdb_index": {
1030            "label": "Generating GDB index",
1031            "autoDetect": "features.developer-build",
1032            "condition": "config.gcc && !config.clang && (features.debug || features.force_debug_info || features.debug_and_release) && tests.gdb_index",
1033            "output": [ "privateConfig" ]
1034        },
1035        "reduce_exports": {
1036            "label": "Reduce amount of exported symbols",
1037            "condition": "!config.win32 && tests.reduce_exports",
1038            "output": [
1039                "privateFeature",
1040                "publicQtConfig",
1041                { "type": "define", "name": "QT_VISIBILITY_AVAILABLE" }
1042            ]
1043        },
1044        "reduce_relocations": {
1045            "label": "Reduce amount of relocations",
1046            "condition": "!config.win32 && tests.reduce_relocations",
1047            "output": [
1048                "privateFeature",
1049                "publicQtConfig",
1050                { "type": "define", "name": "QT_REDUCE_RELOCATIONS" }
1051            ]
1052        },
1053        "signaling_nan": {
1054            "label": "Signaling NaN",
1055            "condition": "tests.signaling_nan",
1056            "output": [ "publicFeature" ]
1057        },
1058        "sse2": {
1059            "label": "SSE2",
1060            "condition": "(arch.i386 || arch.x86_64) && tests.sse2",
1061            "output": [
1062                "privateConfig",
1063                "privateFeature",
1064                { "type": "define", "name": "QT_COMPILER_SUPPORTS_SSE2", "value": 1 }
1065            ]
1066        },
1067        "sse3": {
1068            "label": "SSE3",
1069            "condition": "features.sse2 && tests.sse3",
1070            "output": [
1071                "privateConfig",
1072                { "type": "define", "name": "QT_COMPILER_SUPPORTS_SSE3", "value": 1 }
1073            ]
1074        },
1075        "ssse3": {
1076            "label": "SSSE3",
1077            "condition": "features.sse3 && tests.ssse3",
1078            "output": [
1079                "privateConfig",
1080                { "type": "define", "name": "QT_COMPILER_SUPPORTS_SSSE3", "value": 1 }
1081            ]
1082        },
1083        "sse4_1": {
1084            "label": "SSE4.1",
1085            "condition": "features.ssse3 && tests.sse4_1",
1086            "output": [
1087                "privateConfig",
1088                { "type": "define", "name": "QT_COMPILER_SUPPORTS_SSE4_1", "value": 1 }
1089            ]
1090        },
1091        "sse4_2": {
1092            "label": "SSE4.2",
1093            "condition": "features.sse4_1 && tests.sse4_2",
1094            "output": [
1095                "privateConfig",
1096                { "type": "define", "name": "QT_COMPILER_SUPPORTS_SSE4_2", "value": 1 }
1097            ]
1098        },
1099        "avx": {
1100            "label": "AVX",
1101            "condition": "features.sse4_2 && tests.avx && (!config.android || !arch.x86_64)",
1102            "output": [
1103                "privateConfig",
1104                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX", "value": 1 }
1105            ]
1106        },
1107        "f16c": {
1108            "label": "F16C",
1109            "condition": "features.avx && tests.f16c",
1110            "output": [
1111                "privateConfig",
1112                { "type": "define", "name": "QT_COMPILER_SUPPORTS_F16C", "value": 1 }
1113            ]
1114        },
1115        "avx2": {
1116            "label": "AVX2",
1117            "condition": "features.avx && tests.avx2 && (!config.android || !arch.x86_64)",
1118            "output": [
1119                "privateConfig",
1120                "privateFeature",
1121                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX2", "value": 1 }
1122            ]
1123        },
1124        "avx512f": {
1125            "label": "F",
1126            "condition": "features.avx2 && tests.avx512f",
1127            "output": [
1128                "privateConfig",
1129                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512F", "value": 1 }
1130            ]
1131        },
1132        "avx512er": {
1133            "label": "ER",
1134            "condition": "features.avx512f && tests.avx512er",
1135            "output": [
1136                "privateConfig",
1137                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512ER", "value": 1 }
1138            ]
1139        },
1140        "avx512cd": {
1141            "label": "CD",
1142            "condition": "features.avx512f && tests.avx512cd",
1143            "output": [
1144                "privateConfig",
1145                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512CD", "value": 1 }
1146            ]
1147        },
1148        "avx512pf": {
1149            "label": "PF",
1150            "condition": "features.avx512f && tests.avx512pf",
1151            "output": [
1152                "privateConfig",
1153                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512PF", "value": 1 }
1154            ]
1155        },
1156        "avx512dq": {
1157            "label": "DQ",
1158            "condition": "features.avx512f && tests.avx512dq",
1159            "output": [
1160                "privateConfig",
1161                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512DQ", "value": 1 }
1162            ]
1163        },
1164        "avx512bw": {
1165            "label": "BW",
1166            "condition": "features.avx512f && tests.avx512bw",
1167            "output": [
1168                "privateConfig",
1169                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512BW", "value": 1 }
1170            ]
1171        },
1172        "avx512vl": {
1173            "label": "VL",
1174            "condition": "features.avx512f && tests.avx512vl",
1175            "output": [
1176                "privateConfig",
1177                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512VL", "value": 1 }
1178            ]
1179        },
1180        "avx512ifma": {
1181            "label": "IFMA",
1182            "condition": "features.avx512f && tests.avx512ifma",
1183            "output": [
1184                "privateConfig",
1185                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512IFMA", "value": 1 }
1186            ]
1187        },
1188        "avx512vbmi": {
1189            "label": "VBMI",
1190            "condition": "features.avx512f && tests.avx512vbmi",
1191            "output": [
1192                "privateConfig",
1193                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX512VBMI", "value": 1 }
1194            ]
1195        },
1196        "aesni": {
1197            "label": "AES",
1198            "condition": "features.sse2 && tests.aesni",
1199            "output": [
1200                "privateConfig",
1201                { "type": "define", "name": "QT_COMPILER_SUPPORTS_AES", "value": 1 }
1202            ]
1203        },
1204        "rdrnd": {
1205            "label": "RDRAND",
1206            "condition": "tests.rdrnd",
1207            "output": [
1208                "privateConfig",
1209                { "type": "define", "name": "QT_COMPILER_SUPPORTS_RDRND", "value": 1 }
1210            ]
1211        },
1212        "rdseed": {
1213            "label": "RDSEED",
1214            "condition": "tests.rdseed",
1215            "output": [
1216                "privateConfig",
1217                { "type": "define", "name": "QT_COMPILER_SUPPORTS_RDSEED", "value": 1 }
1218            ]
1219        },
1220        "shani": {
1221            "label": "SHA",
1222            "condition": "features.sse2 && tests.shani",
1223            "output": [
1224                "privateConfig",
1225                { "type": "define", "name": "QT_COMPILER_SUPPORTS_SHA", "value": 1 }
1226            ]
1227        },
1228        "x86SimdAlways": {
1229            "label": "Intrinsics without -mXXX option",
1230            "condition": "(arch.i386 || arch.x86_64) && tests.x86SimdAlways",
1231            "output": [
1232                "privateConfig",
1233                { "type": "define", "name": "QT_COMPILER_SUPPORTS_SIMD_ALWAYS", "value": 1 }
1234            ]
1235        },
1236        "mips_dsp": {
1237            "label": "DSP",
1238            "condition": "arch.mips && subarch.dsp",
1239            "output": [
1240                "privateConfig",
1241                { "type": "define", "name": "QT_COMPILER_SUPPORTS_MIPS_DSP", "value": 1 }
1242            ]
1243        },
1244        "mips_dspr2": {
1245            "label": "DSPr2",
1246            "condition": "arch.mips && subarch.dspr2",
1247            "output": [
1248                "privateConfig",
1249                { "type": "define", "name": "QT_COMPILER_SUPPORTS_MIPS_DSPR2", "value": 1 }
1250            ]
1251        },
1252        "neon": {
1253            "label": "NEON",
1254            "condition": "(arch.arm || arch.arm64) && subarch.neon",
1255            "output": [
1256                "privateConfig",
1257                { "type": "define", "name": "QT_COMPILER_SUPPORTS_NEON", "value": 1 }
1258            ]
1259        },
1260        "posix_fallocate": {
1261            "label": "POSIX fallocate()",
1262            "condition": "tests.posix_fallocate",
1263            "output": [ "privateFeature" ]
1264        },
1265        "alloca_h": {
1266            "label": "alloca.h",
1267            "condition": "tests.alloca_h",
1268            "output": [ "privateFeature" ]
1269        },
1270        "alloca_malloc_h": {
1271            "label": "alloca() in malloc.h",
1272            "condition": "!features.alloca_h && tests.alloca_malloc_h",
1273            "output": [ "privateFeature" ]
1274        },
1275        "alloca": {
1276            "label": "alloca()",
1277            "condition": "features.alloca_h || features.alloca_malloc_h || tests.alloca_stdlib_h",
1278            "output": [ "privateFeature" ]
1279        },
1280        "stack-protector-strong": {
1281            "label": "stack protection",
1282            "condition": "config.qnx && tests.stack_protector",
1283            "output": [ "privateFeature" ]
1284        },
1285        "system-zlib": {
1286            "label": "Using system zlib",
1287            "condition": "libs.zlib",
1288            "output": [ "privateFeature" ]
1289        },
1290        "zstd": {
1291            "label": "Zstandard support",
1292            "condition": "libs.zstd",
1293            "output": [ "privateFeature" ]
1294        },
1295        "thread": {
1296            "label": "Thread support",
1297            "purpose": "Provides QThread and related classes.",
1298            "section": "Kernel",
1299            "autoDetect": "!config.wasm",
1300            "output": [ "publicFeature" ]
1301        },
1302        "future": {
1303            "label": "QFuture",
1304            "purpose": "Provides QFuture and related classes.",
1305            "section": "Kernel",
1306            "condition": "features.thread",
1307            "output": [ "publicFeature" ]
1308        },
1309        "concurrent": {
1310            "label": "Qt Concurrent",
1311            "purpose": "Provides a high-level multi-threading API.",
1312            "section": "Kernel",
1313            "condition": "features.future",
1314            "output": [ "publicFeature", "feature" ]
1315        },
1316        "dbus": {
1317            "label": "Qt D-Bus",
1318            "autoDetect": "!config.uikit && !config.android && !config.winrt",
1319            "condition": "features.thread",
1320            "output": [ "privateFeature", "feature" ]
1321        },
1322        "dbus-linked": {
1323            "label": "Qt D-Bus directly linked to libdbus",
1324            "enable": "input.dbus == 'linked'",
1325            "disable": "input.dbus == 'runtime'",
1326            "condition": "features.dbus && libs.dbus",
1327            "output": [ "privateFeature" ]
1328        },
1329        "host-dbus": {
1330            "label": "Qt D-Bus (Host)",
1331            "autoDetect": "!config.android",
1332            "condition": "libs.host_dbus",
1333            "output": [ { "type": "varAppend", "name": "QT_HOST_CFLAGS_DBUS", "value": "libs.host_dbus.cflags", "eval": "true" } ]
1334        },
1335        "build_parts": {
1336            "output": [ { "type": "varAppend", "name": "QT_BUILD_PARTS", "value": "tests.build_parts.value" } ]
1337        },
1338        "qreal": {
1339            "label": "Type for qreal",
1340            "output": [ "qreal" ]
1341        },
1342        "gui": {
1343            "label": "Qt Gui",
1344            "output": [
1345                "privateFeature",
1346                { "type": "publicQtConfig", "negative": true }
1347            ]
1348        },
1349        "network": {
1350            "label": "Qt Network",
1351            "output": [ "privateFeature" ]
1352        },
1353        "sql": {
1354            "label": "Qt Sql",
1355            "condition": "features.thread",
1356            "output": [ "privateFeature" ]
1357        },
1358        "testlib": {
1359            "label": "Qt Testlib",
1360            "output": [ "privateFeature" ]
1361        },
1362        "widgets": {
1363            "label": "Qt Widgets",
1364            "autoDetect": "!config.tvos && !config.watchos",
1365            "condition": "features.gui",
1366            "output": [
1367                "privateFeature",
1368                { "type": "define", "negative": true, "name": "QT_NO_WIDGETS" },
1369                { "type": "publicQtConfig", "negative": true }
1370            ]
1371        },
1372        "xml": {
1373            "label": "Qt Xml",
1374            "output": [ "privateFeature" ]
1375        },
1376        "libudev": {
1377            "label": "udev",
1378            "condition": "libs.libudev",
1379            "output": [ "privateFeature" ]
1380        },
1381        "qt_libinfix_plugins": {
1382            "label": "Use QT_LIBINFIX for Plugins",
1383            "autoDetect": false,
1384            "enable": "input.qt_libinfix != '' && input.qt_libinfix_plugins == 'yes'",
1385            "output": [ "privateConfig" ]
1386        },
1387        "compile_examples": {
1388            "label": "Compile examples",
1389            "autoDetect": "!config.wasm",
1390            "output": [ "privateConfig" ]
1391        },
1392        "incredibuild_xge": {
1393            "label": "IncrediBuild",
1394            "emitIf": "var.QMAKE_HOST.os == 'Windows'",
1395            "condition": "tests.incredibuild_xge",
1396            "output": [ "publicConfig" ]
1397        },
1398        "ccache": {
1399            "label": "Using ccache",
1400            "autoDetect": false,
1401            "condition": "tests.ccache",
1402            "output": [ "privateConfig" ]
1403        },
1404        "msvc_mp": {
1405            "label": "Use multiple processors when compiling with MSVC",
1406            "emitIf": "config.msvc",
1407            "autoDetect": "false",
1408            "output": [ "privateConfig" ]
1409        },
1410        "static_runtime": {
1411            "label": "Statically link the C/C++ runtime library",
1412            "emitIf": "config.win32",
1413            "autoDetect": false,
1414            "condition": "!features.shared",
1415            "output": [ "publicConfig", "publicQtConfig" ]
1416        },
1417        "dlopen": {
1418            "label": "dlopen()",
1419            "condition": "config.unix && libs.libdl",
1420            "output": [ "privateFeature" ]
1421        },
1422        "relocatable": {
1423            "label": "Relocatable",
1424            "purpose": "Enable the Qt installation to be relocated.",
1425            "autoDetect": "features.shared",
1426            "condition": "features.dlopen || config.win32 || !features.shared",
1427            "output": [ "privateFeature" ]
1428        },
1429        "intelcet": {
1430            "label": "Using Intel CET",
1431            "condition": "tests.intelcet",
1432            "output": [ "privateFeature" ]
1433        }
1434    },
1435
1436    "earlyReport": [
1437        {
1438            "type": "fatal",
1439            "condition": "input.xplatform != '' && input.device != ''",
1440            "message": "Cannot specify both -xplatform and -device."
1441        },
1442        {
1443            "condition": "!features.prepare",
1444            "comment": "This is not an actual report - instead, it activates the early setup."
1445        },
1446        {
1447            "type": "fatal",
1448            "condition": "!call.licenseCheck",
1449            "message": "You are not licensed to use this software."
1450        },
1451        {
1452            "type": "warning",
1453            "condition": "input.debug_and_release == 'yes' && !config.darwin && !config.win32",
1454            "message": "-debug-and-release is only supported on Darwin and Windows platforms.
1455Qt can be built in release mode with separate debug information, so
1456-debug-and-release is no longer necessary."
1457        },
1458        {
1459            "type": "error",
1460            "condition": "features.framework && features.debug && !features.debug_and_release",
1461            "message": "debug-only framework builds are not supported. Configure with -no-framework if you want a pure debug build."
1462        },
1463        {
1464            "type": "error",
1465            "condition": "(features.rpath || features.rpath_dir) && !features.shared",
1466            "message": "Static builds don't support RPATH"
1467        },
1468        {
1469            "type": "error",
1470            "condition": "(features.rpath || features.rpath_dir) && var.QMAKE_LFLAGS_RPATH == ''",
1471            "message": "This platform does not support RPATH"
1472        },
1473        {
1474            "type": "error",
1475            "condition": "features.coverage && !config.clang",
1476            "message": "Command line option -coverage is only supported with clang compilers."
1477        },
1478        {
1479            "type": "error",
1480            "condition": "features.sanitize_fuzzer_no_link && !config.clang",
1481            "message": "Command line option -sanitize fuzzer-no-link is only supported with clang compilers."
1482        }
1483    ],
1484
1485    "report": [
1486        {
1487            "type": "note",
1488            "condition": "!features.shared",
1489            "message": "Using static linking will disable the use of dynamically
1490loaded plugins. Make sure to import all needed static plugins,
1491or compile needed modules into the library."
1492        },
1493        {
1494            "type": "note",
1495            "condition": "features.release_tools && !features.debug",
1496            "message": "-optimized-tools is not useful in -release mode."
1497        },
1498        {
1499            "type": "note",
1500            "condition": "input.qreal == 'double' && arch.arm",
1501            "message": "Qt is using double for qreal on this system. This is binary-incompatible against Qt 5.1.
1502Configure with '-qreal float' to create a build that is binary-compatible with 5.1."
1503        },
1504        {
1505            "type": "error",
1506            "condition": "!features.stl",
1507            "message": "Qt requires a compliant STL library."
1508        },
1509        {
1510            "type": "emccVersion",
1511            "condition": "config.wasm"
1512        },
1513        {
1514            "type": "error",
1515            "condition": "config.ios && features.debug && !features.debug_and_release",
1516            "message": "Debug build wihtout Release build is not currently supported on ios see QTBUG-71990. Use -debug-and-release."
1517        }
1518    ],
1519
1520    "summary": [
1521        {
1522            "type": "buildTypeAndConfig"
1523        },
1524        {
1525            "section": "Build options",
1526            "entries": [
1527                {
1528                    "message": "Mode",
1529                    "type": "buildMode"
1530                },
1531                {
1532                    "type": "feature",
1533                    "args": "optimize_debug",
1534                    "condition": "!config.msvc && !config.clang && (features.debug || features.debug_and_release)"
1535                },
1536                {
1537                    "type": "feature",
1538                    "args": "optimize_size",
1539                    "condition": "!features.debug || features.debug_and_release"
1540                },
1541                "shared",
1542                {
1543                    "message": "Using C standard",
1544                    "type": "firstAvailableFeature",
1545                    "args": "c11 c99 c89"
1546                },
1547                {
1548                    "message": "Using C++ standard",
1549                    "type": "firstAvailableFeature",
1550                    "args": "c++2a c++17 c++14 c++11"
1551                },
1552                {
1553                    "type": "feature",
1554                    "args": "ccache",
1555                    "condition": "config.unix"
1556                },
1557                {
1558                    "message": "Linker",
1559                    "type": "firstAvailableFeature",
1560                    "args": "use_bfd_linker use_gold_linker use_lld_linker",
1561                    "condition": "features.use_bfd_linker || features.use_gold_linker || features.use_lld_linker"
1562                },
1563                {
1564                    "type": "feature",
1565                    "args": "enable_new_dtags",
1566                    "condition": "config.linux"
1567                },
1568                {
1569                    "type": "feature",
1570                    "args": "enable_gdb_index",
1571                    "condition": "config.gcc && !config.clang && (features.debug || features.force_debug_info || features.debug_and_release)"
1572                },
1573                "relocatable",
1574                "precompile_header",
1575                "ltcg",
1576                {
1577                    "section": "Target compiler supports",
1578                    "entries": [
1579                        {
1580                            "message": "SSE",
1581                            "type": "featureList",
1582                            "args": "sse2 sse3 ssse3 sse4_1 sse4_2",
1583                            "condition": "(arch.i386 || arch.x86_64)"
1584                        },
1585                        {
1586                            "message": "AVX",
1587                            "type": "featureList",
1588                            "args": "avx avx2",
1589                            "condition": "(arch.i386 || arch.x86_64)"
1590                        },
1591                        {
1592                            "message": "AVX512",
1593                            "type": "featureList",
1594                            "args": "avx512f avx512er avx512cd avx512pf avx512dq avx512bw avx512vl avx512ifma avx512vbmi",
1595                            "condition": "(arch.i386 || arch.x86_64)"
1596                        },
1597                        {
1598                            "message": "Other x86",
1599                            "type": "featureList",
1600                            "args": "aesni f16c rdrnd shani",
1601                            "condition": "(arch.i386 || arch.x86_64)"
1602                        },
1603                        {
1604                            "type": "feature",
1605                            "args": "x86SimdAlways",
1606                            "condition": "(arch.i386 || arch.x86_64) && !config.msvc"
1607                        },
1608                        {
1609                            "type": "feature",
1610                            "args": "neon",
1611                            "condition": "arch.arm || arch.arm64"
1612                        },
1613                        {
1614                            "type": "feature",
1615                            "args": "mips_dsp",
1616                            "condition": "arch.mips"
1617                        },
1618                        {
1619                            "type": "feature",
1620                            "args": "mips_dspr2",
1621                            "condition": "arch.mips"
1622                        }
1623                    ]
1624                },
1625                {
1626                    "section": "Sanitizers",
1627                    "condition": "features.sanitizer",
1628                    "entries": [
1629                        "sanitize_address",
1630                        "sanitize_thread",
1631                        "sanitize_memory",
1632                        "sanitize_fuzzer_no_link",
1633                        "sanitize_undefined"
1634                    ]
1635                },
1636                {
1637                    "message": "Code Coverage Instrumentation",
1638                    "type": "firstAvailableFeature",
1639                    "args": "coverage_trace_pc_guard coverage_source_based",
1640                    "condition": "features.coverage"
1641                },
1642                {
1643                    "message": "Build parts",
1644                    "type": "buildParts"
1645                },
1646                {
1647                    "type": "feature",
1648                    "args": "appstore-compliant",
1649                    "condition": "config.darwin || config.android || config.winrt || config.win32"
1650                }
1651            ]
1652        }, {
1653            "section": "Qt modules and options",
1654            "entries": [
1655                "concurrent",
1656                "dbus",
1657                "dbus-linked",
1658                "gui",
1659                "network",
1660                "sql",
1661                "testlib",
1662                "widgets",
1663                "xml"
1664            ]
1665        }, {
1666            "section": "Support enabled for",
1667            "entries": [
1668                "pkg-config",
1669                "libudev",
1670                "system-zlib",
1671                "zstd"
1672            ]
1673        }
1674    ]
1675
1676}
1677