qt6-bb10/src/corelib/configure.cmake

972 lines
26 KiB
CMake

#### Inputs
# input doubleconversion
set(INPUT_doubleconversion "undefined" CACHE STRING "")
set_property(CACHE INPUT_doubleconversion PROPERTY STRINGS undefined no qt system)
# input libb2
set(INPUT_libb2 "undefined" CACHE STRING "")
set_property(CACHE INPUT_libb2 PROPERTY STRINGS undefined no qt system)
#### Libraries
if((UNIX) OR QT_FIND_ALL_PACKAGES_ALWAYS)
qt_find_package(WrapBacktrace PROVIDED_TARGETS WrapBacktrace::WrapBacktrace MODULE_NAME core QMAKE_LIB backtrace)
endif()
qt_find_package(WrapDoubleConversion PROVIDED_TARGETS WrapDoubleConversion::WrapDoubleConversion 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)
if(QT_FEATURE_dlopen)
qt_add_qmake_lib_dependency(icu libdl)
endif()
qt_find_package(Libsystemd PROVIDED_TARGETS PkgConfig::Libsystemd MODULE_NAME core QMAKE_LIB journald)
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)
qt_find_package(PPS PROVIDED_TARGETS PPS::PPS MODULE_NAME core QMAKE_LIB pps)
endif()
qt_find_package(Slog2 PROVIDED_TARGETS Slog2::Slog2 MODULE_NAME core QMAKE_LIB slog2)
#### Tests
# atomicfptr
qt_config_compile_test(atomicfptr
LABEL "working std::atomic for function pointers"
CODE
"#include <atomic>
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);
}
int main(void)
{
/* BEGIN TEST: */
atomicfptr fptr(testfunction);
test(fptr);
/* END TEST: */
return 0;
}
")
# clock-monotonic
qt_config_compile_test(clock_monotonic
LABEL "POSIX monotonic clock"
LIBRARIES
WrapRt::WrapRt
CODE
"#include <unistd.h>
#include <time.h>
int main(void)
{
/* BEGIN TEST: */
#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
/* END TEST: */
return 0;
}
")
# cloexec
qt_config_compile_test(cloexec
LABEL "O_CLOEXEC"
CODE
"#define _GNU_SOURCE 1
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <unistd.h>
int main(void)
{
/* BEGIN TEST: */
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
/* END TEST: */
return 0;
}
")
# 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(void)
{
/* 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(void)
{
/* 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>
int main(void)
{
/* BEGIN TEST: */
std::filesystem::copy(
std::filesystem::path(\"./file\"),
std::filesystem::path(\"./other\"));
/* END TEST: */
return 0;
}
"# FIXME: qmake: CONFIG += c++17
)
# eventfd
qt_config_compile_test(eventfd
LABEL "eventfd"
CODE
"#include <sys/eventfd.h>
int main(void)
{
/* BEGIN TEST: */
eventfd_t value;
int fd = eventfd(0, EFD_CLOEXEC);
eventfd_read(fd, &value);
eventfd_write(fd, value);
/* END TEST: */
return 0;
}
")
# futimens
qt_config_compile_test(futimens
LABEL "futimens()"
CODE
"#include <sys/stat.h>
int main(void)
{
/* 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(void)
{
/* BEGIN TEST: */
futimes(-1, 0);
/* END TEST: */
return 0;
}
")
# getauxval
qt_config_compile_test(getauxval
LABEL "getauxval()"
CODE
"#include <sys/auxv.h>
int main(void)
{
/* BEGIN TEST: */
(void) getauxval(AT_NULL);
/* END TEST: */
return 0;
}
")
# getentropy
qt_config_compile_test(getentropy
LABEL "getentropy()"
CODE
"#include <unistd.h>
int main(void)
{
/* BEGIN TEST: */
char buf[32];
(void) getentropy(buf, sizeof(buf));
/* END TEST: */
return 0;
}
")
# glibc
qt_config_compile_test(glibc
LABEL "GNU libc"
CODE
"#include <stdlib.h>
int main(void)
{
/* BEGIN TEST: */
return __GLIBC__;
/* END TEST: */
return 0;
}
")
# inotify
qt_config_compile_test(inotify
LABEL "inotify"
CODE
"#include <sys/inotify.h>
int main(void)
{
/* BEGIN TEST: */
inotify_init();
inotify_add_watch(0, \"foobar\", IN_ACCESS);
inotify_rm_watch(0, 1);
/* END TEST: */
return 0;
}
")
# ipc_sysv
qt_config_compile_test(ipc_sysv
LABEL "SysV IPC"
CODE
"#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h>
#include <fcntl.h>
int main(void)
{
/* 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: */
return 0;
}
")
# ipc_posix
if (LINUX)
set(ipc_posix_TEST_LIBRARIES pthread rt)
endif()
qt_config_compile_test(ipc_posix
LABEL "POSIX IPC"
LIBRARIES
"${ipc_posix_TEST_LIBRARIES}"
CODE
"#include <sys/types.h>
#include <sys/mman.h>
#include <semaphore.h>
#include <fcntl.h>
int main(void)
{
/* 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: */
return 0;
}
")
# linkat
qt_config_compile_test(linkat
LABEL "linkat()"
CODE
"#define _ATFILE_SOURCE 1
#include <fcntl.h>
#include <unistd.h>
int main(void)
{
/* BEGIN TEST: */
linkat(AT_FDCWD, \"foo\", AT_FDCWD, \"bar\", AT_SYMLINK_FOLLOW);
/* END TEST: */
return 0;
}
")
# ppoll
qt_config_compile_test(ppoll
LABEL "ppoll()"
CODE
"#include <signal.h>
#include <poll.h>
int main(void)
{
/* BEGIN TEST: */
struct pollfd pfd;
struct timespec ts;
sigset_t sig;
ppoll(&pfd, 1, &ts, &sig);
/* END TEST: */
return 0;
}
")
# pollts
qt_config_compile_test(pollts
LABEL "pollts()"
CODE
"#include <poll.h>
#include <signal.h>
#include <time.h>
int main(void)
{
/* BEGIN TEST: */
struct pollfd pfd;
struct timespec ts;
sigset_t sig;
pollts(&pfd, 1, &ts, &sig);
/* END TEST: */
return 0;
}
")
# poll
qt_config_compile_test(poll
LABEL "poll()"
CODE
"#include <poll.h>
int main(void)
{
/* BEGIN TEST: */
struct pollfd pfd;
poll(&pfd, 1, 0);
/* END TEST: */
return 0;
}
")
# renameat2
qt_config_compile_test(renameat2
LABEL "renameat2()"
CODE
"#define _ATFILE_SOURCE 1
#include <fcntl.h>
#include <stdio.h>
int main(void)
{
/* BEGIN TEST: */
renameat2(AT_FDCWD, argv[1], AT_FDCWD, argv[2], RENAME_NOREPLACE | RENAME_WHITEOUT);
/* END TEST: */
return 0;
}
")
# 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(void)
{
/* 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"
CODE
"#include <syslog.h>
int main(void)
{
/* 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)"
CODE
"#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
int main(void)
{
/* 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);
/* END TEST: */
return 0;
}
"# FIXME: qmake: DEFINES += QDSP_P_H=$$shell_quote(\"@PWD@/text/qdoublescanprint_p.h\")
)
#### Features
qt_feature("clock-gettime" PRIVATE
LABEL "clock_gettime()"
CONDITION UNIX AND WrapRt_FOUND
)
qt_feature("clock-monotonic" PUBLIC
LABEL "POSIX monotonic clock"
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
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
ENABLE INPUT_doubleconversion STREQUAL 'system'
DISABLE INPUT_doubleconversion STREQUAL 'qt'
)
qt_feature("cxx11_future" PUBLIC
LABEL "C++11 <future>"
CONDITION TEST_cxx11_future
)
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_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
)
qt_feature("getentropy" PRIVATE
LABEL "getentropy()"
CONDITION UNIX AND TEST_getentropy
)
qt_feature("glib" PUBLIC PRIVATE
LABEL "GLib"
AUTODETECT NOT WIN32
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
CONDITION ICU_FOUND
)
qt_feature("inotify" PUBLIC PRIVATE
LABEL "inotify"
CONDITION TEST_inotify
)
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
)
qt_feature_definition("ipc_posix" "QT_POSIX_IPC")
qt_feature("journald" PRIVATE
LABEL "journald"
AUTODETECT OFF
CONDITION Libsystemd_FOUND
)
# Used by QCryptographicHash for the BLAKE2 hashing algorithms
qt_feature("system-libb2" PRIVATE
LABEL "Using system libb2"
CONDITION Libb2_FOUND
ENABLE INPUT_libb2 STREQUAL 'system'
DISABLE INPUT_libb2 STREQUAL 'no' OR INPUT_libb2 STREQUAL 'qt'
)
# 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
CONDITION TEST_linkat
)
qt_feature("std-atomic64" PUBLIC
LABEL "64 bit atomic operations"
CONDITION WrapAtomic_FOUND
)
qt_feature("mimetype" PUBLIC
SECTION "Utilities"
LABEL "Mimetype handling"
PURPOSE "Provides MIME type handling."
)
qt_feature_definition("mimetype" "QT_NO_MIMETYPE" NEGATE VALUE "1")
qt_feature("mimetype-database" PRIVATE
LABEL "Built-in copy of the MIME database"
CONDITION QT_FEATURE_mimetype
)
qt_feature("pcre2"
LABEL "PCRE2"
ENABLE INPUT_pcre STREQUAL 'qt' OR QT_FEATURE_system_pcre2
DISABLE INPUT_pcre STREQUAL 'no'
)
qt_feature_config("pcre2" QMAKE_PRIVATE_CONFIG)
qt_feature("system-pcre2" PRIVATE
LABEL " Using system PCRE2"
CONDITION WrapSystemPCRE2_FOUND
ENABLE INPUT_pcre STREQUAL 'system'
DISABLE INPUT_pcre STREQUAL 'no' OR INPUT_pcre STREQUAL 'qt'
)
qt_feature("poll_ppoll" PRIVATE
LABEL "Native ppoll()"
CONDITION NOT WASM AND TEST_ppoll
EMIT_IF NOT WIN32
)
qt_feature("poll_pollts" PRIVATE
LABEL "Native pollts()"
CONDITION NOT QT_FEATURE_poll_ppoll AND TEST_pollts
EMIT_IF NOT WIN32
)
qt_feature("poll_poll" PRIVATE
LABEL "Native poll()"
CONDITION NOT QT_FEATURE_poll_ppoll AND NOT QT_FEATURE_poll_pollts AND TEST_poll
EMIT_IF NOT WIN32
)
qt_feature("poll_select" PRIVATE
LABEL "Emulated poll()"
CONDITION NOT QT_FEATURE_poll_ppoll AND NOT QT_FEATURE_poll_pollts AND NOT QT_FEATURE_poll_poll
EMIT_IF NOT WIN32
)
qt_feature_definition("poll_select" "QT_NO_NATIVE_POLL")
qt_feature("qqnx_pps" PRIVATE
LABEL "PPS"
CONDITION PPS_FOUND
EMIT_IF QNX
)
qt_feature("renameat2" PRIVATE
LABEL "renameat2()"
CONDITION LINUX 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("threadsafe-cloexec"
LABEL "Threadsafe pipe creation"
CONDITION TEST_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"
PURPOSE "Provides an API to Perl-compatible regular expressions."
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("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 ) ) )
)
qt_feature_definition("sharedmemory" "QT_NO_SHAREDMEMORY" NEGATE VALUE "1")
qt_feature("shortcut" PUBLIC
SECTION "Kernel"
LABEL "QShortcut"
PURPOSE "Provides keyboard accelerators and shortcuts."
)
qt_feature_definition("shortcut" "QT_NO_SHORTCUT" NEGATE VALUE "1")
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 )
)
qt_feature_definition("systemsemaphore" "QT_NO_SYSTEMSEMAPHORE" NEGATE VALUE "1")
qt_feature("xmlstream" PUBLIC
SECTION "Kernel"
LABEL "XML Streaming APIs"
PURPOSE "Provides a simple streaming API for XML."
)
qt_feature_definition("xmlstream" "QT_NO_XMLSTREAM" NEGATE VALUE "1")
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"
PURPOSE "Supports month and day names in dates."
)
qt_feature_definition("textdate" "QT_NO_TEXTDATE" NEGATE VALUE "1")
qt_feature("datestring" PUBLIC
SECTION "Data structures"
LABEL "QDate/QTime/QDateTime"
PURPOSE "Provides conversion between dates and strings."
CONDITION QT_FEATURE_textdate
)
qt_feature_definition("datestring" "QT_NO_DATESTRING" NEGATE VALUE "1")
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
)
qt_feature_definition("process" "QT_NO_PROCESS" NEGATE VALUE "1")
qt_feature("processenvironment" PUBLIC
SECTION "File I/O"
LABEL "QProcessEnvironment"
PURPOSE "Provides a higher-level abstraction of environment variables."
CONDITION NOT INTEGRITY AND NOT rtems
)
qt_feature("temporaryfile" PUBLIC
SECTION "File I/O"
LABEL "QTemporaryFile"
PURPOSE "Provides an I/O device that operates on temporary files."
)
qt_feature_definition("temporaryfile" "QT_NO_TEMPORARYFILE" NEGATE VALUE "1")
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 )
)
qt_feature_definition("library" "QT_NO_LIBRARY" NEGATE VALUE "1")
qt_feature("settings" PUBLIC
SECTION "File I/O"
LABEL "QSettings"
PURPOSE "Provides persistent application settings."
)
qt_feature_definition("settings" "QT_NO_SETTINGS" NEGATE VALUE "1")
qt_feature("filesystemwatcher" PUBLIC
SECTION "File I/O"
LABEL "QFileSystemWatcher"
PURPOSE "Provides an interface for monitoring files and directories for modifications."
)
qt_feature_definition("filesystemwatcher" "QT_NO_FILESYSTEMWATCHER" NEGATE VALUE "1")
qt_feature("filesystemiterator" PUBLIC
SECTION "File I/O"
LABEL "QFileSystemIterator"
PURPOSE "Provides fast file system iteration."
)
qt_feature_definition("filesystemiterator" "QT_NO_FILESYSTEMITERATOR" NEGATE VALUE "1")
qt_feature("itemmodel" PUBLIC
SECTION "ItemViews"
LABEL "Qt Item Model"
PURPOSE "Provides the item model for item views"
)
qt_feature_definition("itemmodel" "QT_NO_ITEMMODEL" NEGATE VALUE "1")
qt_feature("proxymodel" PUBLIC
SECTION "ItemViews"
LABEL "QAbstractProxyModel"
PURPOSE "Supports processing of data passed between another model and a view."
CONDITION QT_FEATURE_itemmodel
)
qt_feature_definition("proxymodel" "QT_NO_PROXYMODEL" NEGATE VALUE "1")
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 AND QT_FEATURE_regularexpression
)
qt_feature_definition("sortfilterproxymodel" "QT_NO_SORTFILTERPROXYMODEL" NEGATE VALUE "1")
qt_feature("identityproxymodel" PUBLIC
SECTION "ItemViews"
LABEL "QIdentityProxyModel"
PURPOSE "Supports proxying a source model unmodified."
CONDITION QT_FEATURE_proxymodel
)
qt_feature_definition("identityproxymodel" "QT_NO_IDENTITYPROXYMODEL" NEGATE VALUE "1")
qt_feature("transposeproxymodel" PUBLIC
SECTION "ItemViews"
LABEL "QTransposeProxyModel"
PURPOSE "Provides a proxy to swap rows and columns of a model."
CONDITION QT_FEATURE_proxymodel
)
qt_feature_definition("transposeproxymodel" "QT_NO_TRANSPOSEPROXYMODEL" NEGATE VALUE "1")
qt_feature("concatenatetablesproxymodel" PUBLIC
SECTION "ItemViews"
LABEL "QConcatenateTablesProxyModel"
PURPOSE "Supports concatenating source models."
CONDITION QT_FEATURE_proxymodel
)
qt_feature_definition("concatenatetablesproxymodel" "QT_NO_CONCATENATETABLESPROXYMODEL" NEGATE VALUE "1")
qt_feature("stringlistmodel" PUBLIC
SECTION "ItemViews"
LABEL "QStringListModel"
PURPOSE "Provides a model that supplies strings to views."
CONDITION QT_FEATURE_itemmodel
)
qt_feature_definition("stringlistmodel" "QT_NO_STRINGLISTMODEL" NEGATE VALUE "1")
qt_feature("translation" PUBLIC
SECTION "Internationalization"
LABEL "Translation"
PURPOSE "Supports translations using QObject::tr()."
)
qt_feature_definition("translation" "QT_NO_TRANSLATION" NEGATE VALUE "1")
qt_feature("easingcurve" PUBLIC
SECTION "Utilities"
LABEL "Easing curve"
PURPOSE "Provides easing curve."
)
qt_feature("animation" PUBLIC
SECTION "Utilities"
LABEL "Animation"
PURPOSE "Provides a framework for animations."
CONDITION QT_FEATURE_properties AND QT_FEATURE_easingcurve
)
qt_feature_definition("animation" "QT_NO_ANIMATION" NEGATE VALUE "1")
qt_feature("gestures" PUBLIC
SECTION "Utilities"
LABEL "Gesture"
PURPOSE "Provides a framework for gestures."
)
qt_feature_definition("gestures" "QT_NO_GESTURES" NEGATE VALUE "1")
qt_feature("sha3-fast" PRIVATE
SECTION "Utilities"
LABEL "Speed optimized SHA3"
PURPOSE "Optimizes SHA3 for speed instead of size."
)
qt_feature("jalalicalendar" PUBLIC
SECTION "Utilities"
LABEL "QJalaliCalendar"
PURPOSE "Support the Jalali (Persian) calendar"
)
qt_feature("hijricalendar" PRIVATE
SECTION "Utilities"
LABEL "QHijriCalendar"
PURPOSE "Generic basis for Islamic calendars, providing shared locale data"
)
qt_feature("islamiccivilcalendar" PUBLIC
SECTION "Utilities"
LABEL "QIslamicCivilCalendar"
PURPOSE "Support the Islamic Civil calendar"
CONDITION QT_FEATURE_hijricalendar
)
qt_feature("timezone" PUBLIC
SECTION "Utilities"
LABEL "QTimeZone"
PURPOSE "Provides support for time-zone handling."
)
qt_feature("datetimeparser" PRIVATE
SECTION "Utilities"
LABEL "QDateTimeParser"
PURPOSE "Provides support for parsing date-time texts."
CONDITION QT_FEATURE_datestring
)
qt_feature("commandlineparser" PUBLIC
SECTION "Utilities"
LABEL "QCommandlineParser"
PURPOSE "Provides support for command line parsing."
)
qt_feature("lttng" PRIVATE
LABEL "LTTNG"
AUTODETECT OFF
CONDITION LINUX AND LTTNGUST_FOUND
ENABLE INPUT_trace STREQUAL 'lttng' OR ( INPUT_trace STREQUAL 'yes' AND LINUX )
DISABLE INPUT_trace STREQUAL 'etw' OR INPUT_trace STREQUAL 'no'
)
qt_feature("etw" PRIVATE
LABEL "ETW"
AUTODETECT OFF
CONDITION WIN32
ENABLE INPUT_trace STREQUAL 'etw' OR ( INPUT_trace STREQUAL 'yes' AND WIN32 )
DISABLE INPUT_trace STREQUAL 'lttng' OR INPUT_trace STREQUAL 'no'
)
qt_feature("forkfd_pidfd" PRIVATE
LABEL "CLONE_PIDFD support in forkfd"
CONDITION LINUX
)
qt_feature("cborstreamreader" PUBLIC
SECTION "Utilities"
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."
)
qt_feature("cborstreamwriter" PUBLIC
SECTION "Utilities"
LABEL "CBOR stream writing"
PURPOSE "Provides support for writing the CBOR binary format."
)
qt_configure_add_summary_section(NAME "Qt Core")
qt_configure_add_summary_entry(ARGS "backtrace")
qt_configure_add_summary_entry(ARGS "doubleconversion")
qt_configure_add_summary_entry(ARGS "system-doubleconversion")
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(
TYPE "firstAvailableFeature"
ARGS "etw lttng"
MESSAGE "Tracing backend"
)
qt_configure_add_summary_section(NAME "Logging backends")
qt_configure_add_summary_entry(ARGS "journald")
qt_configure_add_summary_entry(ARGS "syslog")
qt_configure_add_summary_entry(ARGS "slog2")
qt_configure_end_summary_section() # end of "Logging backends" section
qt_configure_add_summary_entry(
ARGS "qqnx_pps"
CONDITION QNX
)
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
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."
CONDITION QT_FEATURE_journald OR QT_FEATURE_syslog OR ( QNX AND QT_FEATURE_slog2 )
)
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
)
qt_configure_add_report_entry(
TYPE ERROR
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 )
)