blob: c5e0423273efdd0b65204840b99616a45c980e3f [file] [log] [blame]
{
"module": "core",
"testDir": "../../config.tests",
"commandline": {
"options": {
"doubleconversion": { "type": "enum", "values": [ "no", "qt", "system" ] },
"eventfd": "boolean",
"glib": "boolean",
"iconv": { "type": "enum", "values": [ "no", "yes", "posix", "sun", "gnu" ] },
"icu": "boolean",
"inotify": "boolean",
"journald": "boolean",
"mimetype-database": "boolean",
"pcre": { "type": "enum", "values": [ "no", "qt", "system" ] },
"posix-ipc": { "type": "boolean", "name": "ipc_posix" },
"pps": { "type": "boolean", "name": "qqnx_pps" },
"slog2": "boolean",
"syslog": "boolean",
"trace": { "type": "optionalString", "values": [ "etw", "lttng", "no", "yes" ] }
}
},
"libraries": {
"doubleconversion": {
"label": "DoubleConversion",
"test": {
"main": "(void) double_conversion::StringToDoubleConverter::NO_FLAGS;"
},
"headers": "double-conversion/double-conversion.h",
"sources": [
"-ldouble-conversion"
]
},
"glib": {
"label": "GLib",
"test": {
"head": "typedef struct _GMainContext GMainContext;",
"main": [
"g_thread_init(NULL);",
"(void) g_main_context_default();",
"(void) g_source_new(0, 0);",
"g_source_add_poll(NULL, NULL);"
]
},
"headers": "glib.h",
"sources": [
{ "type": "pkgConfig", "args": "glib-2.0 gthread-2.0" }
]
},
"posix_iconv": {
"label": "POSIX iconv",
"export": "iconv",
"test": {
"main": [
"iconv_t x = iconv_open(\"\", \"\");",
"char *inp, *outp;",
"size_t inbytes, outbytes;",
"iconv(x, &inp, &inbytes, &outp, &outbytes);",
"iconv_close(x);"
]
},
"headers": "iconv.h",
"sources": [
{ "libs": "-liconv", "condition": "config.openbsd || config.haiku" },
{ "libs": "", "condition": "!(config.openbsd || config.haiku)" }
]
},
"gnu_iconv": {
"label": "GNU libiconv",
"export": "iconv",
"test": {
"main": [
"iconv_t x = iconv_open(\"\", \"\");",
"const char *inp;",
"char *outp;",
"size_t inbytes, outbytes;",
"iconv(x, &inp, &inbytes, &outp, &outbytes);",
"iconv_close(x);"
]
},
"headers": "iconv.h",
"sources": [
"-liconv"
]
},
"sun_iconv": {
"label": "SUN libiconv",
"export": "iconv",
"test": {
"inherit": "gnu_iconv"
},
"sources": [
""
]
},
"icu": {
"label": "ICU",
"test": {
"main": [
"UErrorCode status = U_ZERO_ERROR;",
"UCollator *collator = ucol_open(\"ru_RU\", &status);",
"if (!U_FAILURE(status))",
" ucol_close(collator);"
]
},
"headers": [ "unicode/utypes.h", "unicode/ucol.h", "unicode/ustring.h" ],
"sources": [
{
"builds": {
"debug": "-lsicuind -lsicuucd -lsicudtd",
"release": "-lsicuin -lsicuuc -lsicudt"
},
"condition": "config.win32 && !features.shared"
},
{ "libs": "-licuin -licuuc -licudt", "condition": "config.win32 && features.shared" },
{ "libs": "-licui18n -licuuc -licudata", "condition": "!config.win32" }
],
"use": [
{ "lib": "libdl", "condition": "features.dlopen" }
]
},
"journald": {
"label": "journald",
"test": {
"main": "sd_journal_send(\"PRIORITY=%i\", LOG_INFO, NULL);"
},
"headers": [ "systemd/sd-journal.h", "syslog.h" ],
"sources": [
{ "type": "pkgConfig", "args": "libsystemd" },
{ "type": "pkgConfig", "args": "libsystemd-journal" }
]
},
"libatomic": {
"label": "64 bit atomics",
"test": {
"tail": [
"void test(volatile std::atomic<std::int64_t> &a)",
"{",
" std::int64_t v = a.load(std::memory_order_acquire);",
" while (!a.compare_exchange_strong(v, v + 1,",
" std::memory_order_acq_rel,",
" std::memory_order_acquire)) {",
" v = a.exchange(v - 1);",
" }",
" a.store(v + 1, std::memory_order_release);",
"}"
],
"main": [
"void *ptr = (void*)0xffffffc0; // any random pointer",
"test(*reinterpret_cast<std::atomic<std::int64_t> *>(ptr));"
],
"qmake": "CONFIG += c++11"
},
"headers": [ "atomic", "cstdint" ],
"sources": [
"",
"-latomic"
]
},
"librt": {
"label": "clock_gettime()",
"test": {
"main": "timespec ts; clock_gettime(CLOCK_REALTIME, &ts);"
},
"headers": [ "unistd.h", "time.h" ],
"sources": [
"",
"-lrt"
]
},
"lttng-ust": {
"label": "lttng-ust",
"test": {
"main": "lttng_session_destroy(nullptr);"
},
"headers": "lttng/ust-events.h",
"sources": [
{ "type": "pkgConfig", "args": "lttng-ust" },
"-llttng-ust"
],
"use": "libdl"
},
"pcre2": {
"label": "PCRE2",
"test": {
"head": "#define PCRE2_CODE_UNIT_WIDTH 16",
"tail": [
"#if (PCRE2_MAJOR < 10) || ((PCRE2_MAJOR == 10) && (PCRE2_MINOR < 20))",
"# error This PCRE version is not supported",
"#endif"
]
},
"headers": "pcre2.h",
"sources": [
{ "type": "pkgConfig", "args": "libpcre2-16" },
"-lpcre2-16"
]
},
"pps": {
"label": "PPS",
"test": {
"main": [
"pps_decoder_t decoder;",
"pps_decoder_initialize(&decoder, NULL);"
]
},
"headers": "sys/pps.h",
"sources": [
"-lpps"
]
},
"slog2": {
"label": "slog2",
"test": {
"main": "slog2_set_default_buffer((slog2_buffer_t)-1);"
},
"export": "",
"headers": "sys/slog2.h",
"sources": [
"-lslog2"
]
},
"advapi32": {
"label": "advapi32",
"sources": [
"-ladvapi32"
]
},
"gdi32": {
"label": "gdi32",
"sources": [
"-lgdi32"
]
},
"kernel32": {
"label": "kernel32",
"sources": [
"-lkernel32"
]
},
"netapi32": {
"label": "netapi32",
"sources": [
"-lnetapi32"
]
},
"ole32": {
"label": "ole32",
"sources": [
"-lole32"
]
},
"shell32": {
"label": "shell32",
"sources": [
"-lshell32"
]
},
"uuid": {
"label": "uuid",
"sources": [
"-luuid"
]
},
"user32": {
"label": "user32",
"sources": [
"-luser32"
]
},
"winmm": {
"label": "winmm",
"sources": [
"-lwinmm"
]
},
"ws2_32": {
"label": "ws2_32",
"sources": [
"-lws2_32"
]
}
},
"tests": {
"atomicfptr": {
"label": "working std::atomic for function pointers",
"type": "compile",
"test": {
"include": "atomic",
"tail": [
"typedef void (*fptr)(int);",
"typedef std::atomic<fptr> atomicfptr;",
"void testfunction(int) { }",
"void test(volatile atomicfptr &a)",
"{",
" fptr v = a.load(std::memory_order_acquire);",
" while (!a.compare_exchange_strong(v, &testfunction,",
" std::memory_order_acq_rel,",
" std::memory_order_acquire)) {",
" v = a.exchange(&testfunction);",
" }",
" a.store(&testfunction, std::memory_order_release);",
"}"
],
"main": [
"atomicfptr fptr(testfunction);",
"test(fptr);"
],
"qmake": "CONFIG += c++11"
}
},
"clock-monotonic": {
"label": "POSIX monotonic clock",
"type": "compile",
"test": {
"include": [ "unistd.h", "time.h" ],
"main": [
"#if defined(_POSIX_MONOTONIC_CLOCK) && (_POSIX_MONOTONIC_CLOCK-0 >= 0)",
"timespec ts;",
"clock_gettime(CLOCK_MONOTONIC, &ts);",
"#else",
"# error Feature _POSIX_MONOTONIC_CLOCK not available",
"#endif"
]
},
"use": "librt"
},
"cloexec": {
"label": "O_CLOEXEC",
"type": "compile",
"test": {
"head": "#define _GNU_SOURCE 1",
"include": [ "sys/types.h", "sys/socket.h", "fcntl.h", "unistd.h" ],
"main": [
"int pipes[2];",
"(void) pipe2(pipes, O_CLOEXEC | O_NONBLOCK);",
"(void) fcntl(0, F_DUPFD_CLOEXEC, 0);",
"(void) dup3(0, 3, O_CLOEXEC);",
"#if defined(__NetBSD__)",
"(void) paccept(0, 0, 0, NULL, SOCK_CLOEXEC | SOCK_NONBLOCK);",
"#else",
"(void) accept4(0, 0, 0, SOCK_CLOEXEC | SOCK_NONBLOCK);",
"#endif"
]
}
},
"cxx11_future": {
"label": "C++11 <future>",
"type": "compile",
"test": {
"include": "future",
"main": [
"std::future<int> f = std::async([]() { return 42; });",
"(void)f.get();"
],
"qmake": "unix:LIBS += -lpthread"
}
},
"cxx11_random": {
"label": "C++11 <random>",
"type": "compile",
"test": {
"include": "random",
"main": "std::mt19937 mt(0);"
}
},
"eventfd": {
"label": "eventfd",
"type": "compile",
"test": {
"include": "sys/eventfd.h",
"main": [
"eventfd_t value;",
"int fd = eventfd(0, EFD_CLOEXEC);",
"eventfd_read(fd, &value);",
"eventfd_write(fd, value);"
]
}
},
"futimens": {
"label": "futimens()",
"type": "compile",
"test": {
"include": "sys/stat.h",
"main": "futimens(-1, 0);",
"qmake": [
"# Block futimens() on Apple platforms unless it's available on ALL",
"# deployment targets. This simplifies the logic at the call site",
"# dramatically, as it isn't strictly needed compared to futimes().",
"darwin: QMAKE_CXXFLAGS += -Werror=unguarded-availability -Werror=unguarded-availability-new",
"CONFIG += warn_on"
]
}
},
"futimes": {
"label": "futimes()",
"type": "compile",
"test": {
"include": "sys/time.h",
"main": "futimes(-1, 0);"
}
},
"getauxval": {
"label": "getauxval()",
"type": "compile",
"test": {
"include": "sys/auxv.h",
"main": "(void) getauxval(AT_NULL);"
}
},
"getentropy": {
"label": "getentropy()",
"type": "compile",
"test": {
"include": "unistd.h",
"main": [
"char buf[32];",
"(void) getentropy(buf, sizeof(buf));"
]
}
},
"glibc": {
"label": "GNU libc",
"type": "compile",
"test": {
"include": "stdlib.h",
"main": [
"return __GLIBC__;"
]
}
},
"inotify": {
"label": "inotify",
"type": "compile",
"test": {
"include": "sys/inotify.h",
"main": [
"inotify_init();",
"inotify_add_watch(0, \"foobar\", IN_ACCESS);",
"inotify_rm_watch(0, 1);"
]
}
},
"ipc_sysv": {
"label": "SysV IPC",
"type": "compile",
"test": {
"include": [ "sys/types.h", "sys/ipc.h", "sys/sem.h", "sys/shm.h", "fcntl.h" ],
"main": [
"key_t unix_key = ftok(\"test\", 'Q');",
"semctl(semget(unix_key, 1, 0666 | IPC_CREAT | IPC_EXCL), 0, IPC_RMID, 0);",
"shmget(unix_key, 0, 0666 | IPC_CREAT | IPC_EXCL);",
"shmctl(0, 0, (struct shmid_ds *)(0));"
]
}
},
"ipc_posix": {
"label": "POSIX IPC",
"type": "compile",
"test": {
"include": [ "sys/types.h", "sys/mman.h", "semaphore.h", "fcntl.h" ],
"main": [
"sem_close(sem_open(\"test\", O_CREAT | O_EXCL, 0666, 0));",
"shm_open(\"test\", O_RDWR | O_CREAT | O_EXCL, 0666);",
"shm_unlink(\"test\");"
],
"qmake": "linux: LIBS += -lpthread -lrt"
}
},
"linkat": {
"label": "linkat()",
"type": "compile",
"test": {
"head": "#define _ATFILE_SOURCE 1",
"include": [ "fcntl.h", "unistd.h" ],
"main": "linkat(AT_FDCWD, \"foo\", AT_FDCWD, \"bar\", AT_SYMLINK_FOLLOW);"
}
},
"ppoll": {
"label": "ppoll()",
"type": "compile",
"test": {
"include": [ "signal.h", "poll.h" ],
"main": [
"struct pollfd pfd;",
"struct timespec ts;",
"sigset_t sig;",
"ppoll(&pfd, 1, &ts, &sig);"
]
}
},
"pollts": {
"label": "pollts()",
"type": "compile",
"test": {
"include": [ "poll.h", "signal.h", "time.h" ],
"main": [
"struct pollfd pfd;",
"struct timespec ts;",
"sigset_t sig;",
"pollts(&pfd, 1, &ts, &sig);"
]
}
},
"poll": {
"label": "poll()",
"type": "compile",
"test": {
"include": "poll.h",
"main": [
"struct pollfd pfd;",
"poll(&pfd, 1, 0);"
]
}
},
"renameat2": {
"label": "renameat2()",
"type": "compile",
"test": {
"head": "#define _ATFILE_SOURCE 1",
"include": [ "fcntl.h", "stdio.h" ],
"main": "renameat2(AT_FDCWD, argv[1], AT_FDCWD, argv[2], RENAME_NOREPLACE | RENAME_WHITEOUT);"
}
},
"statx": {
"label": "statx() in libc",
"type": "compile",
"test": {
"head": "#define _ATFILE_SOURCE 1",
"include": [ "sys/types.h", "sys/stat.h", "unistd.h", "fcntl.h" ],
"main": [
"struct statx statxbuf;",
"unsigned int mask = STATX_BASIC_STATS;",
"return statx(AT_FDCWD, \"\", AT_STATX_SYNC_AS_STAT, mask, &statxbuf);"
]
}
},
"syslog": {
"label": "syslog",
"type": "compile",
"test": {
"include": "syslog.h",
"main": [
"openlog(\"qt\", 0, LOG_USER);",
"syslog(LOG_INFO, \"configure\");",
"closelog();"
]
}
},
"xlocalescanprint": {
"label": "xlocale.h (or equivalents)",
"type": "compile",
"test": {
"files": {
"qglobal.h": [
"#ifndef QGLOBAL_H",
"#define QGLOBAL_H",
"#endif"
]
},
"tail": [
"#define QT_BEGIN_NAMESPACE",
"#define QT_END_NAMESPACE",
"",
"#ifdef _MSVC_VER",
"#define Q_CC_MSVC _MSVC_VER",
"#endif",
"",
"#define QT_NO_DOUBLECONVERSION",
"",
"#include QDSP_P_H"
],
"main": [
"#ifdef _MSVC_VER",
"_locale_t invalidLocale = NULL;",
"#else",
"locale_t invalidLocale = NULL;",
"#endif",
"double a = 3.4;",
"qDoubleSnprintf(argv[0], 1, invalidLocale, \"invalid format\", a);",
"qDoubleSscanf(argv[0], invalidLocale, \"invalid format\", &a, &argc);"
],
"qmake": "DEFINES += QDSP_P_H=$$shell_quote(\\\"@PWD@/text/qdoublescanprint_p.h\\\")"
}
}
},
"features": {
"clock-gettime": {
"label": "clock_gettime()",
"condition": "config.unix && libs.librt",
"output": [ "privateFeature" ]
},
"clock-monotonic": {
"label": "POSIX monotonic clock",
"condition": "features.clock-gettime && tests.clock-monotonic",
"output": [ "feature" ]
},
"doubleconversion": {
"label": "DoubleConversion",
"output": [ "privateFeature", "feature" ]
},
"system-doubleconversion": {
"label": " Using system DoubleConversion",
"enable": "input.doubleconversion == 'system'",
"disable": "input.doubleconversion == 'qt'",
"condition": "features.doubleconversion && libs.doubleconversion",
"output": [ "privateFeature" ]
},
"cxx11_future": {
"label": "C++11 <future>",
"condition": "tests.cxx11_future",
"output": [ "publicFeature" ]
},
"eventfd": {
"label": "eventfd",
"condition": "!config.wasm && tests.eventfd",
"output": [ "feature" ]
},
"futimens": {
"label": "futimens()",
"condition": "!config.win32 && tests.futimens",
"output": [ "privateFeature" ]
},
"futimes": {
"label": "futimes()",
"condition": "!config.win32 && !features.futimens && tests.futimes",
"output": [ "privateFeature" ]
},
"getauxval": {
"label": "getauxval()",
"condition": "config.linux && tests.getauxval",
"output": [ "privateFeature" ]
},
"getentropy": {
"label": "getentropy()",
"condition": "config.unix && tests.getentropy",
"output": [ "privateFeature" ]
},
"glib": {
"label": "GLib",
"autoDetect": "!config.win32",
"condition": "libs.glib",
"output": [ "privateFeature", "feature" ]
},
"glibc": {
"label": "GNU libc",
"autoDetect": "config.linux",
"condition": "tests.glibc",
"output": [ "privateFeature" ]
},
"iconv": {
"label": "iconv",
"purpose": "Provides internationalization on Unix.",
"section": "Internationalization",
"condition": "!features.icu && features.textcodec && (features.posix-libiconv || features.sun-libiconv || features.gnu-libiconv)",
"output": [ "privateFeature", "feature" ]
},
"posix-libiconv": {
"label": "POSIX iconv",
"enable": "input.iconv == 'posix'",
"disable": "input.iconv == 'sun' || input.iconv == 'gnu' || input.iconv == 'no'",
"condition": "!config.win32 && !config.qnx && !config.android && !config.darwin && libs.posix_iconv",
"output": [ "privateFeature" ]
},
"sun-libiconv": {
"label": "SUN iconv",
"enable": "input.iconv == 'sun'",
"disable": "input.iconv == 'posix' || input.iconv == 'gnu' || input.iconv == 'no'",
"condition": "!config.win32 && !config.qnx && !config.android && !config.darwin && !features.posix-libiconv && libs.sun_iconv"
},
"gnu-libiconv": {
"label": "GNU iconv",
"enable": "input.iconv == 'gnu'",
"disable": "input.iconv == 'posix' || input.iconv == 'sun' || input.iconv == 'no'",
"condition": "!config.win32 && !config.qnx && !config.android && !config.darwin && !features.posix-libiconv && !features.sun-libiconv && libs.gnu_iconv",
"output": [ "privateFeature" ]
},
"icu": {
"label": "ICU",
"autoDetect": "!config.win32",
"condition": "libs.icu",
"output": [ "privateFeature" ]
},
"inotify": {
"label": "inotify",
"condition": "tests.inotify",
"output": [ "privateFeature", "feature" ]
},
"ipc_posix": {
"label": "Using POSIX IPC",
"autoDetect": "!config.win32",
"condition": "!tests.ipc_sysv && tests.ipc_posix",
"output": [ { "type": "define", "name": "QT_POSIX_IPC" } ]
},
"journald": {
"label": "journald",
"autoDetect": false,
"condition": "libs.journald",
"output": [ "privateFeature" ]
},
"linkat": {
"label": "linkat()",
"comment": "Currently only used by QTemporaryFile; linkat() exists on Android, but hardlink creation fails due to security rules",
"autoDetect": "config.linux && !config.android",
"condition": "tests.linkat",
"output": [ "privateFeature" ]
},
"std-atomic64": {
"label": "64 bit atomic operations",
"condition": "libs.libatomic",
"output": [ "publicFeature" ]
},
"mimetype": {
"label": "Mimetype handling",
"purpose": "Provides MIME type handling.",
"section": "Utilities",
"condition": "features.textcodec",
"output": [ "publicFeature", "feature" ]
},
"mimetype-database": {
"label": "Built-in copy of the MIME database",
"condition": "features.mimetype",
"output": [ "privateFeature" ]
},
"pcre2": {
"label": "PCRE2",
"disable": "input.pcre == 'no' || input.pcre == 'system'",
"enable": "input.pcre == 'qt'",
"output": [ "privateConfig" ]
},
"system-pcre2": {
"label": " Using system PCRE2",
"disable": "input.pcre == 'no' || input.pcre == 'qt'",
"enable": "input.pcre == 'system'",
"condition": "libs.pcre2",
"output": [ "privateFeature" ]
},
"poll_ppoll": {
"label": "Native ppoll()",
"emitIf": "!config.win32",
"condition": "!config.wasm && tests.ppoll",
"output": [ "privateFeature" ]
},
"poll_pollts": {
"label": "Native pollts()",
"emitIf": "!config.win32",
"condition": "!features.poll_ppoll && tests.pollts",
"output": [ "privateFeature" ]
},
"poll_poll": {
"label": "Native poll()",
"emitIf": "!config.win32",
"condition": "!features.poll_ppoll && !features.poll_pollts && tests.poll",
"output": [ "privateFeature" ]
},
"poll_select": {
"label": "Emulated poll()",
"emitIf": "!config.win32",
"condition": "!features.poll_ppoll && !features.poll_pollts && !features.poll_poll",
"output": [
"privateFeature",
{ "type": "define", "name": "QT_NO_NATIVE_POLL" }
]
},
"qqnx_pps": {
"label": "PPS",
"emitIf": "config.qnx",
"condition": "libs.pps",
"output": [ "privateFeature" ]
},
"qeventtransition": {
"label": "QEventTransition class",
"condition": "features.statemachine",
"output": [ "publicFeature" ]
},
"renameat2": {
"label": "renameat2()",
"condition": "config.linux && tests.renameat2",
"output": [ "privateFeature" ]
},
"slog2": {
"label": "slog2",
"condition": "libs.slog2",
"output": [ "privateFeature" ]
},
"statx": {
"label": "statx() in libc",
"condition": "config.linux && tests.statx",
"output": [ "privateFeature" ]
},
"syslog": {
"label": "syslog",
"autoDetect": false,
"condition": "tests.syslog",
"output": [ "privateFeature" ]
},
"threadsafe-cloexec": {
"label": "Threadsafe pipe creation",
"condition": "tests.cloexec",
"output": [
"publicQtConfig",
{ "type": "define", "name": "QT_THREADSAFE_CLOEXEC", "value": 1 }
]
},
"properties": {
"label": "Properties",
"purpose": "Supports scripting Qt-based applications.",
"section": "Kernel",
"output": [ "publicFeature", "feature" ]
},
"regularexpression": {
"label": "QRegularExpression",
"purpose": "Provides an API to Perl-compatible regular expressions.",
"section": "Kernel",
"condition": "features.system-pcre2 || features.pcre2",
"output": [ "publicFeature", "feature" ]
},
"sharedmemory": {
"label": "QSharedMemory",
"purpose": "Provides access to a shared memory segment.",
"section": "Kernel",
"condition": [
"config.android || config.win32 || (!config.vxworks && (tests.ipc_sysv || tests.ipc_posix))"
],
"output": [ "publicFeature", "feature" ]
},
"systemsemaphore": {
"label": "QSystemSemaphore",
"purpose": "Provides a general counting system semaphore.",
"section": "Kernel",
"condition": [
"!config.integrity && !config.vxworks && !config.rtems",
"config.android || config.win32 || tests.ipc_sysv || tests.ipc_posix"
],
"output": [ "publicFeature", "feature" ]
},
"xmlstream": {
"label": "XML Streaming APIs",
"purpose": "Provides a simple streaming API for XML.",
"section": "Kernel",
"output": [ "publicFeature", "feature" ]
},
"xmlstreamreader": {
"label": "QXmlStreamReader",
"purpose": "Provides a well-formed XML parser with a simple streaming API.",
"section": "Kernel",
"condition": "features.xmlstream",
"output": [ "publicFeature", "feature" ]
},
"xmlstreamwriter": {
"label": "QXmlStreamWriter",
"purpose": "Provides a XML writer with a simple streaming API.",
"section": "Kernel",
"condition": "features.xmlstream",
"output": [ "publicFeature", "feature" ]
},
"textdate": {
"label": "Text Date",
"purpose": "Supports month and day names in dates.",
"section": "Data structures",
"output": [ "publicFeature", "feature" ]
},
"datestring": {
"label": "QDate/QTime/QDateTime",
"purpose": "Provides conversion between dates and strings.",
"section": "Data structures",
"condition": "features.textdate",
"output": [ "publicFeature", "feature" ]
},
"process": {
"label": "QProcess",
"purpose": "Supports external process invocation.",
"section": "File I/O",
"condition": "features.processenvironment && !config.winrt && !config.uikit && !config.integrity && !config.vxworks && !config.rtems",
"output": [ "publicFeature", "feature" ]
},
"processenvironment": {
"label": "QProcessEnvironment",
"purpose": "Provides a higher-level abstraction of environment variables.",
"section": "File I/O",
"condition": "!config.winrt && !config.integrity && !config.rtems",
"output": [ "publicFeature" ]
},
"temporaryfile": {
"label": "QTemporaryFile",
"purpose": "Provides an I/O device that operates on temporary files.",
"section": "File I/O",
"output": [ "publicFeature", "feature" ]
},
"library": {
"label": "QLibrary",
"purpose": "Provides a wrapper for dynamically loaded libraries.",
"section": "File I/O",
"condition": "config.win32 || config.hpux || (!config.nacl && features.dlopen)",
"output": [ "publicFeature", "feature" ]
},
"settings": {
"label": "QSettings",
"purpose": "Provides persistent application settings.",
"section": "File I/O",
"output": [ "publicFeature", "feature" ]
},
"filesystemwatcher": {
"label": "QFileSystemWatcher",
"purpose": "Provides an interface for monitoring files and directories for modifications.",
"section": "File I/O",
"condition": "!config.winrt",
"output": [ "publicFeature", "feature" ]
},
"filesystemiterator": {
"label": "QFileSystemIterator",
"purpose": "Provides fast file system iteration.",
"section": "File I/O",
"output": [ "publicFeature", "feature" ]
},
"itemmodel": {
"label": "Qt Item Model",
"purpose": "Provides the item model for item views",
"section": "ItemViews",
"output": [ "publicFeature", "feature" ]
},
"proxymodel": {
"label": "QAbstractProxyModel",
"purpose": "Supports processing of data passed between another model and a view.",
"section": "ItemViews",
"condition": "features.itemmodel",
"output": [ "publicFeature", "feature" ]
},
"sortfilterproxymodel": {
"label": "QSortFilterProxyModel",
"purpose": "Supports sorting and filtering of data passed between another model and a view.",
"section": "ItemViews",
"condition": "features.proxymodel",
"output": [ "publicFeature", "feature" ]
},
"identityproxymodel": {
"label": "QIdentityProxyModel",
"purpose": "Supports proxying a source model unmodified.",
"section": "ItemViews",
"condition": "features.proxymodel",
"output": [ "publicFeature", "feature" ]
},
"transposeproxymodel": {
"label": "QTransposeProxyModel",
"purpose": "Provides a proxy to swap rows and columns of a model.",
"section": "ItemViews",
"condition": "features.proxymodel",
"output": [ "publicFeature", "feature" ]
},
"concatenatetablesproxymodel": {
"label": "QConcatenateTablesProxyModel",
"purpose": "Supports concatenating source models.",
"section": "ItemViews",
"condition": "features.proxymodel",
"output": [ "publicFeature", "feature" ]
},
"stringlistmodel": {
"label": "QStringListModel",
"purpose": "Provides a model that supplies strings to views.",
"section": "ItemViews",
"condition": "features.itemmodel",
"output": [ "publicFeature", "feature" ]
},
"translation": {
"label": "Translation",
"purpose": "Supports translations using QObject::tr().",
"section": "Internationalization",
"output": [ "publicFeature", "feature" ]
},
"textcodec": {
"label": "QTextCodec",
"purpose": "Supports conversions between text encodings.",
"section": "Internationalization",
"output": [ "publicFeature", "feature" ]
},
"codecs": {
"label": "Codecs",
"purpose": "Supports non-unicode text conversions.",
"section": "Internationalization",
"condition": "features.textcodec",
"output": [ "publicFeature", "feature" ]
},
"big_codecs": {
"label": "Big Codecs",
"purpose": "Supports big codecs, e.g. CJK.",
"section": "Internationalization",
"condition": "features.textcodec",
"output": [ "publicFeature", "feature" ]
},
"easingcurve": {
"label": "Easing curve",
"purpose": "Provides easing curve.",
"section": "Utilities",
"output": [ "publicFeature" ]
},
"animation": {
"label": "Animation",
"purpose": "Provides a framework for animations.",
"section": "Utilities",
"condition": "features.properties && features.easingcurve",
"output": [ "publicFeature", "feature" ]
},
"statemachine": {
"label": "State machine",
"purpose": "Provides hierarchical finite state machines.",
"section": "Utilities",
"condition": "features.properties",
"output": [ "publicFeature", "feature" ]
},
"gestures": {
"label": "Gesture",
"purpose": "Provides a framework for gestures.",
"section": "Utilities",
"output": [ "publicFeature", "feature" ]
},
"sha3-fast": {
"label": "Speed optimized SHA3",
"purpose": "Optimizes SHA3 for speed instead of size.",
"section": "Utilities",
"output": [ "privateFeature" ]
},
"jalalicalendar": {
"label": "QJalaliCalendar",
"purpose": "Support the Jalali (Persian) calendar",
"section": "Utilities",
"output": [ "publicFeature" ]
},
"hijricalendar": {
"label": "QHijriCalendar",
"purpose": "Generic basis for Islamic calendars, providing shared locale data",
"section": "Utilities",
"output": [ "privateFeature" ]
},
"islamiccivilcalendar": {
"label": "QIslamicCivilCalendar",
"purpose": "Support the Islamic Civil calendar",
"section": "Utilities",
"condition": "features.hijricalendar",
"output": [ "publicFeature" ]
},
"timezone": {
"label": "QTimeZone",
"purpose": "Provides support for time-zone handling.",
"section": "Utilities",
"output": [ "publicFeature" ]
},
"datetimeparser": {
"label": "QDateTimeParser",
"purpose": "Provides support for parsing date-time texts.",
"section": "Utilities",
"output": [ "privateFeature" ]
},
"commandlineparser": {
"label": "QCommandlineParser",
"purpose": "Provides support for command line parsing.",
"section": "Utilities",
"output": [ "publicFeature" ]
},
"lttng": {
"label": "LTTNG",
"autoDetect": false,
"enable": "input.trace == 'lttng' || (input.trace =='yes' && config.linux)",
"disable": "input.trace == 'etw' || input.trace =='no'",
"condition": "config.linux && libs.lttng-ust",
"output": [ "privateFeature" ]
},
"etw": {
"label": "ETW",
"autoDetect": false,
"enable": "input.trace == 'etw' || (input.trace == 'yes' && config.win32)",
"disable": "input.trace == 'lttng' || input.trace == 'no'",
"condition": "config.win32",
"output": [ "privateFeature" ]
},
"topleveldomain": {
"label": "QUrl::topLevelDomain()",
"purpose": "Provides support for extracting the top level domain from URLs.
If enabled, a binary dump of the Public Suffix List (http://www.publicsuffix.org,
Mozilla License) is included. The data is then also used in QNetworkCookieJar::validateCookie.",
"section": "Utilities",
"output": [ "publicFeature" ]
},
"win32_system_libs": {
"label": "Windows System Libraries",
"condition": "config.win32 && libs.advapi32 && libs.gdi32 && libs.kernel32 && libs.netapi32 && libs.ole32 && libs.shell32 && libs.uuid && libs.user32 && libs.winmm && libs.ws2_32"
},
"cborstreamreader": {
"label": "CBOR stream reading",
"purpose": "Provides support for reading the CBOR binary format.
Note that this is required for plugin loading. Qt GUI needs QPA plugins for basic operation.",
"section": "Utilities",
"output": [ "publicFeature" ]
},
"cborstreamwriter": {
"label": "CBOR stream writing",
"purpose": "Provides support for writing the CBOR binary format.",
"section": "Utilities",
"output": [ "publicFeature" ]
},
"binaryjson": {
"label": "Binary JSON (deprecated)",
"purpose": "Provides support for the deprecated binary JSON format.",
"section": "Utilities",
"output": [ "publicFeature" ]
}
},
"report": [
{
"type": "note",
"condition": "features.journald || features.syslog || (config.qnx && features.slog2)",
"message": "journald, syslog or slog2 integration is enabled.
If your users intend to develop applications against this build,
ensure that the IDEs they use either set QT_FORCE_STDERR_LOGGING to 1
or are able to read the logged output from journald, syslog or slog2."
},
{
"type": "error",
"condition": "!tests.cxx11_random",
"message": "C++11 <random> is required and is missing or failed to compile."
},
{
"type": "error",
"condition": "input.doubleconversion == 'no' && !tests.xlocalescanprint",
"message": "Your C library does not provide sscanf_l or snprintf_l.
You need to use libdouble-conversion for double/string conversion."
},
{
"type": "error",
"condition": "!tests.atomicfptr",
"message": "detected a std::atomic implementation that fails for function pointers.
Please apply the patch corresponding to your Standard Library vendor, found in
qtbase/config.tests/atomicfptr"
},
{
"type": "error",
"condition": [
"config.unix || config.integrity",
"!features.poll_ppoll",
"!features.poll_pollts",
"!features.poll_poll",
"!features.poll_select"
],
"message": "Qt requires poll(), ppoll(), poll_ts() or select() on this platform"
}
],
"summary": [
{
"section": "Qt Core",
"entries": [
"doubleconversion",
"system-doubleconversion",
"glib",
"iconv",
"icu",
"mimetype-database",
{
"message": "Tracing backend",
"type": "firstAvailableFeature",
"args": "etw lttng"
},
{
"section": "Logging backends",
"entries": [
"journald", "syslog", "slog2"
]
},
{
"type": "feature",
"args": "qqnx_pps",
"condition": "config.qnx"
},
"pcre2",
"system-pcre2"
]
}
]
}