diff options
Diffstat (limited to 'src/corelib/configure.cmake')
-rw-r--r-- | src/corelib/configure.cmake | 523 |
1 files changed, 232 insertions, 291 deletions
diff --git a/src/corelib/configure.cmake b/src/corelib/configure.cmake index 1c585f5b3c..80e6d93193 100644 --- a/src/corelib/configure.cmake +++ b/src/corelib/configure.cmake @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + #### Inputs @@ -14,9 +17,18 @@ set_property(CACHE INPUT_libb2 PROPERTY STRINGS undefined no qt system) #### Libraries -qt_find_package(WrapDoubleConversion PROVIDED_TARGETS WrapDoubleConversion::WrapDoubleConversion MODULE_NAME core QMAKE_LIB doubleconversion) +if((UNIX AND NOT QNX) OR QT_FIND_ALL_PACKAGES_ALWAYS) + # QNX's libbacktrace has an API wholly different from all the other Unix + # offerings + qt_find_package(WrapBacktrace PROVIDED_TARGETS WrapBacktrace::WrapBacktrace MODULE_NAME core QMAKE_LIB backtrace) +endif() +qt_find_package(WrapSystemDoubleConversion + PROVIDED_TARGETS WrapSystemDoubleConversion::WrapSystemDoubleConversion + MODULE_NAME core QMAKE_LIB doubleconversion) qt_find_package(GLIB2 PROVIDED_TARGETS GLIB2::GLIB2 MODULE_NAME core QMAKE_LIB glib) -qt_find_package(ICU COMPONENTS i18n uc data PROVIDED_TARGETS ICU::i18n ICU::uc ICU::data MODULE_NAME core QMAKE_LIB icu) +qt_find_package(ICU 50.1 COMPONENTS i18n uc data PROVIDED_TARGETS ICU::i18n ICU::uc ICU::data + MODULE_NAME core QMAKE_LIB icu) + if(QT_FEATURE_dlopen) qt_add_qmake_lib_dependency(icu libdl) endif() @@ -24,8 +36,6 @@ qt_find_package(Libsystemd PROVIDED_TARGETS PkgConfig::Libsystemd MODULE_NAME co qt_find_package(WrapAtomic PROVIDED_TARGETS WrapAtomic::WrapAtomic MODULE_NAME core QMAKE_LIB libatomic) qt_find_package(Libb2 PROVIDED_TARGETS Libb2::Libb2 MODULE_NAME core QMAKE_LIB libb2) qt_find_package(WrapRt PROVIDED_TARGETS WrapRt::WrapRt MODULE_NAME core QMAKE_LIB librt) -qt_find_package(LTTngUST PROVIDED_TARGETS LTTng::UST MODULE_NAME core QMAKE_LIB lttng-ust) -qt_add_qmake_lib_dependency(lttng-ust libdl) qt_find_package(WrapSystemPCRE2 10.20 PROVIDED_TARGETS WrapSystemPCRE2::WrapSystemPCRE2 MODULE_NAME core QMAKE_LIB pcre2) set_package_properties(WrapPCRE2 PROPERTIES TYPE REQUIRED) if((QNX) OR QT_FIND_ALL_PACKAGES_ALWAYS) @@ -40,8 +50,7 @@ qt_find_package(Slog2 PROVIDED_TARGETS Slog2::Slog2 MODULE_NAME core QMAKE_LIB s qt_config_compile_test(atomicfptr LABEL "working std::atomic for function pointers" CODE -" -#include <atomic> +"#include <atomic> typedef void (*fptr)(int); typedef std::atomic<fptr> atomicfptr; void testfunction(int) { } @@ -55,9 +64,9 @@ void test(volatile atomicfptr &a) } a.store(&testfunction, std::memory_order_release); } -int main(int argc, char **argv) + +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ atomicfptr fptr(testfunction); test(fptr); @@ -72,13 +81,11 @@ qt_config_compile_test(clock_monotonic LIBRARIES WrapRt::WrapRt CODE -" -#include <unistd.h> +"#include <unistd.h> #include <time.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ #if defined(_POSIX_MONOTONIC_CLOCK) && (_POSIX_MONOTONIC_CLOCK-0 >= 0) timespec ts; @@ -91,6 +98,18 @@ clock_gettime(CLOCK_MONOTONIC, &ts); } ") +# close_range +qt_config_compile_test(close_range + LABEL "close_range()" + CODE +"#include <unistd.h> + +int main() +{ + return close_range(3, 1024, 0) != 0; +} +") + # cloexec qt_config_compile_test(cloexec LABEL "O_CLOEXEC" @@ -101,9 +120,8 @@ qt_config_compile_test(cloexec #include <fcntl.h> #include <unistd.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ int pipes[2]; (void) pipe2(pipes, O_CLOEXEC | O_NONBLOCK); @@ -119,58 +137,14 @@ int pipes[2]; } ") -# special case begin -# cxx11_future -if (UNIX AND NOT ANDROID AND NOT QNX) - set(cxx11_future_TEST_LIBRARIES pthread) -endif() -qt_config_compile_test(cxx11_future - LABEL "C++11 <future>" - LIBRARIES - "${cxx11_future_TEST_LIBRARIES}" - CODE -" -#include <future> - -int main(int argc, char **argv) -{ - (void)argc; (void)argv; - /* BEGIN TEST: */ -std::future<int> f = std::async([]() { return 42; }); -(void)f.get(); - /* END TEST: */ - return 0; -} -") -# special case end - -# cxx11_random -qt_config_compile_test(cxx11_random - LABEL "C++11 <random>" - CODE -" -#include <random> - -int main(int argc, char **argv) -{ - (void)argc; (void)argv; - /* BEGIN TEST: */ -std::mt19937 mt(0); - /* END TEST: */ - return 0; -} -") - # cxx17_filesystem qt_config_compile_test(cxx17_filesystem LABEL "C++17 <filesystem>" CODE -" -#include <filesystem> +"#include <filesystem> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ std::filesystem::copy( std::filesystem::path(\"./file\"), @@ -178,74 +152,49 @@ std::filesystem::copy( /* END TEST: */ return 0; } -"# FIXME: qmake: CONFIG += c++17 +" ) -# eventfd -qt_config_compile_test(eventfd - LABEL "eventfd" +# dladdr +qt_config_compile_test(dladdr + LABEL "dladdr" + LIBRARIES + dl CODE -" -#include <sys/eventfd.h> - -int main(int argc, char **argv) +"#define _GNU_SOURCE 1 +#include <dlfcn.h> +int i = 0; +int main(void) { - (void)argc; (void)argv; - /* BEGIN TEST: */ -eventfd_t value; -int fd = eventfd(0, EFD_CLOEXEC); -eventfd_read(fd, &value); -eventfd_write(fd, value); - /* END TEST: */ + Dl_info info; + dladdr(&i, &info); return 0; -} -") +}" +) # futimens qt_config_compile_test(futimens LABEL "futimens()" CODE -" -#include <sys/stat.h> +"#include <sys/stat.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ futimens(-1, 0); /* END TEST: */ return 0; } -"# FIXME: 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 -qt_config_compile_test(futimes - LABEL "futimes()" - CODE -" -#include <sys/time.h> - -int main(int argc, char **argv) -{ - (void)argc; (void)argv; - /* BEGIN TEST: */ -futimes(-1, 0); - /* END TEST: */ - return 0; -} ") # getauxval qt_config_compile_test(getauxval LABEL "getauxval()" CODE -" -#include <sys/auxv.h> +"#include <sys/auxv.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ (void) getauxval(AT_NULL); /* END TEST: */ @@ -257,12 +206,13 @@ int main(int argc, char **argv) qt_config_compile_test(getentropy LABEL "getentropy()" CODE -" -#include <unistd.h> +"#include <unistd.h> +#if __has_include(<sys/random.h>) +# include <sys/random.h> +#endif -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ char buf[32]; (void) getentropy(buf, sizeof(buf)); @@ -271,89 +221,88 @@ char buf[32]; } ") -# glibc -qt_config_compile_test(glibc - LABEL "GNU libc" +# inotify +qt_config_compile_test(inotify + LABEL "inotify" CODE -" -#include <stdlib.h> +"#include <sys/inotify.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ -return __GLIBC__; +inotify_init(); +inotify_add_watch(0, \"foobar\", IN_ACCESS); +inotify_rm_watch(0, 1); /* END TEST: */ return 0; } ") -# inotify -qt_config_compile_test(inotify - LABEL "inotify" +qt_config_compile_test(sysv_shm + LABEL "System V/XSI shared memory" CODE -" -#include <sys/inotify.h> +"#include <sys/types.h> +#include <sys/ipc.h> +#include <sys/shm.h> +#include <fcntl.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; - /* BEGIN TEST: */ -inotify_init(); -inotify_add_watch(0, \"foobar\", IN_ACCESS); -inotify_rm_watch(0, 1); - /* END TEST: */ + key_t unix_key = ftok(\"test\", 'Q'); + shmget(unix_key, 0, 0666 | IPC_CREAT | IPC_EXCL); + shmctl(0, 0, (struct shmid_ds *)(0)); return 0; } ") -# ipc_sysv -qt_config_compile_test(ipc_sysv - LABEL "SysV IPC" +qt_config_compile_test(sysv_sem + LABEL "System V/XSI semaphores" CODE -" -#include <sys/types.h> +"#include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> -#include <sys/shm.h> #include <fcntl.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; - /* BEGIN TEST: */ -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)); - /* END TEST: */ + key_t unix_key = ftok(\"test\", 'Q'); + semctl(semget(unix_key, 1, 0666 | IPC_CREAT | IPC_EXCL), 0, IPC_RMID, 0); return 0; } ") -# ipc_posix if (LINUX) - set(ipc_posix_TEST_LIBRARIES pthread rt) + set(ipc_posix_TEST_LIBRARIES pthread WrapRt::WrapRt) endif() -qt_config_compile_test(ipc_posix - LABEL "POSIX IPC" +qt_config_compile_test(posix_shm + LABEL "POSIX shared memory" LIBRARIES "${ipc_posix_TEST_LIBRARIES}" CODE -" -#include <sys/types.h> +"#include <sys/types.h> #include <sys/mman.h> +#include <fcntl.h> + +int main(void) +{ + shm_open(\"test\", O_RDWR | O_CREAT | O_EXCL, 0666); + shm_unlink(\"test\"); + return 0; +} +") + +qt_config_compile_test(posix_sem + LABEL "POSIX semaphores" + LIBRARIES + "${ipc_posix_TEST_LIBRARIES}" + CODE +"#include <sys/types.h> #include <semaphore.h> #include <fcntl.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; - /* BEGIN TEST: */ -sem_close(sem_open(\"test\", O_CREAT | O_EXCL, 0666, 0)); -shm_open(\"test\", O_RDWR | O_CREAT | O_EXCL, 0666); -shm_unlink(\"test\"); - /* END TEST: */ + sem_close(sem_open(\"test\", O_CREAT | O_EXCL, 0666, 0)); return 0; } ") @@ -366,9 +315,8 @@ qt_config_compile_test(linkat #include <fcntl.h> #include <unistd.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ linkat(AT_FDCWD, \"foo\", AT_FDCWD, \"bar\", AT_SYMLINK_FOLLOW); /* END TEST: */ @@ -380,13 +328,11 @@ linkat(AT_FDCWD, \"foo\", AT_FDCWD, \"bar\", AT_SYMLINK_FOLLOW); qt_config_compile_test(ppoll LABEL "ppoll()" CODE -" -#include <signal.h> +"#include <signal.h> #include <poll.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ struct pollfd pfd; struct timespec ts; @@ -401,14 +347,12 @@ ppoll(&pfd, 1, &ts, &sig); qt_config_compile_test(pollts LABEL "pollts()" CODE -" -#include <poll.h> +"#include <poll.h> #include <signal.h> #include <time.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ struct pollfd pfd; struct timespec ts; @@ -423,12 +367,10 @@ pollts(&pfd, 1, &ts, &sig); qt_config_compile_test(poll LABEL "poll()" CODE -" -#include <poll.h> +"#include <poll.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ struct pollfd pfd; poll(&pfd, 1, 0); @@ -445,9 +387,8 @@ qt_config_compile_test(renameat2 #include <fcntl.h> #include <stdio.h> -int main(int argc, char **argv) +int main(int, char **argv) { - (void)argc; (void)argv; /* BEGIN TEST: */ renameat2(AT_FDCWD, argv[1], AT_FDCWD, argv[2], RENAME_NOREPLACE | RENAME_WHITEOUT); /* END TEST: */ @@ -455,83 +396,40 @@ renameat2(AT_FDCWD, argv[1], AT_FDCWD, argv[2], RENAME_NOREPLACE | RENAME_WHITEO } ") -# statx -qt_config_compile_test(statx - LABEL "statx() in libc" - CODE -"#define _ATFILE_SOURCE 1 -#include <sys/types.h> -#include <sys/stat.h> -#include <unistd.h> -#include <fcntl.h> - -int main(int argc, char **argv) -{ - (void)argc; (void)argv; - /* BEGIN TEST: */ -struct statx statxbuf; -unsigned int mask = STATX_BASIC_STATS; -return statx(AT_FDCWD, \"\", AT_STATX_SYNC_AS_STAT, mask, &statxbuf); - /* END TEST: */ - return 0; -} -") - -# syslog -qt_config_compile_test(syslog - LABEL "syslog" +# cpp_winrt +qt_config_compile_test(cpp_winrt + LABEL "cpp/winrt" + LIBRARIES + runtimeobject CODE -" -#include <syslog.h> +"// Including winrt/base.h causes an error in some configurations (Windows 10 SDK + c++20) +# include <winrt/base.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; - /* BEGIN TEST: */ -openlog(\"qt\", 0, LOG_USER); -syslog(LOG_INFO, \"configure\"); -closelog(); - /* END TEST: */ return 0; } ") -# xlocalescanprint -qt_config_compile_test(xlocalescanprint - LABEL "xlocale.h (or equivalents)" +# <stacktrace> +qt_config_compile_test(cxx23_stacktrace + LABEL "C++23 <stacktrace> support" CODE -" - -#define QT_BEGIN_NAMESPACE -#define QT_END_NAMESPACE - -#ifdef _MSVC_VER -#define Q_CC_MSVC _MSVC_VER +"#include <stacktrace> +#if !defined(__cpp_lib_stacktrace) +#error #endif -#define QT_NO_DOUBLECONVERSION - -#include QDSP_P_H -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ -#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); +const auto backtrace = std::stacktrace::current(); /* END TEST: */ - return 0; } -"# FIXME: qmake: DEFINES += QDSP_P_H=$$shell_quote(\"@PWD@/text/qdoublescanprint_p.h\") +" + CXX_STANDARD 23 ) - - #### Features qt_feature("clock-gettime" PRIVATE @@ -543,37 +441,37 @@ qt_feature("clock-monotonic" PUBLIC CONDITION QT_FEATURE_clock_gettime AND TEST_clock_monotonic ) qt_feature_definition("clock-monotonic" "QT_NO_CLOCK_MONOTONIC" NEGATE VALUE "1") -qt_feature("doubleconversion" PUBLIC PRIVATE +qt_feature("close_range" PRIVATE + LABEL "close_range()" + CONDITION QT_FEATURE_process AND TEST_close_range + AUTODETECT UNIX +) +qt_feature("doubleconversion" PRIVATE LABEL "DoubleConversion" ) qt_feature_definition("doubleconversion" "QT_NO_DOUBLECONVERSION" NEGATE VALUE "1") qt_feature("system-doubleconversion" PRIVATE LABEL " Using system DoubleConversion" - CONDITION QT_FEATURE_doubleconversion AND WrapDoubleConversion_FOUND + CONDITION QT_FEATURE_doubleconversion AND WrapSystemDoubleConversion_FOUND ENABLE INPUT_doubleconversion STREQUAL 'system' DISABLE INPUT_doubleconversion STREQUAL 'qt' ) qt_feature("cxx11_future" PUBLIC LABEL "C++11 <future>" - CONDITION TEST_cxx11_future + CONDITION NOT VXWORKS ) qt_feature("cxx17_filesystem" PUBLIC LABEL "C++17 <filesystem>" CONDITION TEST_cxx17_filesystem ) -qt_feature("eventfd" PUBLIC - LABEL "eventfd" - CONDITION NOT WASM AND TEST_eventfd +qt_feature("dladdr" PRIVATE + LABEL "dladdr" + CONDITION QT_FEATURE_dlopen AND TEST_dladdr ) -qt_feature_definition("eventfd" "QT_NO_EVENTFD" NEGATE VALUE "1") qt_feature("futimens" PRIVATE LABEL "futimens()" CONDITION NOT WIN32 AND TEST_futimens ) -qt_feature("futimes" PRIVATE - LABEL "futimes()" - CONDITION NOT WIN32 AND NOT QT_FEATURE_futimens AND TEST_futimes -) qt_feature("getauxval" PRIVATE LABEL "getauxval()" CONDITION LINUX AND TEST_getauxval @@ -588,11 +486,6 @@ qt_feature("glib" PUBLIC PRIVATE CONDITION GLIB2_FOUND ) qt_feature_definition("glib" "QT_NO_GLIB" NEGATE VALUE "1") -qt_feature("glibc" PRIVATE - LABEL "GNU libc" - AUTODETECT LINUX - CONDITION TEST_glibc -) qt_feature("icu" PRIVATE LABEL "ICU" AUTODETECT NOT WIN32 @@ -604,9 +497,11 @@ qt_feature("inotify" PUBLIC PRIVATE ) qt_feature_definition("inotify" "QT_NO_INOTIFY" NEGATE VALUE "1") qt_feature("ipc_posix" - LABEL "Using POSIX IPC" - AUTODETECT NOT WIN32 - CONDITION NOT TEST_ipc_sysv AND TEST_ipc_posix + LABEL "Defaulting legacy IPC to POSIX" + CONDITION TEST_posix_shm AND TEST_posix_sem AND ( + FEATURE_ipc_posix OR (APPLE AND QT_FEATURE_appstore_compliant) + OR NOT TEST_sysv_shm OR NOT TEST_sysv_sem + ) ) qt_feature_definition("ipc_posix" "QT_POSIX_IPC") qt_feature("journald" PRIVATE @@ -624,7 +519,7 @@ qt_feature("system-libb2" PRIVATE # Currently only used by QTemporaryFile; linkat() exists on Android, but hardlink creation fails due to security rules qt_feature("linkat" PRIVATE LABEL "linkat()" - AUTODETECT LINUX AND NOT ANDROID + AUTODETECT ( LINUX AND NOT ANDROID ) OR HURD CONDITION TEST_linkat ) qt_feature("std-atomic64" PUBLIC @@ -674,6 +569,14 @@ qt_feature("poll_select" PRIVATE EMIT_IF NOT WIN32 ) qt_feature_definition("poll_select" "QT_NO_NATIVE_POLL") +qt_feature("posix_sem" PRIVATE + LABEL "POSIX semaphores" + CONDITION TEST_posix_sem AND QT_FEATURE_systemsemaphore +) +qt_feature("posix_shm" PRIVATE + LABEL "POSIX shared memory" + CONDITION TEST_posix_shm AND UNIX +) qt_feature("qqnx_pps" PRIVATE LABEL "PPS" CONDITION PPS_FOUND @@ -681,20 +584,23 @@ qt_feature("qqnx_pps" PRIVATE ) qt_feature("renameat2" PRIVATE LABEL "renameat2()" - CONDITION LINUX AND TEST_renameat2 + CONDITION ( LINUX OR HURD ) AND TEST_renameat2 ) qt_feature("slog2" PRIVATE LABEL "slog2" CONDITION Slog2_FOUND ) -qt_feature("statx" PRIVATE - LABEL "statx() in libc" - CONDITION LINUX AND TEST_statx -) qt_feature("syslog" PRIVATE LABEL "syslog" AUTODETECT OFF - CONDITION TEST_syslog +) +qt_feature("sysv_sem" PRIVATE + LABEL "System V / XSI semaphores" + CONDITION TEST_sysv_sem AND QT_FEATURE_systemsemaphore +) +qt_feature("sysv_shm" PRIVATE + LABEL "System V / XSI shared memory" + CONDITION TEST_sysv_shm ) qt_feature("threadsafe-cloexec" LABEL "Threadsafe pipe creation" @@ -702,12 +608,6 @@ qt_feature("threadsafe-cloexec" ) qt_feature_definition("threadsafe-cloexec" "QT_THREADSAFE_CLOEXEC" VALUE "1") qt_feature_config("threadsafe-cloexec" QMAKE_PUBLIC_QT_CONFIG) -qt_feature("properties" PUBLIC - SECTION "Kernel" - LABEL "Properties" - PURPOSE "Supports scripting Qt-based applications." -) -qt_feature_definition("properties" "QT_NO_PROPERTIES" NEGATE VALUE "1") qt_feature("regularexpression" PUBLIC SECTION "Kernel" LABEL "QRegularExpression" @@ -715,11 +615,19 @@ qt_feature("regularexpression" PUBLIC CONDITION QT_FEATURE_system_pcre2 OR QT_FEATURE_pcre2 ) qt_feature_definition("regularexpression" "QT_NO_REGULAREXPRESSION" NEGATE VALUE "1") +qt_feature("backtrace" PRIVATE + LABEL "backtrace" + CONDITION UNIX AND QT_FEATURE_regularexpression AND WrapBacktrace_FOUND +) +qt_feature("cxx23_stacktrace" PRIVATE + LABEL "C++23 <stacktrace>" + CONDITION TEST_cxx23_stacktrace AND QT_FEATURE_cxx2b +) qt_feature("sharedmemory" PUBLIC SECTION "Kernel" LABEL "QSharedMemory" PURPOSE "Provides access to a shared memory segment." - CONDITION ( ANDROID OR WIN32 OR ( NOT VXWORKS AND ( TEST_ipc_sysv OR TEST_ipc_posix ) ) ) + CONDITION WIN32 OR TEST_sysv_shm OR TEST_posix_shm ) qt_feature_definition("sharedmemory" "QT_NO_SHAREDMEMORY" NEGATE VALUE "1") qt_feature("shortcut" PUBLIC @@ -732,7 +640,7 @@ qt_feature("systemsemaphore" PUBLIC SECTION "Kernel" LABEL "QSystemSemaphore" PURPOSE "Provides a general counting system semaphore." - CONDITION ( NOT INTEGRITY AND NOT VXWORKS AND NOT rtems ) AND ( ANDROID OR WIN32 OR TEST_ipc_sysv OR TEST_ipc_posix ) + CONDITION WIN32 OR TEST_sysv_sem OR TEST_posix_sem ) qt_feature_definition("systemsemaphore" "QT_NO_SYSTEMSEMAPHORE" NEGATE VALUE "1") qt_feature("xmlstream" PUBLIC @@ -740,21 +648,24 @@ qt_feature("xmlstream" PUBLIC LABEL "XML Streaming APIs" PURPOSE "Provides a simple streaming API for XML." ) -qt_feature_definition("xmlstream" "QT_NO_XMLSTREAM" NEGATE VALUE "1") +qt_feature("cpp-winrt" PRIVATE PUBLIC + LABEL "cpp/winrt base" + PURPOSE "basic cpp/winrt language projection support" + AUTODETECT WIN32 + CONDITION WIN32 AND TEST_cpp_winrt +) qt_feature("xmlstreamreader" PUBLIC SECTION "Kernel" LABEL "QXmlStreamReader" PURPOSE "Provides a well-formed XML parser with a simple streaming API." CONDITION QT_FEATURE_xmlstream ) -qt_feature_definition("xmlstreamreader" "QT_NO_XMLSTREAMREADER" NEGATE VALUE "1") qt_feature("xmlstreamwriter" PUBLIC SECTION "Kernel" LABEL "QXmlStreamWriter" PURPOSE "Provides a XML writer with a simple streaming API." CONDITION QT_FEATURE_xmlstream ) -qt_feature_definition("xmlstreamwriter" "QT_NO_XMLSTREAMWRITER" NEGATE VALUE "1") qt_feature("textdate" PUBLIC SECTION "Data structures" LABEL "Text Date" @@ -772,7 +683,13 @@ qt_feature("process" PUBLIC SECTION "File I/O" LABEL "QProcess" PURPOSE "Supports external process invocation." - CONDITION QT_FEATURE_processenvironment AND ( QT_FEATURE_thread OR NOT UNIX ) AND NOT UIKIT AND NOT INTEGRITY AND NOT VXWORKS AND NOT rtems + CONDITION QT_FEATURE_processenvironment + AND (QT_FEATURE_thread OR NOT UNIX) + AND NOT UIKIT + AND NOT INTEGRITY + AND NOT VXWORKS + AND NOT rtems + AND NOT WASM ) qt_feature_definition("process" "QT_NO_PROCESS" NEGATE VALUE "1") qt_feature("processenvironment" PUBLIC @@ -791,7 +708,7 @@ qt_feature("library" PUBLIC SECTION "File I/O" LABEL "QLibrary" PURPOSE "Provides a wrapper for dynamically loaded libraries." - CONDITION WIN32 OR HPUX OR ( NOT NACL AND QT_FEATURE_dlopen ) + CONDITION WIN32 OR HPUX OR QT_FEATURE_dlopen ) qt_feature_definition("library" "QT_NO_LIBRARY" NEGATE VALUE "1") qt_feature("settings" PUBLIC @@ -829,7 +746,7 @@ qt_feature("sortfilterproxymodel" PUBLIC SECTION "ItemViews" LABEL "QSortFilterProxyModel" PURPOSE "Supports sorting and filtering of data passed between another model and a view." - CONDITION QT_FEATURE_proxymodel + CONDITION QT_FEATURE_proxymodel AND QT_FEATURE_regularexpression ) qt_feature_definition("sortfilterproxymodel" "QT_NO_SORTFILTERPROXYMODEL" NEGATE VALUE "1") qt_feature("identityproxymodel" PUBLIC @@ -875,7 +792,7 @@ qt_feature("animation" PUBLIC SECTION "Utilities" LABEL "Animation" PURPOSE "Provides a framework for animations." - CONDITION QT_FEATURE_properties AND QT_FEATURE_easingcurve + CONDITION QT_FEATURE_easingcurve ) qt_feature_definition("animation" "QT_NO_ANIMATION" NEGATE VALUE "1") qt_feature("gestures" PUBLIC @@ -909,6 +826,13 @@ qt_feature("timezone" PUBLIC SECTION "Utilities" LABEL "QTimeZone" PURPOSE "Provides support for time-zone handling." + CONDITION NOT WASM AND NOT VXWORKS +) +qt_feature("timezone_locale" PRIVATE + SECTION "Utilities" + LABEL "QTimeZone" + PURPOSE "Provides support for localized time-zone display names." + DISABLE ON # Implementation is currently incomplete, so leave turned off ) qt_feature("datetimeparser" PRIVATE SECTION "Utilities" @@ -935,14 +859,16 @@ qt_feature("etw" PRIVATE ENABLE INPUT_trace STREQUAL 'etw' OR ( INPUT_trace STREQUAL 'yes' AND WIN32 ) DISABLE INPUT_trace STREQUAL 'lttng' OR INPUT_trace STREQUAL 'no' ) +qt_feature("ctf" PRIVATE + LABEL "CTF" + AUTODETECT OFF + ENABLE INPUT_trace STREQUAL 'ctf' + DISABLE INPUT_trace STREQUAL 'etw' OR INPUT_trace STREQUAL 'no' OR INPUT_trace STREQUAL 'lttng' +) qt_feature("forkfd_pidfd" PRIVATE LABEL "CLONE_PIDFD support in forkfd" CONDITION LINUX ) -qt_feature("win32_system_libs" - LABEL "Windows System Libraries" - CONDITION WIN32 AND libs.advapi32 AND libs.gdi32 AND libs.kernel32 AND libs.netapi32 AND libs.ole32 AND libs.shell32 AND libs.uuid AND libs.user32 AND libs.winmm AND libs.ws2_32 OR FIXME -) qt_feature("cborstreamreader" PUBLIC SECTION "Utilities" LABEL "CBOR stream reading" @@ -953,18 +879,42 @@ qt_feature("cborstreamwriter" PUBLIC LABEL "CBOR stream writing" PURPOSE "Provides support for writing the CBOR binary format." ) +qt_feature("poll-exit-on-error" PRIVATE + LABEL "Poll exit on error" + AUTODETECT OFF + CONDITION UNIX + PURPOSE "Exit on error instead of just printing the error code and continue." +) +qt_feature("permissions" PUBLIC + SECTION "Utilities" + LABEL "Application permissions" + PURPOSE "Provides support for requesting user permission to access restricted data or APIs" +) +qt_feature("openssl-hash" PRIVATE + LABEL "OpenSSL based cryptographic hash" + AUTODETECT OFF + CONDITION QT_FEATURE_openssl_linked AND QT_FEATURE_opensslv30 + PURPOSE "Uses OpenSSL based implementation of cryptographic hash algorithms." +) + qt_configure_add_summary_section(NAME "Qt Core") +qt_configure_add_summary_entry(ARGS "backtrace") +qt_configure_add_summary_entry(ARGS "cxx23_stacktrace") qt_configure_add_summary_entry(ARGS "doubleconversion") qt_configure_add_summary_entry(ARGS "system-doubleconversion") +qt_configure_add_summary_entry(ARGS "forkfd_pidfd" CONDITION LINUX) qt_configure_add_summary_entry(ARGS "glib") qt_configure_add_summary_entry(ARGS "icu") qt_configure_add_summary_entry(ARGS "system-libb2") qt_configure_add_summary_entry(ARGS "mimetype-database") +qt_configure_add_summary_entry(ARGS "permissions") +qt_configure_add_summary_entry(ARGS "ipc_posix" CONDITION UNIX) qt_configure_add_summary_entry( TYPE "firstAvailableFeature" - ARGS "etw lttng" + ARGS "etw lttng ctf" MESSAGE "Tracing backend" ) +qt_configure_add_summary_entry(ARGS "openssl-hash") qt_configure_add_summary_section(NAME "Logging backends") qt_configure_add_summary_entry(ARGS "journald") qt_configure_add_summary_entry(ARGS "syslog") @@ -976,10 +926,6 @@ qt_configure_add_summary_entry( ) qt_configure_add_summary_entry(ARGS "pcre2") qt_configure_add_summary_entry(ARGS "system-pcre2") -qt_configure_add_summary_entry( - ARGS "forkfd_pidfd" - CONDITION LINUX -) qt_configure_end_summary_section() # end of "Qt Core" section qt_configure_add_report_entry( TYPE NOTE @@ -988,16 +934,6 @@ qt_configure_add_report_entry( ) qt_configure_add_report_entry( TYPE ERROR - MESSAGE "C++11 <random> is required and is missing or failed to compile." - CONDITION NOT TEST_cxx11_random -) -qt_configure_add_report_entry( - TYPE ERROR - MESSAGE "Your C library does not provide sscanf_l or snprintf_l. You need to use libdouble-conversion for double/string conversion." - CONDITION INPUT_doubleconversion STREQUAL 'no' AND NOT TEST_xlocalescanprint -) -qt_configure_add_report_entry( - TYPE ERROR 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" CONDITION NOT TEST_atomicfptr ) @@ -1006,3 +942,8 @@ qt_configure_add_report_entry( MESSAGE "Qt requires poll(), ppoll(), poll_ts() or select() on this platform" CONDITION ( UNIX OR INTEGRITY ) AND ( NOT QT_FEATURE_poll_ppoll ) AND ( NOT QT_FEATURE_poll_pollts ) AND ( NOT QT_FEATURE_poll_poll ) AND ( NOT QT_FEATURE_poll_select ) ) +qt_configure_add_report_entry( + TYPE WARNING + MESSAGE "Basic cpp/winrt support missing. Some features might not be available." + CONDITION WIN32 AND NOT QT_FEATURE_cpp_winrt +) |