summaryrefslogtreecommitdiffstats
path: root/src/corelib/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/CMakeLists.txt')
-rw-r--r--src/corelib/CMakeLists.txt1288
1 files changed, 753 insertions, 535 deletions
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt
index 7a9256daf8..e1fb0d7e39 100644
--- a/src/corelib/CMakeLists.txt
+++ b/src/corelib/CMakeLists.txt
@@ -1,67 +1,109 @@
-# Generated from corelib.pro.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
-# special case begin
-qt_find_package(Threads PROVIDED_TARGETS Threads::Threads)
qt_find_package(WrapPCRE2 PROVIDED_TARGETS WrapPCRE2::WrapPCRE2)
-
-
-# compute the reverse relative path from QtCoreConfigExtras to the install prefix
-# this is used in QtCoreConfigExtras to make its install paths relocatable
-if(QT_WILL_INSTALL)
- get_filename_component(_clean_prefix
- "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}/${QT_CONFIG_INSTALL_DIR}" ABSOLUTE)
-else()
- get_filename_component(_clean_prefix "${QT_CONFIG_BUILD_DIR}" ABSOLUTE)
-endif()
-file(RELATIVE_PATH QT_INVERSE_CONFIG_INSTALL_DIR
- "${_clean_prefix}" "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}")
+qt_find_package(WrapZLIB PROVIDED_TARGETS WrapZLIB::WrapZLIB)
if(ANDROID)
set(corelib_extra_cmake_files
"${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}AndroidMacros.cmake")
endif()
-# special case end
+if(WASM)
+ set(corelib_extra_cmake_files
+ "${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}WasmMacros.cmake")
+endif()
#####################################################################
## Core Module:
#####################################################################
-qt_add_module(Core
- GENERATE_METATYPES
+qt_internal_add_module(Core
QMAKE_MODULE_CONFIG moc resources
+ NO_GENERATE_METATYPES # metatypes are extracted manually below
EXCEPTIONS
SOURCES
+ # Keep these .cpp files in the first and in the order they are so their
+ # static initialization order is retained
+ global/qsimd.cpp global/qsimd.h global/qsimd_p.h
+ tools/qhash.cpp tools/qhash.h
+
+ # Keep the rest alphabetical
+ compat/removed_api.cpp
global/archdetect.cpp
+ global/qassert.cpp global/qassert.h
+ global/qcompare_impl.h
+ global/qcompare.cpp global/qcompare.h
+ global/qcomparehelpers.h
global/qcompilerdetection.h
+ global/qconstructormacros.h
global/qcontainerinfo.h
+ global/qdarwinhelpers.h
global/qendian.cpp global/qendian.h global/qendian_p.h
+ global/qexceptionhandling.cpp global/qexceptionhandling.h
global/qflags.h
global/qfloat16.cpp global/qfloat16.h
- global/qglobal.cpp global/qglobal.h
+ global/qforeach.h
+ global/qfunctionpointer.h
+ global/qglobal.cpp global/qglobal.h global/qglobal_p.h
global/qglobalstatic.h
global/qhooks.cpp global/qhooks_p.h
- global/qisenum.h
- global/qlibraryinfo.cpp global/qlibraryinfo.h
- global/qlogging.cpp global/qlogging.h
- global/qmalloc.cpp
- global/qmemory_p.h
- # global/qnamespace.h # special case
+ global/qlibraryinfo.cpp global/qlibraryinfo.h global/qlibraryinfo_p.h
+ global/qlogging.cpp global/qlogging.h global/qlogging_p.h
+ global/qmalloc.cpp global/qmalloc.h
+ global/qminmax.h
+ global/qnamespace.h # this header is specified on purpose so AUTOMOC processes it
+ global/qnativeinterface.h global/qnativeinterface_p.h
global/qnumeric.cpp global/qnumeric.h global/qnumeric_p.h
global/qoperatingsystemversion.cpp global/qoperatingsystemversion.h global/qoperatingsystemversion_p.h
+ global/qoverload.h
global/qprocessordetection.h
global/qrandom.cpp global/qrandom.h global/qrandom_p.h
- global/qsimd.cpp global/qsimd.h global/qsimd_p.h
- global/qsysinfo.h
+ global/qswap.h
+ global/qsysinfo.cpp global/qsysinfo.h
global/qsystemdetection.h
+ global/qtclasshelpermacros.h
+ global/qtconfiginclude.h
+ global/qtconfigmacros.h
+ global/qtdeprecationmarkers.h
+ global/qtenvironmentvariables.cpp global/qtenvironmentvariables.h
+ global/qtenvironmentvariables_p.h
+ global/qtnoop.h
+ global/qtpreprocessorsupport.h
+ global/qtrace_p.h
+ global/qtresource.h
+ global/qtsymbolmacros.h
+ global/qttranslation.h
+ global/qttypetraits.h
+ global/qtversionchecks.h
+ global/qtversion.h
global/qtypeinfo.h
- global/qversiontagging.cpp global/qversiontagging.h # special case
+ global/qtypes.cpp global/qtypes.h
+ global/qvolatile_p.h
+ global/q20algorithm.h
+ global/q20chrono.h
+ global/q20functional.h
+ global/q20iterator.h
+ global/q20map.h
+ global/q20memory.h
+ global/q20type_traits.h
+ global/q20vector.h
+ global/q23functional.h
+ global/q23utility.cpp # remove once we have a user that tests this
+ global/q23utility.h
+ global/qxpfunctional.h
+ global/qxptype_traits.h
+ global/qversiontagging.h
+ ipc/qsharedmemory.cpp ipc/qsharedmemory.h ipc/qsharedmemory_p.h
+ ipc/qsystemsemaphore.cpp ipc/qsystemsemaphore.h ipc/qsystemsemaphore_p.h
+ ipc/qtipccommon.cpp ipc/qtipccommon.h ipc/qtipccommon_p.h
io/qabstractfileengine.cpp io/qabstractfileengine_p.h
io/qbuffer.cpp io/qbuffer.h
io/qdataurl.cpp io/qdataurl_p.h
io/qdebug.cpp io/qdebug.h io/qdebug_p.h
io/qdir.cpp io/qdir.h io/qdir_p.h
+ io/qdirlisting.cpp io/qdirlisting.h io/qdirentryinfo_p.h
io/qdiriterator.cpp io/qdiriterator.h
- io/qfile.cpp io/qfile.h
+ io/qfile.cpp io/qfile.h io/qfile_p.h
io/qfiledevice.cpp io/qfiledevice.h io/qfiledevice_p.h
io/qfileinfo.cpp io/qfileinfo.h io/qfileinfo_p.h
io/qfileselector.cpp io/qfileselector.h io/qfileselector_p.h
@@ -78,9 +120,9 @@ qt_add_module(Core
io/qloggingcategory.cpp io/qloggingcategory.h
io/qloggingregistry.cpp io/qloggingregistry_p.h
io/qnoncontiguousbytedevice.cpp io/qnoncontiguousbytedevice_p.h
- io/qresource.cpp io/qresource_p.h
+ io/qresource.cpp io/qresource.h io/qresource_p.h
io/qresource_iterator.cpp io/qresource_iterator_p.h
- io/qsavefile.cpp io/qsavefile.h
+ io/qsavefile.cpp io/qsavefile.h io/qsavefile_p.h
io/qstandardpaths.cpp io/qstandardpaths.h
io/qstorageinfo.cpp io/qstorageinfo.h io/qstorageinfo_p.h
io/qtemporarydir.cpp io/qtemporarydir.h
@@ -89,21 +131,23 @@ qt_add_module(Core
io/qurlidna.cpp
io/qurlquery.cpp io/qurlquery.h
io/qurlrecode.cpp
- itemmodels/qabstractitemmodel.cpp itemmodels/qabstractitemmodel.h itemmodels/qabstractitemmodel_p.h
- itemmodels/qitemselectionmodel.cpp itemmodels/qitemselectionmodel.h itemmodels/qitemselectionmodel_p.h
+ io/qzipreader_p.h io/qzipwriter_p.h io/qzip.cpp
kernel/qabstracteventdispatcher.cpp kernel/qabstracteventdispatcher.h kernel/qabstracteventdispatcher_p.h
kernel/qabstractnativeeventfilter.cpp kernel/qabstractnativeeventfilter.h
+ kernel/qapplicationstatic.h
kernel/qassociativeiterable.cpp kernel/qassociativeiterable.h
kernel/qbasictimer.cpp kernel/qbasictimer.h
+ kernel/qbindingstorage.h
+ kernel/qchronotimer.cpp kernel/qchronotimer.h
kernel/qcoreapplication.cpp kernel/qcoreapplication.h kernel/qcoreapplication_p.h
+ kernel/qcoreapplication_platform.h
kernel/qcorecmdlineargs_p.h
- kernel/qcoreevent.cpp kernel/qcoreevent.h
- kernel/qcoreglobaldata.cpp kernel/qcoreglobaldata_p.h
- kernel/qdeadlinetimer.cpp kernel/qdeadlinetimer.h kernel/qdeadlinetimer_p.h
+ kernel/qcoreevent.cpp kernel/qcoreevent.h kernel/qcoreevent_p.h
+ kernel/qdeadlinetimer.cpp kernel/qdeadlinetimer.h
kernel/qelapsedtimer.cpp kernel/qelapsedtimer.h
- kernel/qeventloop.cpp kernel/qeventloop.h
+ kernel/qeventloop.cpp kernel/qeventloop.h kernel/qeventloop_p.h
kernel/qfunctions_p.h
- kernel/qiterable.cpp kernel/qiterable.h kernel/qiterable_p.cpp kernel/qiterable_p.h
+ kernel/qiterable.cpp kernel/qiterable.h kernel/qiterable_p.h
kernel/qmath.cpp kernel/qmath.h
kernel/qmetacontainer.cpp kernel/qmetacontainer.h
kernel/qmetaobject.cpp kernel/qmetaobject.h kernel/qmetaobject_p.h
@@ -111,24 +155,25 @@ qt_add_module(Core
kernel/qmetaobjectbuilder.cpp kernel/qmetaobjectbuilder_p.h
kernel/qmetatype.cpp kernel/qmetatype.h kernel/qmetatype_p.h
kernel/qmimedata.cpp kernel/qmimedata.h
- # kernel/qobject.cpp kernel/qobject.h kernel/qobject_p.h # special case
+ kernel/qtmetamacros.h kernel/qtmochelpers.h
+ kernel/qobject.cpp kernel/qobject.h kernel/qobject_p.h kernel/qobject_p_p.h
kernel/qobject_impl.h
kernel/qobjectcleanuphandler.cpp kernel/qobjectcleanuphandler.h
kernel/qobjectdefs.h
kernel/qobjectdefs_impl.h
- kernel/qpointer.cpp kernel/qpointer.h
+ kernel/qpointer.h
kernel/qproperty.cpp kernel/qproperty.h kernel/qproperty_p.h
kernel/qpropertyprivate.h
kernel/qsequentialiterable.cpp kernel/qsequentialiterable.h
- kernel/qsharedmemory.cpp kernel/qsharedmemory.h kernel/qsharedmemory_p.h
kernel/qsignalmapper.cpp kernel/qsignalmapper.h
kernel/qsocketnotifier.cpp kernel/qsocketnotifier.h
kernel/qsystemerror.cpp kernel/qsystemerror_p.h
- kernel/qsystemsemaphore.cpp kernel/qsystemsemaphore.h kernel/qsystemsemaphore_p.h
kernel/qtestsupport_core.cpp kernel/qtestsupport_core.h
- kernel/qtimer.cpp kernel/qtimer.h
+ kernel/qsingleshottimer_p.h
+ kernel/qtimer.cpp kernel/qtimer.h kernel/qtimer_p.h
kernel/qtranslator.cpp kernel/qtranslator.h kernel/qtranslator_p.h
kernel/qvariant.cpp kernel/qvariant.h kernel/qvariant_p.h
+ kernel/qvariantmap.h kernel/qvarianthash.h kernel/qvariantlist.h
plugin/qfactoryinterface.cpp plugin/qfactoryinterface.h
plugin/qfactoryloader.cpp plugin/qfactoryloader_p.h
plugin/qplugin.h plugin/qplugin_p.h
@@ -150,12 +195,9 @@ qt_add_module(Core
serialization/qjsonvalue.cpp serialization/qjsonvalue.h
serialization/qjsonwriter.cpp serialization/qjsonwriter_p.h
serialization/qtextstream.cpp serialization/qtextstream.h serialization/qtextstream_p.h
- serialization/qxmlstream.cpp serialization/qxmlstream.h serialization/qxmlstream_p.h
- serialization/qxmlstreamgrammar.cpp serialization/qxmlstreamgrammar_p.h
- serialization/qxmlstreamparser_p.h
serialization/qxmlutils.cpp serialization/qxmlutils_p.h
- text/qanystringview.h
- text/qbytearray.cpp text/qbytearray.h text/qbytearray_p.h
+ text/qanystringview.cpp text/qanystringview.h
+ text/qbytearray.cpp text/qbytearray.h
text/qbytearrayalgorithms.h
text/qbytearraylist.cpp text/qbytearraylist.h
text/qbytearraymatcher.cpp text/qbytearraymatcher.h
@@ -164,13 +206,18 @@ qt_add_module(Core
text/qchar.h
text/qcollator.cpp text/qcollator.h text/qcollator_p.h
text/qdoublescanprint_p.h
+ text/qlatin1stringmatcher.cpp text/qlatin1stringmatcher.h
+ text/qlatin1stringview.h
text/qlocale.cpp text/qlocale.h text/qlocale_p.h
text/qlocale_data_p.h
text/qlocale_tools.cpp text/qlocale_tools_p.h
+ text/qstaticlatin1stringmatcher.h
text/qstring.cpp text/qstring.h
text/qstringalgorithms.h text/qstringalgorithms_p.h
text/qstringbuilder.cpp text/qstringbuilder.h
+ text/qstringconverter_base.h
text/qstringconverter.cpp text/qstringconverter.h text/qstringconverter_p.h
+ text/qstringfwd.h
text/qstringiterator_p.h
text/qstringlist.cpp text/qstringlist.h
text/qstringliteral.h
@@ -182,25 +229,36 @@ qt_add_module(Core
text/qunicodetools.cpp text/qunicodetools_p.h
text/qutf8stringview.h
text/qvsnprintf.cpp
+ thread/qatomic.h
+ thread/qatomic_cxx11.h
+ thread/qbasicatomic.h
+ thread/qgenericatomic.h
+ thread/qlocking_p.h
thread/qmutex.h
+ thread/qorderedmutexlocker_p.h
thread/qreadwritelock.h
thread/qrunnable.cpp thread/qrunnable.h
- thread/qthread.cpp thread/qthread.h
+ thread/qthread.cpp thread/qthread.h thread/qthread_p.h
thread/qthreadstorage.h
+ thread/qtsan_impl.h
thread/qwaitcondition.h thread/qwaitcondition_p.h
+ thread/qyieldcpu.h
time/qcalendar.cpp time/qcalendar.h
time/qcalendarbackend_p.h
time/qcalendarmath_p.h
time/qdatetime.cpp time/qdatetime.h time/qdatetime_p.h
time/qgregoriancalendar.cpp time/qgregoriancalendar_p.h
time/qjuliancalendar.cpp time/qjuliancalendar_p.h
+ time/qlocaltime.cpp time/qlocaltime_p.h
time/qmilankoviccalendar.cpp time/qmilankoviccalendar_p.h
time/qromancalendar.cpp time/qromancalendar_p.h
time/qromancalendar_data_p.h
+ time/qtimezone.cpp time/qtimezone.h
tools/qalgorithms.h
tools/qarraydata.cpp tools/qarraydata.h
tools/qarraydataops.h
tools/qarraydatapointer.h
+ tools/qatomicscopedvaluerollback.h
tools/qbitarray.cpp tools/qbitarray.h
tools/qcache.h
tools/qcontainerfwd.h
@@ -210,7 +268,7 @@ qt_add_module(Core
tools/qduplicatetracker_p.h
tools/qflatmap_p.h
tools/qfreelist.cpp tools/qfreelist_p.h
- tools/qhash.cpp tools/qhash.h
+ tools/qfunctionaltools_impl.cpp tools/qfunctionaltools_impl.h
tools/qhashfunctions.h
tools/qiterator.h
tools/qline.cpp tools/qline.h
@@ -218,7 +276,8 @@ qt_add_module(Core
tools/qmakearray_p.h
tools/qmap.h
tools/qmargins.cpp tools/qmargins.h
- tools/qmessageauthenticationcode.cpp tools/qmessageauthenticationcode.h
+ tools/qmessageauthenticationcode.h
+ tools/qminimalflatset_p.h
tools/qoffsetstringarray_p.h
tools/qpair.h
tools/qpoint.cpp tools/qpoint.h
@@ -226,7 +285,7 @@ qt_add_module(Core
tools/qrect.cpp tools/qrect.h
tools/qrefcount.cpp tools/qrefcount.h
tools/qringbuffer.cpp tools/qringbuffer_p.h
- tools/qscopedpointer.h tools/qscopedpointer_p.h
+ tools/qscopedpointer.h
tools/qscopedvaluerollback.h
tools/qscopeguard.h
tools/qset.h
@@ -235,109 +294,124 @@ qt_add_module(Core
tools/qsharedpointer.cpp tools/qsharedpointer.h
tools/qsharedpointer_impl.h
tools/qsize.cpp tools/qsize.h
+ tools/qspan.h
+ tools/qspan_p.h
tools/qstack.h
tools/qtaggedpointer.h
tools/qtools_p.h
+ tools/qtyperevision.cpp tools/qtyperevision.h
+ tools/quniquehandle_p.h
tools/qvarlengtharray.h
tools/qvector.h
tools/qversionnumber.cpp tools/qversionnumber.h
+ NO_UNITY_BUILD_SOURCES
+ # MinGW complains about `free-nonheap-object` in ~QSharedDataPointer()
+ # despite the fact that appropriate checks are in place to avoid that!
+ tools/qshareddata.cpp tools/qshareddata.h
+ text/qlocale.cpp text/qlocale.h
+ global/qglobal.cpp # undef qFatal
+ global/qlogging.cpp # undef qFatal/qInfo/qDebug
+ global/qrandom.cpp # undef Q_ASSERT/_X
+ text/qstringconverter.cpp # enum Data
+ tools/qcryptographichash.cpp # KeccakNISTInterface/Final
+ io/qdebug.cpp # undef qDebug
+ NO_PCH_SOURCES
+ compat/removed_api.cpp
+ global/qsimd.cpp
DEFINES
+ QT_NO_CONTEXTLESS_CONNECT
QT_NO_FOREACH
+ QT_NO_QPAIR
QT_NO_USING_NAMESPACE
+ QT_TYPESAFE_FLAGS
+ QT_USE_NODISCARD_FILE_OPEN
INCLUDE_DIRECTORIES
- "${CMAKE_CURRENT_BINARY_DIR}/global" # special case
- # ../3rdparty/md4 # special case remove
- # ../3rdparty/md5 # special case remove
- # ../3rdparty/sha3 # special case remove
+ "${CMAKE_CURRENT_BINARY_DIR}/global"
+ "${CMAKE_CURRENT_BINARY_DIR}/kernel" # for moc_qobject.cpp to be found by qobject.cpp
../3rdparty/tinycbor/src
LIBRARIES
- Qt::GlobalConfigPrivate # special case
+ Qt::GlobalConfigPrivate
+ WrapZLIB::WrapZLIB
PRECOMPILED_HEADER
"global/qt_pch.h"
- PUBLIC_LIBRARIES # special case:
- Qt::Platform # special case:
- # special case begin
- # Generated in QtBaseGlobalTargets
+ GENERATE_CPP_EXPORTS
+ PUBLIC_LIBRARIES
+ Qt::Platform
EXTRA_CMAKE_FILES
- "${CMAKE_CURRENT_SOURCE_DIR}/Qt6CTestMacros.cmake"
- ${corelib_extra_cmake_files}
- # special case end
+ "${CMAKE_CURRENT_SOURCE_DIR}/Qt6CTestMacros.cmake"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Qt6CoreConfigureFileTemplate.in"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Qt6CoreResourceInit.in.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Qt6CoreDeploySupport.cmake"
+ ${corelib_extra_cmake_files}
+ POLICIES
+ QTP0002
+ QTP0003
)
+_qt_internal_setup_deploy_support()
-# special case begin
add_dependencies(Core qmodule_pri)
-add_dependencies(Core ${QT_CMAKE_EXPORT_NAMESPACE}::moc)
-add_dependencies(Core ${QT_CMAKE_EXPORT_NAMESPACE}::rcc)
-add_dependencies(CorePrivate ${QT_CMAKE_EXPORT_NAMESPACE}::moc)
-add_dependencies(CorePrivate ${QT_CMAKE_EXPORT_NAMESPACE}::rcc)
-if (QT_NAMESPACE STREQUAL "")
-else()
- target_compile_definitions(Core PUBLIC "QT_NAMESPACE=${QT_NAMESPACE}")
+if (NOT QT_NAMESPACE STREQUAL "")
+ set(core_namespace_defs "QT_NAMESPACE=${QT_NAMESPACE}")
+ if(QT_INLINE_NAMESPACE)
+ list(APPEND core_namespace_defs QT_INLINE_NAMESPACE)
+ endif()
+ target_compile_definitions(Core PUBLIC ${core_namespace_defs})
+ set_target_properties(Core PROPERTIES _qt_namespace "${QT_NAMESPACE}")
+ set_property(TARGET Core APPEND PROPERTY EXPORT_PROPERTIES _qt_namespace)
endif()
-qt_generate_qconfig_cpp()
+qt_generate_qconfig_cpp(global/qconfig.cpp.in global/qconfig.cpp)
+
+set_target_properties(Core PROPERTIES INTERFACE_QT_COORD_TYPE "${QT_COORD_TYPE}")
+set_property(TARGET Core APPEND PROPERTY COMPATIBLE_INTERFACE_STRING QT_COORD_TYPE)
# Handle qtConfig(thread): CONFIG += thread like in qt.prf.
-# Aka if the feature is enabled, publically link against the threading library.
+# Aka if the feature is enabled, publicly link against the threading library.
# This also ensures the link flag is in the .prl file.
if(QT_FEATURE_thread)
target_link_libraries(Platform INTERFACE Threads::Threads)
endif()
-# Handle QObject: Automoc does not work for this as it would
-# require to spill internals into users:
-qt_add_module(Core_qobject STATIC
- NO_SYNC_QT
- NO_CONFIG_HEADER_FILE
- NO_MODULE_HEADERS
- INTERNAL_MODULE
- SKIP_DEPENDS_INCLUDE
-)
-set_target_properties(Core_qobject PROPERTIES AUTOMOC OFF)
-qt_manual_moc(qobject_moc_files OUTPUT_MOC_JSON_FILES core_qobject_metatypes_json_list kernel/qobject.h global/qnamespace.h)
+# Skip AUTOMOC processing of qobject.cpp and its headers.
+# We do this on purpose, because qobject.cpp contains a bunch of Q_GADGET, Q_NAMESPACE, etc
+# keywords and AUTOMOC gets confused about wanting to compile a qobject.moc file as well.
+# Instead use manual moc.
+set_source_files_properties(kernel/qobject.cpp kernel/qobject.h kernel/qobject_p.h kernel/qobject_p_p.h
+ PROPERTIES SKIP_AUTOMOC TRUE)
+
+qt_manual_moc(qobject_moc_files
+ OUTPUT_MOC_JSON_FILES core_qobject_metatypes_json_list
+ kernel/qobject.h)
+# The moc file is included directly by qobject.cpp
set_source_files_properties(${qobject_moc_files} PROPERTIES HEADER_FILE_ONLY ON)
-target_sources(Core_qobject PRIVATE
- global/qnamespace.h
- kernel/qobject.cpp kernel/qproperty.cpp kernel/qproperty.h kernel/qproperty_p.h kernel/qobject.h kernel/qobject_p.h ${qobject_moc_files})
-set_target_properties(Core_qobject PROPERTIES
- COMPILE_OPTIONS $<TARGET_PROPERTY:Core,COMPILE_OPTIONS>
- COMPILE_DEFINITIONS $<TARGET_PROPERTY:Core,COMPILE_DEFINITIONS>
- INCLUDE_DIRECTORIES $<TARGET_PROPERTY:Core,INCLUDE_DIRECTORIES>
-)
-target_include_directories(Core_qobject PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/kernel") # for moc_qobject.cpp
-target_link_libraries(Core_qobject PRIVATE Qt::Platform Qt::GlobalConfig)
-extend_target(Core LIBRARIES Qt::Core_qobject)
-add_dependencies(Core_qobject ${QT_CMAKE_EXPORT_NAMESPACE}::moc)
-
-set(core_qobject_metatypes_json_args)
-if (NOT QT_WILL_INSTALL)
- set(core_qobject_metatypes_json_args INSTALL_DIR "${QT_BUILD_DIR}/${INSTALL_LIBDIR}/metatypes")
+
+set(core_metatype_args MANUAL_MOC_JSON_FILES ${core_qobject_metatypes_json_list})
+
+if(QT_WILL_INSTALL)
+ set(metatypes_install_dir ${INSTALL_ARCHDATADIR}/metatypes)
+ list(APPEND core_metatype_args
+ __QT_INTERNAL_INSTALL __QT_INTERNAL_INSTALL_DIR "${metatypes_install_dir}")
endif()
-qt6_generate_meta_types_json_file(Core_qobject
- MANUAL_MOC_JSON_FILES ${core_qobject_metatypes_json_list}
- ${core_qobject_metatypes_json_args}
-)
+# Use qt6_extract_metatypes instead so that we can manually pass the
+# additional json files.
+qt6_extract_metatypes(Core ${core_metatype_args})
-# Core_qobject is never exported so we need to duplicate the metatypes file
-# interface on Core
-get_target_property(core_qobject_metatypes_file_genex_build Core_qobject QT_MODULE_META_TYPES_FILE_GENEX_BUILD)
-get_target_property(core_qobject_metatypes_file_genex_install Core_qobject QT_MODULE_META_TYPES_FILE_GENEX_INSTALL)
-target_sources(Core INTERFACE
- ${core_qobject_metatypes_file_genex_build}
- ${core_qobject_metatypes_file_genex_install}
+target_sources(Core PRIVATE
+ "${CMAKE_CURRENT_BINARY_DIR}/global/qconfig.h"
+ "${CMAKE_CURRENT_BINARY_DIR}/global/qconfig_p.h"
+)
+set_source_files_properties(
+ "${CMAKE_CURRENT_BINARY_DIR}/global/qconfig.h"
+ "${CMAKE_CURRENT_BINARY_DIR}/global/qconfig_p.h"
+ PROPERTIES GENERATED TRUE
)
-
-set_property(TARGET Core APPEND PROPERTY
- PUBLIC_HEADER "${CMAKE_CURRENT_BINARY_DIR}/global/qconfig.h")
-set_property(TARGET Core APPEND PROPERTY
- PRIVATE_HEADER "${CMAKE_CURRENT_BINARY_DIR}/global/qconfig_p.h")
# Find ELF interpreter and define a macro for that:
-if (LINUX AND NOT CMAKE_CROSSCOMPILING AND BUILD_SHARED_LIBS)
+if ((LINUX OR HURD) AND NOT CMAKE_CROSSCOMPILING AND BUILD_SHARED_LIBS)
if (NOT DEFINED ELF_INTERPRETER)
- execute_process(COMMAND ${CMAKE_COMMAND} -E env LC_ALL=C readelf -l /bin/ls
+ execute_process(COMMAND ${CMAKE_COMMAND} -E env LC_ALL=C readelf -l /bin/sh
RESULT_VARIABLE readelf_ok
OUTPUT_VARIABLE readelf_output
)
@@ -353,9 +427,8 @@ if (LINUX AND NOT CMAKE_CROSSCOMPILING AND BUILD_SHARED_LIBS)
target_compile_definitions(Core PRIVATE ELF_INTERPRETER="${ELF_INTERPRETER}")
endif()
endif()
-# special case end
-qt_add_simd_part(Core SIMD mips_dsp
+qt_internal_add_simd_part(Core SIMD mips_dsp
SOURCES
../gui/painting/qt_mips_asm_dsp_p.h
text/qstring_mips_dsp_asm.S
@@ -368,82 +441,63 @@ endif()
if(ANDROID)
set_property(TARGET Core APPEND PROPERTY QT_ANDROID_BUNDLED_JAR_DEPENDENCIES
- jar/QtAndroid.jar
+ jar/Qt${QtBase_VERSION_MAJOR}Android.jar
)
set_property(TARGET Core APPEND PROPERTY QT_ANDROID_LIB_DEPENDENCIES
- plugins/platforms/libplugins_platforms_qtforandroid.so
+ ${INSTALL_PLUGINSDIR}/platforms/libplugins_platforms_qtforandroid.so
)
set_property(TARGET Core APPEND PROPERTY QT_ANDROID_PERMISSIONS
android.permission.INTERNET android.permission.WRITE_EXTERNAL_STORAGE
)
endif()
-#### Keys ignored in scope 1:.:.:corelib.pro:<TRUE>:
-# CMAKE_DISABLED_FEATURES = "$$join(QT_DISABLED_FEATURES, "$$escape_expand(\\n) ")"
-# CMAKE_HOST_DATA_DIR = "$$cmakeRelativePath($$[QT_HOST_DATA/src], $$[QT_INSTALL_PREFIX])"
-# CMAKE_INSTALL_DATA_DIR = "$$cmakeRelativePath($$[QT_HOST_DATA], $$[QT_INSTALL_PREFIX])"
-# HOST_BINS = "$$[QT_HOST_BINS]"
-# INSTALLS = "ctest_qt5_module_files" "cmake_qt5_umbrella_module_files"
-# MODULE = "core"
-# MODULE_CONFIG = "moc" "resources"
-# QMAKE_DSYM_DEBUG_SCRIPT = "$$PWD/debug_script.py"
-# QMAKE_PKGCONFIG_VARIABLES = "host_bins" "qt_conf"
-# QMAKE_SUBSTITUTES = "ctest_macros_file" "cmake_umbrella_config_file" "cmake_umbrella_config_module_location" "cmake_umbrella_config_module_location_for_install" "cmake_umbrella_config_version_file" "cmake_extras_mkspec_dir" "cmake_extras_mkspec_dir_for_install"
-# cmake_extras_mkspec_dir.input = "$$PWD/Qt5CoreConfigExtrasMkspecDir.cmake.in"
-# cmake_extras_mkspec_dir.output = "$$DESTDIR/cmake/Qt5Core/Qt5CoreConfigExtrasMkspecDir.cmake"
-# cmake_extras_mkspec_dir_for_install.input = "$$PWD/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in"
-# cmake_extras_mkspec_dir_for_install.output = "$$DESTDIR/cmake/install/Qt5Core/Qt5CoreConfigExtrasMkspecDir.cmake"
-# cmake_qt5_umbrella_module_files.files = "$$cmake_umbrella_config_file.output" "$$cmake_umbrella_config_version_file.output" "$$cmake_umbrella_config_module_location_for_install.output"
-# cmake_qt5_umbrella_module_files.path = "$$[QT_INSTALL_LIBS]/cmake/Qt5"
-# cmake_umbrella_config_file.input = "$$PWD/Qt5Config.cmake.in"
-# cmake_umbrella_config_file.output = "$$DESTDIR/cmake/Qt5/Qt5Config.cmake"
-# cmake_umbrella_config_module_location.input = "$$PWD/Qt5ModuleLocation.cmake.in"
-# cmake_umbrella_config_module_location.output = "$$DESTDIR/cmake/Qt5/Qt5ModuleLocation.cmake"
-# cmake_umbrella_config_module_location_for_install.input = "$$PWD/Qt5ModuleLocationForInstall.cmake.in"
-# cmake_umbrella_config_module_location_for_install.output = "$$DESTDIR/cmake/install/Qt5/Qt5ModuleLocation.cmake"
-# cmake_umbrella_config_version_file.input = "$$PWD/../../mkspecs/features/data/cmake/Qt5ConfigVersion.cmake.in"
-# cmake_umbrella_config_version_file.output = "$$DESTDIR/cmake/Qt5/Qt5ConfigVersion.cmake"
-# ctest_macros_file.CONFIG = "verbatim"
-# ctest_macros_file.input = "$$PWD/Qt5CTestMacros.cmake"
-# ctest_macros_file.output = "$$DESTDIR/cmake/Qt5Core/Qt5CTestMacros.cmake"
-# ctest_qt5_module_files.files = "$$ctest_macros_file.output" "$$cmake_extras_mkspec_dir_for_install.output"
-# ctest_qt5_module_files.path = "$$[QT_INSTALL_LIBS]/cmake/Qt5Core"
-# host_bins.name = "host_bins"
-# host_bins.variable = "HOST_BINS"
-# qt_conf.name = "qt_config"
-# qt_conf.variable = "QT_CONFIG"
-
-## Scopes:
-#####################################################################
+# Add version tagging source files if the linker has version script support
+# or the platform supports it.
+set(core_version_tagging_files
+ global/qversiontagging.cpp)
+qt_internal_extend_target(Core
+ CONDITION TEST_ld_version_script OR APPLE OR WIN32
+ SOURCES ${core_version_tagging_files}
+)
-#### Keys ignored in scope 2:.:.:corelib.pro:QT_FEATURE_gc_binaries:
-# MODULE_CONFIG = "gc_binaries"
-# special case begin
-# remove because it's handled manually
-#qt_extend_target(Core CONDITION NOT QT_NAMESPACE_ISEMPTY
-# PUBLIC_DEFINES
-# QT_NAMESPACE=
-#)
-# special case end
+if(GCC)
+ # Disable LTO, as the symbols disappear somehow under GCC
+ # (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48200)
+ # The issue should be fixed in GCC >= 10
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
+ set_source_files_properties(${core_version_tagging_files}
+ PROPERTIES COMPILE_OPTIONS "-fno-lto")
+ endif()
+endif()
-qt_extend_target(Core CONDITION ANDROID
+qt_internal_extend_target(Core
+ CONDITION ( TEST_architecture_arch STREQUAL i386 ) OR
+ ( TEST_architecture_arch STREQUAL x86_64 ) OR
+ ( CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" ) OR
+ ( CMAKE_OSX_ARCHITECTURES MATCHES "i386" ) OR
SOURCES
- kernel/qsharedmemory_android.cpp
- kernel/qsystemsemaphore_android.cpp
+ global/qsimd_x86_p.h
+)
+
+qt_internal_extend_target(Core CONDITION ANDROID
DEFINES
- LIBS_SUFFIX="_${ANDROID_ABI}.so" # special case
+ LIBS_SUFFIX="_${ANDROID_ABI}.so"
)
-qt_extend_target(Core CONDITION MSVC AND (TEST_architecture_arch STREQUAL "i386")
+qt_internal_extend_target(Core CONDITION MSVC AND (TEST_architecture_arch STREQUAL "i386")
LINK_OPTIONS
"/BASE:0x67000000"
)
-#### Keys ignored in scope 6:.:.:corelib.pro:FREEBSD OR OPENBSD:
-# QMAKE_LFLAGS_NOUNDEF = <EMPTY>
+qt_internal_extend_target(Core CONDITION QT_FEATURE_xmlstream
+ SOURCES
+ serialization/qxmlstream.cpp serialization/qxmlstream.h serialization/qxmlstream_p.h
+ serialization/qxmlstreamgrammar.cpp serialization/qxmlstreamgrammar_p.h
+ serialization/qxmlstreamparser_p.h
+)
-qt_extend_target(Core CONDITION QT_FEATURE_animation
+qt_internal_extend_target(Core CONDITION QT_FEATURE_animation
SOURCES
animation/qabstractanimation.cpp animation/qabstractanimation.h animation/qabstractanimation_p.h
animation/qanimationgroup.cpp animation/qanimationgroup.h animation/qanimationgroup_p.h
@@ -454,9 +508,22 @@ qt_extend_target(Core CONDITION QT_FEATURE_animation
animation/qvariantanimation.cpp animation/qvariantanimation.h animation/qvariantanimation_p.h
)
-qt_extend_target(Core CONDITION WIN32
+# This needs to be done before one below adds kernel32 because the symbols we use
+# from synchronization also appears in kernel32 in the version of MinGW we use in CI.
+# However, when picking the symbols from libkernel32.a it will try to load the symbols
+# from the wrong DLL at runtime and crash!
+qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND WIN32
+ SOURCES
+ thread/qfutex_win_p.h
+ thread/qwaitcondition_win.cpp
+ LIBRARIES
+ synchronization
+)
+
+qt_internal_extend_target(Core CONDITION WIN32
SOURCES
global/qoperatingsystemversion_win.cpp global/qoperatingsystemversion_win_p.h
+ global/qt_windows.h
io/qfilesystemengine_win.cpp
io/qfsfileengine_win.cpp
io/qlockfile_win.cpp
@@ -464,20 +531,20 @@ qt_extend_target(Core CONDITION WIN32
io/qstorageinfo_win.cpp
io/qwindowspipereader.cpp io/qwindowspipereader_p.h
io/qwindowspipewriter.cpp io/qwindowspipewriter_p.h
+ io/qntdll_p.h
kernel/qcoreapplication_win.cpp
- kernel/qelapsedtimer_win.cpp
kernel/qeventdispatcher_win.cpp kernel/qeventdispatcher_win_p.h
- kernel/qfunctions_winrt_p.h
- kernel/qsharedmemory_win.cpp
- kernel/qsystemsemaphore_win.cpp
+ kernel/qfunctions_win.cpp kernel/qfunctions_win_p.h kernel/qfunctions_winrt_p.h
+ ipc/qsharedmemory_win.cpp
+ ipc/qsystemsemaphore_win.cpp
kernel/qwineventnotifier.cpp kernel/qwineventnotifier.h kernel/qwineventnotifier_p.h
kernel/qwinregistry.cpp kernel/qwinregistry_p.h
plugin/qsystemlibrary.cpp plugin/qsystemlibrary_p.h
- thread/qatomic_msvc.h
thread/qthread_win.cpp
- # DEFINES # special case: remove
+ platform/windows/qcomobject_p.h
LIBRARIES
advapi32
+ authz
kernel32
netapi32
ole32
@@ -492,7 +559,32 @@ qt_extend_target(Core CONDITION WIN32
userenv
)
-qt_extend_target(Core CONDITION APPLE
+qt_internal_extend_target(Core CONDITION WIN32
+ NO_UNITY_BUILD_SOURCES
+ global/qsimd.cpp # Q_DECL_INIT_PRIORITY
+ serialization/qcborvalue.cpp # various windows.h clashes
+ serialization/qjsoncbor.cpp
+ serialization/qjsonvalue.cpp
+ serialization/qxmlstream.cpp
+ text/qbytearray.cpp
+ text/qlatin1stringmatcher.cpp
+ text/qunicodetools.cpp
+ tools/qhash.cpp # Q_DECL_INIT_PRIORITY
+)
+
+if(NOT WIN32)
+ ### Qt7: remove
+ # Make qwineventnotifier.h available on non-Windows platforms too for code bases that include
+ # it unconditionally.
+ qt_internal_extend_target(Core SOURCES kernel/qwineventnotifier.h)
+ set_source_files_properties(kernel/qwineventnotifier.h PROPERTIES SKIP_AUTOMOC ON)
+endif()
+
+qt_internal_extend_target(Core CONDITION WASM
+ SOURCES
+ kernel/qcore_wasm.cpp)
+
+qt_internal_extend_target(Core CONDITION APPLE
SOURCES
global/qoperatingsystemversion_darwin.mm
io/qfilesystemengine_mac.mm
@@ -502,14 +594,24 @@ qt_extend_target(Core CONDITION APPLE
kernel/qcore_foundation.mm
kernel/qcore_mac.mm kernel/qcore_mac_p.h
kernel/qcoreapplication_mac.cpp
- kernel/qelapsedtimer_mac.cpp
kernel/qeventdispatcher_cf.mm kernel/qeventdispatcher_cf_p.h
LIBRARIES
${FWCoreFoundation}
${FWFoundation}
+ PUBLIC_LIBRARIES
+ ${FWIOKit}
+ DEFINES
+ _DARWIN_C_SOURCE # This resolves two issues,
+ # - Provide DT_* macros to qfilesystemengine_unix.cpp
+ # - Enables SOCK_MAXADDRLEN in case its missing during the unity build
+ NO_UNITY_BUILD_SOURCES
+ kernel/qsystemerror.cpp
+ # This makes sure that the tst_qmakelib passes. For some reason,
+ # QtCore ends up returning a corrupted error message in
+ # write_file(): fail
)
-qt_extend_target(Core CONDITION MACOS
+qt_internal_extend_target(Core CONDITION MACOS
LIBRARIES
${FWAppKit}
${FWApplicationServices}
@@ -517,10 +619,9 @@ qt_extend_target(Core CONDITION MACOS
${FWSecurity}
PUBLIC_LIBRARIES
${FWDiskArbitration}
- ${FWIOKit}
)
-qt_extend_target(Core CONDITION INTEGRITY
+qt_internal_extend_target(Core CONDITION INTEGRITY
LIBRARIES
ivfs
net
@@ -531,148 +632,88 @@ qt_extend_target(Core CONDITION INTEGRITY
--pending_instantiations=128
)
-#### Keys ignored in scope 14:.:.:corelib.pro:pathIsAbsolute(_ss_CMAKE_HOST_DATA_DIR):
-# CMAKE_HOST_DATA_DIR = "$$[QT_HOST_DATA/src]/"
-# CMAKE_HOST_DATA_DIR_IS_ABSOLUTE = "True"
-
-#### Keys ignored in scope 15:.:.:corelib.pro:pathIsAbsolute(_ss_CMAKE_INSTALL_DATA_DIR):
-# CMAKE_INSTALL_DATA_DIR = "$$[QT_HOST_DATA]/"
-# CMAKE_INSTALL_DATA_DIR_IS_ABSOLUTE = "True"
-
-#### Keys ignored in scope 20:.:global:global/global.pri:QT_CPU_FEATURES__ss_QT_ARCH___contains___f16c:
-# f16c_cxx = "true"
-
-#### Keys ignored in scope 22:.:global:global/global.pri:CLANG OR intel_icl OR ICC:
-# f16c_cxx = "false"
-
-#### Keys ignored in scope 24:.:global:global/global.pri:GCC AND f16c AND x86SimdAlways:
-# f16c_cxx = "true"
-
-#### Keys ignored in scope 26:.:global:global/global.pri:MSVC AND QT_CPU_FEATURES__ss_QT_ARCH___contains___avx:
-# f16c_cxx = "true"
-
-#### Keys ignored in scope 27:.:global:global/global.pri:else:
-# f16c_cxx = "false"
-
-# extend_target(Core CONDITION _ss_f16c_cxx ... # special case remove: Handled manually
-
-# special case begin
-# Remove this because it's handled manually
-#extend_target(Core CONDITION NOT _x_-armcc_x_ AND NOT cross_compile AND NOT static AND (hurd_x_ OR linux_x_)
-# DEFINES
-# ELF_INTERPRETER=\\\"=Creadelf-l/bin/ls|perl-n-e\'['quote', ['if', ['/program', 'interpreter:', ['.*'], ']/'], '{', 'print', '$1;', '}']]\'\\\"
-# LINK_OPTIONS
-# "-Wl,-e,qt_core_boilerplate"
-#)
-# special case end
-
-qt_extend_target(Core CONDITION LINUX AND NOT static
- SOURCES
- global/minimum-linux_p.h
+# Workaround for QTBUG-101411
+# Remove if QCC (gcc version 8.3.0) for QNX 7.1.0 is no longer supported
+qt_internal_extend_target(Core CONDITION QCC AND (CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL "8.3.0")
+ PUBLIC_COMPILE_OPTIONS $<$<COMPILE_LANGUAGE:CXX>:-Wno-invalid-offsetof>
)
-#### Keys ignored in scope 34:.:global:global/global.pri:precompile_header:
-# NO_PCH_ASM = "global/minimum-linux.S"
-# QMAKE_EXTRA_COMPILERS = "no_pch_assembler"
-# no_pch_assembler.commands = "$$QMAKE_CC" "-c" "$(CFLAGS)" "$(INCPATH)" "${QMAKE_FILE_IN}" "-o" "${QMAKE_FILE_OUT}"
-# no_pch_assembler.dependency_type = "TYPE_C"
-# no_pch_assembler.input = "NO_PCH_ASM"
-# no_pch_assembler.name = "compiling[no_pch]" "${QMAKE_FILE_IN}"
-# no_pch_assembler.output = "${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${firstQMAKE_EXT_OBJ}"
-
-#### Keys ignored in scope 35:.:global:global/global.pri:silent:
-# no_pch_assembler.commands = "@echo" "compiling[no_pch]" "${QMAKE_FILE_IN}" "&&"
-
-qt_extend_target(Core CONDITION LINUX AND NOT precompile_header AND NOT static
+qt_internal_extend_target(Core CONDITION LINUX AND QT_BUILD_SHARED_LIBS
SOURCES
- global/minimum-linux.S
+ global/minimum-linux_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_slog2
+qt_internal_extend_target(Core CONDITION QT_FEATURE_slog2
LIBRARIES
Slog2::Slog2
)
-qt_extend_target(Core CONDITION QT_FEATURE_journald
+qt_internal_extend_target(Core CONDITION QT_FEATURE_journald
LIBRARIES
PkgConfig::Libsystemd
)
-#### Keys ignored in scope 39:.:global:global/global.pri:GCC AND ltcg:
-# QMAKE_EXTRA_COMPILERS = "versiontagging_compiler"
-# versiontagging_compiler.commands = "$$QMAKE_CXX" "-c" "$(CXXFLAGS)" "$(INCPATH)" "-fno-lto" "-o" "${QMAKE_FILE_OUT}" "${QMAKE_FILE_IN}"
-# versiontagging_compiler.dependency_type = "TYPE_C"
-# versiontagging_compiler.input = "VERSIONTAGGING_SOURCES"
-# versiontagging_compiler.name = "compiling[versiontagging]" "${QMAKE_FILE_IN}"
-# versiontagging_compiler.output = "${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${firstQMAKE_EXT_OBJ}"
-# versiontagging_compiler.variable_out = "OBJECTS"
-
-#### Keys ignored in scope 40:.:global:global/global.pri:silent:
-# versiontagging_compiler.commands = "@echo" "compiling[versiontagging]" "${QMAKE_FILE_IN}" "&&"
-
-qt_extend_target(Core CONDITION NOT GCC OR NOT ltcg
- SOURCES
- global/qversiontagging.cpp
-)
-
-qt_extend_target(Core CONDITION UNIX
+qt_internal_extend_target(Core CONDITION UNIX
SOURCES
io/qfilesystemengine_unix.cpp
io/qfilesystemiterator_unix.cpp
io/qfsfileengine_unix.cpp
io/qlockfile_unix.cpp
kernel/qcore_unix.cpp kernel/qcore_unix_p.h
- kernel/qeventdispatcher_unix.cpp kernel/qeventdispatcher_unix_p.h
kernel/qpoll_p.h
kernel/qtimerinfo_unix.cpp kernel/qtimerinfo_unix_p.h
thread/qthread_unix.cpp
)
+if(APPLE)
+ set_source_files_properties(io/qfilesystemengine_unix.cpp PROPERTIES LANGUAGE OBJCXX)
+ qt_internal_extend_target(Core CONDITION
+ PUBLIC_LIBRARIES ${FWUniformTypeIdentifiers}
+ )
+endif()
-qt_extend_target(Core CONDITION QT_FEATURE_thread
+qt_internal_extend_target(Core CONDITION UNIX AND NOT WASM
SOURCES
- thread/qatomic.cpp thread/qatomic.h
- thread/qatomic_bootstrap.h
- thread/qatomic_cxx11.h
- thread/qbasicatomic.h
+ kernel/qeventdispatcher_unix.cpp kernel/qeventdispatcher_unix_p.h
+)
+
+qt_internal_extend_target(Core CONDITION QT_FEATURE_thread
+ SOURCES
+ thread/qatomic.cpp
thread/qfutex_p.h
- thread/qgenericatomic.h
- thread/qlocking_p.h
thread/qmutex.cpp thread/qmutex_p.h
- thread/qorderedmutexlocker_p.h
thread/qreadwritelock.cpp thread/qreadwritelock_p.h
thread/qsemaphore.cpp thread/qsemaphore.h
- thread/qthread_p.h
thread/qthreadpool.cpp thread/qthreadpool.h thread/qthreadpool_p.h
thread/qthreadstorage.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_thread AND WIN32
+qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND UNIX
SOURCES
- thread/qmutex_win.cpp
- thread/qwaitcondition_win.cpp
+ thread/qwaitcondition_unix.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_thread AND UNIX
+qt_internal_extend_target(Core CONDITION APPLE AND QT_FEATURE_thread
SOURCES
- thread/qwaitcondition_unix.cpp
+ thread/qfutex_mac_p.h
+ thread/qmutex_mac.cpp
)
-qt_extend_target(Core CONDITION APPLE AND QT_FEATURE_thread
+qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND UNIX AND NOT APPLE AND NOT LINUX
SOURCES
- thread/qmutex_mac.cpp
+ thread/qmutex_unix.cpp
)
-qt_extend_target(Core CONDITION LINUX AND QT_FEATURE_thread
+qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND FREEBSD
SOURCES
- thread/qmutex_linux.cpp
+ thread/qfutex_freebsd_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_thread AND UNIX AND NOT APPLE AND NOT LINUX
+qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND LINUX
SOURCES
- thread/qmutex_unix.cpp
+ thread/qfutex_linux_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_future
+qt_internal_extend_target(Core CONDITION QT_FEATURE_future
SOURCES
thread/qexception.cpp thread/qexception.h
thread/qfuture.h
@@ -684,104 +725,104 @@ qt_extend_target(Core CONDITION QT_FEATURE_future
thread/qresultstore.cpp thread/qresultstore.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_std_atomic64
+qt_internal_extend_target(Core CONDITION QT_FEATURE_std_atomic64
PUBLIC_LIBRARIES
WrapAtomic::WrapAtomic
)
-qt_extend_target(Core CONDITION ICC
- COMPILE_OPTIONS
- -fp-model
- strict
-)
-
-qt_extend_target(Core CONDITION QT_FEATURE_system_zlib
+qt_internal_extend_target(Core CONDITION NOT QT_FEATURE_system_zlib
LIBRARIES
- ZLIB::ZLIB
-)
-
-qt_extend_target(Core CONDITION NOT QT_FEATURE_system_zlib
- SOURCES
- ../3rdparty/zlib/src/adler32.c
- ../3rdparty/zlib/src/compress.c
- ../3rdparty/zlib/src/crc32.c
- ../3rdparty/zlib/src/deflate.c
- ../3rdparty/zlib/src/gzclose.c
- ../3rdparty/zlib/src/gzlib.c
- ../3rdparty/zlib/src/gzread.c
- ../3rdparty/zlib/src/gzwrite.c
- ../3rdparty/zlib/src/infback.c
- ../3rdparty/zlib/src/inffast.c
- ../3rdparty/zlib/src/inflate.c
- ../3rdparty/zlib/src/inftrees.c
- ../3rdparty/zlib/src/trees.c
- ../3rdparty/zlib/src/uncompr.c
- ../3rdparty/zlib/src/zutil.c
- INCLUDE_DIRECTORIES
- ../3rdparty/zlib/src
+ Qt::ZlibPrivate
)
-qt_extend_target(Core CONDITION QT_FEATURE_commandlineparser
+qt_internal_extend_target(Core CONDITION QT_FEATURE_commandlineparser
SOURCES
tools/qcommandlineoption.cpp tools/qcommandlineoption.h
tools/qcommandlineparser.cpp tools/qcommandlineparser.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_system_doubleconversion
+qt_internal_extend_target(Core CONDITION QT_FEATURE_backtrace
+ DEFINES
+ BACKTRACE_HEADER="${Backtrace_HEADER}"
+ LIBRARIES
+ WrapBacktrace::WrapBacktrace
+)
+
+qt_internal_extend_target(Core CONDITION QT_FEATURE_system_doubleconversion
LIBRARIES
- WrapDoubleConversion::WrapDoubleConversion
-)
-
-qt_extend_target(Core CONDITION QT_FEATURE_doubleconversion AND NOT QT_FEATURE_system_doubleconversion
- SOURCES
- ../3rdparty/double-conversion/bignum.cc ../3rdparty/double-conversion/bignum.h
- ../3rdparty/double-conversion/bignum-dtoa.cc ../3rdparty/double-conversion/bignum-dtoa.h
- ../3rdparty/double-conversion/cached-powers.cc ../3rdparty/double-conversion/cached-powers.h
- ../3rdparty/double-conversion/diy-fp.cc ../3rdparty/double-conversion/diy-fp.h
- ../3rdparty/double-conversion/double-conversion.cc
- ../3rdparty/double-conversion/fast-dtoa.cc ../3rdparty/double-conversion/fast-dtoa.h
- ../3rdparty/double-conversion/fixed-dtoa.cc ../3rdparty/double-conversion/fixed-dtoa.h
- ../3rdparty/double-conversion/ieee.h
- ../3rdparty/double-conversion/include/double-conversion/double-conversion.h
- ../3rdparty/double-conversion/include/double-conversion/utils.h
- ../3rdparty/double-conversion/strtod.cc ../3rdparty/double-conversion/strtod.h
+ WrapSystemDoubleConversion::WrapSystemDoubleConversion
+)
+
+qt_internal_extend_target(Core CONDITION QT_FEATURE_doubleconversion AND NOT QT_FEATURE_system_doubleconversion
+ SOURCES
+ ../3rdparty/double-conversion/double-conversion/bignum.cc
+ ../3rdparty/double-conversion/double-conversion/bignum-dtoa.cc
+ ../3rdparty/double-conversion/double-conversion/bignum-dtoa.h
+ ../3rdparty/double-conversion/double-conversion/bignum.h
+ ../3rdparty/double-conversion/double-conversion/cached-powers.cc
+ ../3rdparty/double-conversion/double-conversion/cached-powers.h
+ ../3rdparty/double-conversion/double-conversion/diy-fp.h
+ ../3rdparty/double-conversion/double-conversion/double-conversion.h
+ ../3rdparty/double-conversion/double-conversion/double-to-string.cc
+ ../3rdparty/double-conversion/double-conversion/double-to-string.h
+ ../3rdparty/double-conversion/double-conversion/fast-dtoa.cc
+ ../3rdparty/double-conversion/double-conversion/fast-dtoa.h
+ ../3rdparty/double-conversion/double-conversion/fixed-dtoa.cc
+ ../3rdparty/double-conversion/double-conversion/fixed-dtoa.h
+ ../3rdparty/double-conversion/double-conversion/ieee.h
+ ../3rdparty/double-conversion/double-conversion/string-to-double.cc
+ ../3rdparty/double-conversion/double-conversion/string-to-double.h
+ ../3rdparty/double-conversion/double-conversion/strtod.cc
+ ../3rdparty/double-conversion/double-conversion/strtod.h
+ ../3rdparty/double-conversion/double-conversion/utils.h
INCLUDE_DIRECTORIES
- ../3rdparty/double-conversion/..
- ../3rdparty/double-conversion/include
+ ../3rdparty/double-conversion/double-conversion
+ ../3rdparty/double-conversion
)
-qt_extend_target(Core CONDITION QT_FEATURE_system_libb2
+qt_internal_extend_target(Core CONDITION QT_FEATURE_system_libb2
LIBRARIES
- PkgConfig::Libb2
+ Libb2::Libb2
)
-qt_extend_target(Core CONDITION QT_FEATURE_easingcurve
+qt_internal_extend_target(Core CONDITION QT_FEATURE_easingcurve
SOURCES
tools/qeasingcurve.cpp tools/qeasingcurve.h
tools/qtimeline.cpp tools/qtimeline.h
)
-qt_extend_target(Core CONDITION UNIX AND NOT HAIKU AND NOT INTEGRITY AND NOT VXWORKS AND NOT WASM AND (NOT ICC OR NOT MACOS)
+qt_internal_extend_target(Core CONDITION UNIX AND NOT HAIKU AND NOT INTEGRITY AND NOT VXWORKS AND NOT WASM AND NOT MACOS
LIBRARIES
m
)
-qt_extend_target(Core CONDITION APPLE AND NOT NACL
+qt_internal_extend_target(Core CONDITION APPLE
SOURCES
text/qlocale_mac.mm
)
-qt_extend_target(Core CONDITION UNIX AND (NACL OR NOT APPLE)
+qt_internal_extend_target(Core CONDITION UNIX AND NOT APPLE AND NOT WASM
SOURCES
text/qlocale_unix.cpp
)
-qt_extend_target(Core CONDITION WIN32 AND (NACL OR NOT APPLE)
+qt_internal_extend_target(Core CONDITION WIN32
SOURCES
text/qlocale_win.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_icu
+qt_internal_extend_target(Core CONDITION WASM
+ SOURCES
+ text/qlocale_wasm.cpp
+)
+
+# On MS-Win, clang has two flavors, one of which immitates MSVC (so claims to be it)
+qt_internal_extend_target(Core CONDITION MSVC
+ LIBRARIES
+ runtimeobject
+)
+
+qt_internal_extend_target(Core CONDITION QT_FEATURE_icu
SOURCES
text/qcollator_icu.cpp
text/qlocale_icu.cpp
@@ -789,191 +830,219 @@ qt_extend_target(Core CONDITION QT_FEATURE_icu
ICU::i18n ICU::uc ICU::data
)
-qt_extend_target(Core CONDITION WIN32 AND NOT QT_FEATURE_icu
+qt_internal_extend_target(Core CONDITION WIN32 AND NOT QT_FEATURE_icu
SOURCES
text/qcollator_win.cpp
)
-qt_extend_target(Core CONDITION MACOS AND NOT QT_FEATURE_icu
+qt_internal_extend_target(Core CONDITION MACOS AND NOT QT_FEATURE_icu
SOURCES
text/qcollator_macx.cpp
)
-qt_extend_target(Core CONDITION UNIX AND NOT MACOS AND NOT QT_FEATURE_icu
+qt_internal_extend_target(Core CONDITION UNIX AND NOT MACOS AND NOT QT_FEATURE_icu
SOURCES
text/qcollator_posix.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_regularexpression
+qt_internal_extend_target(Core CONDITION QT_FEATURE_regularexpression
SOURCES
text/qregularexpression.cpp text/qregularexpression.h
LIBRARIES
WrapPCRE2::WrapPCRE2
)
-qt_extend_target(Core CONDITION QT_FEATURE_hijricalendar
+qt_internal_extend_target(Core CONDITION QT_FEATURE_openssl_hash
+ LIBRARIES
+ WrapOpenSSL::WrapOpenSSL
+)
+
+qt_internal_extend_target(Core CONDITION QT_FEATURE_hijricalendar
SOURCES
time/qhijricalendar.cpp time/qhijricalendar_p.h
time/qhijricalendar_data_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_islamiccivilcalendar
+qt_internal_extend_target(Core CONDITION QT_FEATURE_islamiccivilcalendar
SOURCES
time/qislamiccivilcalendar.cpp time/qislamiccivilcalendar_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_jalalicalendar
+qt_internal_extend_target(Core CONDITION QT_FEATURE_jalalicalendar
SOURCES
time/qjalalicalendar.cpp time/qjalalicalendar_p.h
time/qjalalicalendar_data_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_timezone
+qt_internal_extend_target(Core CONDITION QT_FEATURE_timezone
SOURCES
- time/qtimezone.cpp time/qtimezone.h
time/qtimezoneprivate.cpp time/qtimezoneprivate_p.h
time/qtimezoneprivate_data_p.h
)
-qt_extend_target(Core CONDITION APPLE AND QT_FEATURE_timezone AND NOT NACL
+qt_internal_extend_target(Core CONDITION APPLE AND QT_FEATURE_timezone
SOURCES
time/qtimezoneprivate_mac.mm
)
-qt_extend_target(Core CONDITION ANDROID AND QT_FEATURE_timezone AND NOT ANDROID_EMBEDDED AND (NACL OR NOT APPLE)
+qt_internal_extend_target(Core CONDITION QT_FEATURE_timezone AND ANDROID AND NOT APPLE
SOURCES
time/qtimezoneprivate_android.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_timezone AND UNIX AND (ANDROID_EMBEDDED OR NOT ANDROID) AND (NACL OR NOT APPLE)
+qt_internal_extend_target(Core CONDITION QT_FEATURE_timezone AND UNIX AND NOT ANDROID AND NOT APPLE
SOURCES
time/qtimezoneprivate_tz.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_icu AND QT_FEATURE_timezone AND UNIX AND (ANDROID_EMBEDDED OR NOT ANDROID) AND (NACL OR NOT APPLE)
+qt_internal_extend_target(Core
+ CONDITION
+ QT_FEATURE_icu AND QT_FEATURE_timezone AND NOT ANDROID AND NOT APPLE
SOURCES
time/qtimezoneprivate_icu.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_icu AND QT_FEATURE_timezone AND WIN32 AND (ANDROID_EMBEDDED OR NOT ANDROID) AND (NACL OR NOT APPLE)
+# Even MS says we should prefer ICU over its APIs for TZ data:
+qt_internal_extend_target(Core
+ CONDITION
+ QT_FEATURE_timezone AND WIN32 AND NOT QT_FEATURE_icu
SOURCES
- time/qtimezoneprivate_icu.cpp
+ time/qtimezoneprivate_win.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_timezone AND WIN32 AND NOT QT_FEATURE_icu AND (ANDROID_EMBEDDED OR NOT ANDROID) AND (NACL OR NOT APPLE)
+qt_internal_extend_target(Core
+ CONDITION QT_FEATURE_timezone_locale
SOURCES
- time/qtimezoneprivate_win.cpp
+ time/qtimezonelocale.cpp time/qtimezonelocale_p.h
+)
+
+qt_internal_extend_target(Core
+ CONDITION QT_FEATURE_timezone_locale AND NOT QT_FEATURE_icu
+ SOURCES
+ time/qtimezonelocale_data_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_datetimeparser
+qt_internal_extend_target(Core CONDITION QT_FEATURE_datetimeparser
SOURCES
time/qdatetimeparser.cpp time/qdatetimeparser_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_zstd
+qt_internal_extend_target(Core CONDITION QT_FEATURE_zstd
LIBRARIES
- ZSTD::ZSTD
+ WrapZSTD::WrapZSTD
)
-qt_extend_target(Core CONDITION QT_FEATURE_filesystemwatcher
+qt_internal_extend_target(Core CONDITION QT_FEATURE_filesystemwatcher
SOURCES
io/qfilesystemwatcher.cpp io/qfilesystemwatcher.h io/qfilesystemwatcher_p.h
io/qfilesystemwatcher_polling.cpp io/qfilesystemwatcher_polling_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_filesystemwatcher AND WIN32
+qt_internal_extend_target(Core CONDITION QT_FEATURE_filesystemwatcher AND WIN32
SOURCES
io/qfilesystemwatcher_win.cpp io/qfilesystemwatcher_win_p.h
)
-qt_extend_target(Core CONDITION MACOS AND QT_FEATURE_filesystemwatcher
+qt_internal_extend_target(Core CONDITION MACOS AND QT_FEATURE_filesystemwatcher
SOURCES
io/qfilesystemwatcher_fsevents.mm io/qfilesystemwatcher_fsevents_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_filesystemwatcher AND QT_FEATURE_inotify AND UNIX AND NOT MACOS
+qt_internal_extend_target(Core CONDITION QT_FEATURE_filesystemwatcher AND QT_FEATURE_inotify AND UNIX AND NOT MACOS
SOURCES
io/qfilesystemwatcher_inotify.cpp io/qfilesystemwatcher_inotify_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_filesystemwatcher AND UNIX AND NOT MACOS AND NOT QT_FEATURE_inotify AND (APPLE OR FREEBSD OR NETBSD OR OPENBSD)
+qt_internal_extend_target(Core CONDITION QT_FEATURE_filesystemwatcher AND UNIX AND NOT MACOS AND NOT QT_FEATURE_inotify AND (APPLE OR FREEBSD OR NETBSD OR OPENBSD)
SOURCES
io/qfilesystemwatcher_kqueue.cpp io/qfilesystemwatcher_kqueue_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_processenvironment
+qt_internal_extend_target(Core CONDITION QT_FEATURE_processenvironment
SOURCES
io/qprocess.cpp io/qprocess.h io/qprocess_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_processenvironment AND WIN32
+qt_internal_extend_target(Core CONDITION QT_FEATURE_processenvironment AND WIN32
SOURCES
io/qprocess_win.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_processenvironment AND UNIX
+qt_internal_extend_target(Core CONDITION QT_FEATURE_processenvironment AND UNIX
SOURCES
io/qprocess_unix.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_settings
+qt_internal_extend_target(Core CONDITION QT_FEATURE_settings
SOURCES
io/qsettings.cpp io/qsettings.h io/qsettings_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_settings AND WIN32
+qt_internal_extend_target(Core CONDITION QT_FEATURE_settings AND WIN32
SOURCES
io/qsettings_win.cpp
)
-qt_extend_target(Core CONDITION APPLE AND QT_FEATURE_settings AND NOT NACL
+qt_internal_extend_target(Core CONDITION APPLE AND QT_FEATURE_settings
SOURCES
io/qsettings_mac.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_settings AND WASM
+qt_internal_extend_target(Core CONDITION QT_FEATURE_settings AND WASM
SOURCES
io/qsettings_wasm.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_filesystemiterator AND WIN32
+qt_internal_extend_target(Core CONDITION QT_FEATURE_filesystemiterator AND WIN32
SOURCES
io/qfilesystemiterator_win.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_process AND UNIX
+qt_internal_extend_target(Core CONDITION QT_FEATURE_process AND UNIX
SOURCES
../3rdparty/forkfd/forkfd.h
- io/forkfd_qt.cpp
+ io/forkfd_qt.c
INCLUDE_DIRECTORIES
../3rdparty/forkfd
)
-qt_extend_target(Core CONDITION APPLE AND QT_FEATURE_processenvironment
+qt_internal_extend_target(Core CONDITION APPLE AND QT_FEATURE_processenvironment
SOURCES
io/qprocess_darwin.mm
)
-qt_extend_target(Core CONDITION APPLE AND NOT MACOS
+qt_internal_extend_target(Core CONDITION APPLE AND NOT MACOS
PUBLIC_LIBRARIES
${FWMobileCoreServices}
)
-qt_extend_target(Core CONDITION UNIX AND NOT APPLE
+qt_internal_extend_target(Core CONDITION ANDROID
SOURCES
- kernel/qelapsedtimer_unix.cpp
+ io/qstandardpaths_android.cpp
+ io/qstorageinfo_linux.cpp io/qstorageinfo_linux_p.h
+ kernel/qjniarray.h
+ kernel/qjnitypes.h kernel/qjnitypes_impl.h
+ kernel/qjnienvironment.cpp kernel/qjnienvironment.h
+ kernel/qjniobject.cpp kernel/qjniobject.h
+ kernel/qjnihelpers.cpp kernel/qjnihelpers_p.h
+ platform/android/qandroidextras_p.h platform/android/qandroidextras.cpp
+ platform/android/qandroidnativeinterface.cpp
+ NO_UNITY_BUILD_SOURCES
+ platform/android/qandroidextras.cpp
+ # qtNativeClassName conflicts with similar symbols in android headers
+ # TODO: Resolve conflicts between various variables set as,
+ # `org/qtproject/qt/android/QtNative` QtAndroidPrivate might be a good
+ # place to put them.
)
-qt_extend_target(Core CONDITION ANDROID AND NOT ANDROID_EMBEDDED
+qt_internal_extend_target(Core CONDITION QT_FEATURE_cpp_winrt
SOURCES
- io/qstandardpaths_android.cpp
- io/qstorageinfo_unix.cpp
- kernel/qjni.cpp kernel/qjni_p.h
- kernel/qjnihelpers.cpp kernel/qjnihelpers_p.h
- kernel/qjnionload.cpp
+ platform/windows/qfactorycacheregistration_p.h
+ platform/windows/qfactorycacheregistration.cpp
+ platform/windows/qt_winrtbase_p.h
)
-qt_extend_target(Core CONDITION HAIKU AND (ANDROID_EMBEDDED OR NOT ANDROID)
+qt_internal_extend_target(Core CONDITION HAIKU AND NOT ANDROID
SOURCES
io/qstandardpaths_haiku.cpp
io/qstorageinfo_unix.cpp
@@ -981,127 +1050,149 @@ qt_extend_target(Core CONDITION HAIKU AND (ANDROID_EMBEDDED OR NOT ANDROID)
be
)
-qt_extend_target(Core CONDITION UNIX AND NOT APPLE AND NOT HAIKU AND (ANDROID_EMBEDDED OR NOT ANDROID)
+qt_internal_extend_target(Core
+ CONDITION UNIX AND NOT LINUX AND NOT APPLE AND NOT HAIKU AND NOT ANDROID AND NOT VXWORKS
SOURCES
io/qstandardpaths_unix.cpp
io/qstorageinfo_unix.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_proxymodel
+qt_internal_extend_target(Core CONDITION LINUX AND NOT ANDROID AND NOT VXWORKS
+ SOURCES
+ io/qstandardpaths_unix.cpp
+ io/qstorageinfo_linux.cpp
+)
+
+qt_internal_extend_target(Core CONDITION QT_FEATURE_itemmodel
+ SOURCES
+ itemmodels/qabstractitemmodel.cpp itemmodels/qabstractitemmodel.h itemmodels/qabstractitemmodel_p.h
+ itemmodels/qitemselectionmodel.cpp itemmodels/qitemselectionmodel.h itemmodels/qitemselectionmodel_p.h
+)
+
+qt_internal_extend_target(Core CONDITION QT_FEATURE_proxymodel
SOURCES
itemmodels/qabstractproxymodel.cpp itemmodels/qabstractproxymodel.h itemmodels/qabstractproxymodel_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_concatenatetablesproxymodel AND QT_FEATURE_proxymodel
+qt_internal_extend_target(Core CONDITION QT_FEATURE_concatenatetablesproxymodel AND QT_FEATURE_proxymodel
SOURCES
itemmodels/qconcatenatetablesproxymodel.cpp itemmodels/qconcatenatetablesproxymodel.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_identityproxymodel AND QT_FEATURE_proxymodel
+qt_internal_extend_target(Core CONDITION QT_FEATURE_identityproxymodel AND QT_FEATURE_proxymodel
SOURCES
- itemmodels/qidentityproxymodel.cpp itemmodels/qidentityproxymodel.h
+ itemmodels/qidentityproxymodel.cpp itemmodels/qidentityproxymodel.h itemmodels/qidentityproxymodel_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_proxymodel AND QT_FEATURE_sortfilterproxymodel
+qt_internal_extend_target(Core CONDITION QT_FEATURE_proxymodel AND QT_FEATURE_sortfilterproxymodel
SOURCES
itemmodels/qsortfilterproxymodel.cpp itemmodels/qsortfilterproxymodel.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_proxymodel AND QT_FEATURE_transposeproxymodel
+qt_internal_extend_target(Core CONDITION QT_FEATURE_proxymodel AND QT_FEATURE_transposeproxymodel
SOURCES
itemmodels/qtransposeproxymodel.cpp itemmodels/qtransposeproxymodel.h itemmodels/qtransposeproxymodel_p.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_stringlistmodel
+qt_internal_extend_target(Core CONDITION QT_FEATURE_stringlistmodel
SOURCES
itemmodels/qstringlistmodel.cpp itemmodels/qstringlistmodel.h
)
-qt_extend_target(Core CONDITION QT_FEATURE_library
+qt_internal_extend_target(Core CONDITION QT_FEATURE_library
SOURCES
- plugin/qelfparser_p.cpp plugin/qelfparser_p.h
plugin/qlibrary.cpp plugin/qlibrary.h plugin/qlibrary_p.h
- plugin/qmachparser.cpp plugin/qmachparser_p.h
)
-
-qt_extend_target(Core CONDITION QT_FEATURE_library AND UNIX
+qt_internal_extend_target(Core CONDITION QT_FEATURE_library AND WIN32
+ SOURCES
+ plugin/qcoffpeparser.cpp plugin/qcoffpeparser_p.h
+ plugin/qlibrary_win.cpp
+)
+qt_internal_extend_target(Core CONDITION QT_FEATURE_library AND APPLE
SOURCES
plugin/qlibrary_unix.cpp
+ plugin/qmachparser.cpp plugin/qmachparser_p.h
)
-
-qt_extend_target(Core CONDITION QT_FEATURE_library AND WIN32
+qt_internal_extend_target(Core CONDITION QT_FEATURE_library AND UNIX AND NOT APPLE
SOURCES
- plugin/qlibrary_win.cpp
+ plugin/qelfparser_p.cpp plugin/qelfparser_p.h
+ plugin/qlibrary_unix.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_dlopen AND QT_FEATURE_library
+qt_internal_extend_target(Core CONDITION QT_FEATURE_dlopen
LIBRARIES
${CMAKE_DL_LIBS}
)
-qt_extend_target(Core CONDITION APPLE AND (IOS OR TVOS)
+qt_internal_extend_target(Core CONDITION APPLE AND UIKIT
LIBRARIES
${FWUIKit}
)
-qt_extend_target(Core CONDITION WATCHOS
+qt_internal_extend_target(Core CONDITION WATCHOS
LIBRARIES
${FWWatchKit}
)
-qt_extend_target(Core CONDITION QT_FEATURE_poll_select AND UNIX
+qt_internal_extend_target(Core CONDITION QT_FEATURE_poll_select AND UNIX
SOURCES
kernel/qpoll.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_glib AND UNIX
+qt_internal_extend_target(Core CONDITION QT_FEATURE_glib AND UNIX
SOURCES
kernel/qeventdispatcher_glib.cpp kernel/qeventdispatcher_glib_p.h
LIBRARIES
GLIB2::GLIB2
)
-qt_extend_target(Core CONDITION QT_FEATURE_clock_gettime AND UNIX
+qt_internal_extend_target(Core CONDITION QT_FEATURE_clock_gettime
LIBRARIES
WrapRt::WrapRt
)
-qt_extend_target(Core CONDITION UNIX AND NOT ANDROID
+qt_internal_extend_target(Core CONDITION QT_FEATURE_posix_shm AND UNIX
SOURCES
- kernel/qsharedmemory_posix.cpp
- kernel/qsharedmemory_systemv.cpp
- kernel/qsharedmemory_unix.cpp
- kernel/qsystemsemaphore_posix.cpp
- kernel/qsystemsemaphore_systemv.cpp
- kernel/qsystemsemaphore_unix.cpp
+ ipc/qsharedmemory_posix.cpp
+ LIBRARIES
+ WrapRt::WrapRt
)
-
-qt_extend_target(Core CONDITION VXWORKS
+qt_internal_extend_target(Core CONDITION QT_FEATURE_sysv_shm
SOURCES
- kernel/qfunctions_vxworks.cpp kernel/qfunctions_vxworks.h
+ ipc/qsharedmemory_systemv.cpp
)
-
-qt_extend_target(Core CONDITION QNX AND QT_FEATURE_qqnx_pps
+qt_internal_extend_target(Core CONDITION QT_FEATURE_posix_sem
SOURCES
- kernel/qppsattribute.cpp kernel/qppsattribute_p.h
- kernel/qppsattributeprivate_p.h
- kernel/qppsobject.cpp kernel/qppsobject_p.h
- kernel/qppsobjectprivate_p.h
+ ipc/qsystemsemaphore_posix.cpp
LIBRARIES
- PPS::PPS
+ WrapRt::WrapRt
+)
+qt_internal_extend_target(Core CONDITION QT_FEATURE_sysv_sem
+ SOURCES
+ ipc/qsystemsemaphore_systemv.cpp
)
-qt_extend_target(Core CONDITION QT_FEATURE_cborstreamreader
+qt_internal_extend_target(Core CONDITION VXWORKS
+ SOURCES
+ io/qstandardpaths_unix.cpp
+ io/qstorageinfo_stub.cpp
+)
+
+qt_internal_extend_target(Core CONDITION QT_FEATURE_cborstreamreader
SOURCES
serialization/qcborstreamreader.cpp serialization/qcborstreamreader.h
+ NO_UNITY_BUILD_SOURCES
+ serialization/qcborstreamreader.cpp # some problem with cbor_value_get_type etc
)
-qt_extend_target(Core CONDITION QT_FEATURE_cborstreamwriter
+qt_internal_extend_target(Core CONDITION QT_FEATURE_cborstreamwriter
SOURCES
serialization/qcborstreamwriter.cpp serialization/qcborstreamwriter.h
+ NO_UNITY_BUILD_SOURCES
+ serialization/qcborstreamwriter.cpp # CBOR macro clashes
)
-qt_extend_target(Core CONDITION QT_FEATURE_mimetype
+qt_internal_extend_target(Core CONDITION QT_FEATURE_mimetype
SOURCES
mimetypes/qmimedatabase.cpp mimetypes/qmimedatabase.h mimetypes/qmimedatabase_p.h
mimetypes/qmimeglobpattern.cpp mimetypes/qmimeglobpattern_p.h
@@ -1112,110 +1203,173 @@ qt_extend_target(Core CONDITION QT_FEATURE_mimetype
mimetypes/qmimetypeparser.cpp mimetypes/qmimetypeparser_p.h
)
-#### Keys ignored in scope 172:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_mimetype:
-# MIME_DATABASE = "mimetypes/mime/packages/freedesktop.org.xml"
-# OTHER_FILES = "$$MIME_DATABASE"
-
-# special case begin
-# qt_extend_target(Core CONDITION QT_FEATURE_mimetype AND QT_FEATURE_mimetype_database
-# INCLUDE_DIRECTORIES
-# .rcc
-#)
-# special case end
-
-#### Keys ignored in scope 173:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_mimetype_database:
-# QMAKE_EXTRA_COMPILERS = "mimedb"
-# mimedb.commands = "${QMAKE_FILE_IN}" ">" "${QMAKE_FILE_OUT}"
-# mimedb.depends = "$$PWD/mime/generate.pl"
-# mimedb.input = "MIME_DATABASE"
-# mimedb.output = "$$outpath/qmimeprovider_database.cpp"
-# mimedb.variable_out = "INCLUDED_SOURCES"
-
-#### Keys ignored in scope 174:.:mimetypes:mimetypes/mimetypes.pri:ANDROID:
-# outpath = "$$outpath/$${QT_ARCH}"
-
-#### Keys ignored in scope 176:.:mimetypes:mimetypes/mimetypes.pri:(CMAKE_BUILD_TYPE STREQUAL Debug):
-# outpath = "$$outpath/debug"
-
-#### Keys ignored in scope 177:.:mimetypes:mimetypes/mimetypes.pri:else:
-# outpath = "$$outpath/release"
-
-#### Keys ignored in scope 178:.:mimetypes:mimetypes/mimetypes.pri:MAKEFILE_GENERATOR___equals___MSVC.NET OR MAKEFILE_GENERATOR___equals___MSBUILD OR QMAKE_SH_ISEMPTY:
-# mimedb.commands = "cmd" "/c" "$$shell_path($$PWD/mime/generate.bat)"
-# mimedb.depends = "$$PWD/mime/generate.bat" "$$PWD/mime/hexdump.ps1"
-
-#### Keys ignored in scope 179:.:mimetypes:mimetypes/mimetypes.pri:else:
-# mimedb.commands = "perl" "$${mimedb.depends}"
-
-#### Keys ignored in scope 180:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_zstd:
-# mimedb.commands = "--zstd"
-# Resources:
-# special case begin
-# We can't specify the resources directly as we have unit tests that
-# depend on these as well and we no longer support the use of hand
-# edited qrc files.
+qt_internal_extend_target(Core CONDITION QT_FEATURE_permissions
+ SOURCES
+ kernel/qpermissions.cpp kernel/qpermissions.h kernel/qpermissions_p.h
+)
+
+if(QT_FEATURE_permissions AND APPLE)
+ qt_internal_extend_target(Core
+ SOURCES
+ kernel/qpermissions_darwin.mm
+ platform/darwin/qdarwinpermissionplugin.mm
+ PLUGIN_TYPES
+ permissions
+ )
+
+ foreach(permission Camera Microphone Bluetooth Contacts Calendar Location)
+ qt_internal_add_darwin_permission_plugin("${permission}")
+ endforeach()
+
+ # Camera
+ qt_internal_extend_target(QDarwinCameraPermissionPlugin
+ LIBRARIES ${FWAVFoundation}
+ )
+ set_property(TARGET QDarwinCameraPermissionPlugin PROPERTY
+ _qt_darwin_permissison_separate_request TRUE
+ )
+
+ # Microphone
+ qt_internal_extend_target(QDarwinMicrophonePermissionPlugin
+ LIBRARIES ${FWAVFoundation}
+ )
+ set_property(TARGET QDarwinMicrophonePermissionPlugin PROPERTY
+ _qt_darwin_permissison_separate_request TRUE
+ )
+
+ # Bluetooth
+ qt_internal_extend_target(QDarwinBluetoothPermissionPlugin
+ LIBRARIES ${FWCoreBluetooth}
+ )
+ set_property(TARGET QDarwinBluetoothPermissionPlugin PROPERTY
+ _qt_info_plist_usage_descriptions "NSBluetoothAlwaysUsageDescription"
+ )
+
+ # Contacts
+ qt_internal_extend_target(QDarwinContactsPermissionPlugin
+ LIBRARIES ${FWContacts}
+ )
+
+ # Calendar
+ qt_internal_extend_target(QDarwinCalendarPermissionPlugin
+ LIBRARIES ${FWEventKit}
+ )
+ set_property(TARGET QDarwinCalendarPermissionPlugin PROPERTY
+ _qt_info_plist_usage_descriptions "NSCalendarsUsageDescription"
+ )
+
+ # Location
+ qt_internal_extend_target(QDarwinLocationPermissionPlugin
+ LIBRARIES ${FWCoreLocation}
+ )
+ if(MACOS)
+ set_property(TARGET QDarwinLocationPermissionPlugin PROPERTY
+ _qt_info_plist_usage_descriptions
+ "NSLocationUsageDescription"
+ )
+ else()
+ set_property(TARGET QDarwinLocationPermissionPlugin PROPERTY
+ _qt_info_plist_usage_descriptions
+ "NSLocationWhenInUseUsageDescription"
+ "NSLocationAlwaysAndWhenInUseUsageDescription"
+ )
+ endif()
+endif()
+
+qt_internal_extend_target(Core CONDITION QT_FEATURE_permissions AND ANDROID
+ SOURCES
+ kernel/qpermissions_android.cpp
+)
+
+qt_internal_extend_target(Core CONDITION QT_FEATURE_permissions AND WASM
+ SOURCES
+ kernel/qpermissions_wasm.cpp
+)
+
if(QT_FEATURE_mimetype AND QT_FEATURE_mimetype_database)
include(${CMAKE_CURRENT_SOURCE_DIR}/mimetypes/mimetypes_resources.cmake)
- corelib_add_mimetypes_resources(Core)
-# Generate qmimeprovider_database.cpp
- set(qmimeprovider_db_output "${CMAKE_CURRENT_BINARY_DIR}/.rcc/qmimeprovider_database.cpp")
- set(command_args "")
- set(mime_dir "${CMAKE_CURRENT_SOURCE_DIR}/mimetypes/mime")
- set(command_depends "${mime_dir}/generate.pl" "${corelib_mimetypes_resource_file}")
- if (MSVC)
- list(APPEND command_args "${mime_dir}/generate.bat")
- list(APPEND command_depends "${mime_dir}/generate.bat" "${mime_dir}/hexdump.ps1" )
+ if(CMAKE_VERSION VERSION_LESS 3.18 OR QT_AVOID_CMAKE_ARCHIVING_API)
+ set(archiving_api "External")
else()
- list(APPEND command_args perl "${mime_dir}/generate.pl" )
+ set(archiving_api "CMake")
+ if(QT_FEATURE_zstd AND NOT QT_CMAKE_ZSTD_SUPPORT)
+ message(FATAL_ERROR
+ "CMake was not built with zstd support. "
+ "Rebuild CMake or set QT_AVOID_CMAKE_ARCHIVING_API=ON.")
+ endif()
endif()
- if (QT_FEATURE_zstd)
- list(APPEND command_args "--zstd")
+ if(DEFINED INPUT_mimetype_database_compression)
+ set(supported_compression_types zstd gzip none)
+ if(INPUT_mimetype_database_compression IN_LIST supported_compression_types)
+ set(compression_type ${INPUT_mimetype_database_compression})
+ else()
+ message(FATAL_ERROR "Unknown mime type database compression is set:"
+ " ${INPUT_mimetype_database_compression}\nSupported compression types:\n"
+ " ${supported_compression_types}")
+ endif()
+ if(compression_type STREQUAL "zstd" AND NOT QT_FEATURE_zstd)
+ message(FATAL_ERROR
+ "zstd compression is selected for mime type database, but the 'zstd'"
+ " feature is disabled.")
+ endif()
+ elseif(QT_FEATURE_zstd)
+ set(compression_type "zstd")
+ else()
+ set(compression_type "gzip")
endif()
- list(APPEND command_args "${corelib_mimetypes_resource_file}" ">" "${qmimeprovider_db_output}")
+ if(QT_INTERNAL_ENABLE_VERBOSE_MIME_DATABASE_COMPRESSION)
+ set(extra_mime_db_compressor_flags "--log-level=STATUS")
+ else()
+ set(extra_mime_db_compressor_flags "--log-level=NOTICE")
+ endif()
+ # Generate qmimeprovider_database.cpp
+ set(qmimeprovider_db_output "${CMAKE_CURRENT_BINARY_DIR}/.rcc/qmimeprovider_database.cpp")
add_custom_command(OUTPUT "${qmimeprovider_db_output}"
- DEPENDS ${command_depends}
- COMMAND ${command_args}
- COMMENT "Generating ${qmimeprovider_db_output}"
+ COMMAND ${CMAKE_COMMAND}
+ -DINPUT_FILE=${corelib_mimetypes_resource_file}
+ -DOUTPUT_FILE=${qmimeprovider_db_output}
+ -DARCHIVING_API=${archiving_api}
+ -DCOMPRESSION_TYPE=${compression_type}
+ -P "${CMAKE_CURRENT_SOURCE_DIR}/QtCompressMimeDatabase.cmake"
+ ${extra_mime_db_compressor_flags}
+ DEPENDS
+ "${CMAKE_CURRENT_SOURCE_DIR}/QtCompressMimeDatabase.cmake"
+ "${corelib_mimetypes_resource_file}"
+ VERBATIM
)
- target_sources(Core PRIVATE ${qmimeprovider_db_output})
- set_source_files_properties(${qmimeprovider_db_output} PROPERTIES HEADER_FILE_ONLY TRUE)
- target_include_directories(Core PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/.rcc")
+ qt_internal_extend_target(Core
+ SOURCES ${qmimeprovider_db_output}
+ INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/.rcc"
+ )
+ set_source_files_properties(${qmimeprovider_db_output} PROPERTIES
+ GENERATED TRUE
+ HEADER_FILE_ONLY TRUE
+ )
endif()
-# special case end
-
-qt_extend_target(Core CONDITION WASM
+qt_internal_extend_target(Core CONDITION WASM
SOURCES
platform/wasm/qstdweb.cpp platform/wasm/qstdweb_p.h
+ kernel/qeventdispatcher_wasm.cpp kernel/qeventdispatcher_wasm_p.h
)
-# special case begin
-# needs refinement for the other compiler specific cases.
-if(TEST_arch_${TEST_architecture_arch}_subarch_f16c)
- # Equivalent to contains(QT_CPU_FEATURES.$$QT_ARCH, f16c)
- extend_target(Core
- DEFINES
- QFLOAT16_INCLUDE_FAST
- )
-else()
- qt_add_simd_part(Core SIMD f16c
- SOURCES
- global/qfloat16_f16c.c
- )
-endif()
+qt_internal_extend_target(Core CONDITION QT_FEATURE_ctf
+ SOURCES
+ tracing/qctf_p.h tracing/qctf.cpp
+ PLUGIN_TYPES
+ tracing
+)
+# These files are included by qmutex.cpp
set_source_files_properties(
- thread/qmutex_linux.cpp
thread/qmutex_mac.cpp
thread/qmutex_unix.cpp
- thread/qmutex_win.cpp
- PROPERTIES HEADER_FILE_ONLY ON) # special case: These files are included by qmutex.cpp!
-
+ PROPERTIES HEADER_FILE_ONLY ON)
# Remove QT_NO_CAST_TO_ASCII to ensure that the symbols are included in the library.
if(WIN32)
@@ -1226,14 +1380,27 @@ endif()
qt_internal_apply_gc_binaries_conditional(Core PUBLIC)
-if(WIN32)
- set(isExe $<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>)
- set(isWin32 $<BOOL:$<TARGET_PROPERTY:WIN32_EXECUTABLE>>)
- set(isNotExcluded $<NOT:$<BOOL:$<TARGET_PROPERTY:Qt5_NO_LINK_QTMAIN>>>)
- set(isPolicyNEW $<TARGET_POLICY:CMP0020>)
+# Add entry-point on platforms that need it. A project can opt-out of using the
+# entrypoint by setting the qt_no_entrypoint property to TRUE on a target.
+if(WIN32 OR UIKIT)
+ # find_package(Qt6Core) should call find_package(Qt6EntryPointPrivate) so that we can
+ # link against EntryPointPrivate. Normally this is handled automatically for deps, but
+ # for some reason it doesn't work for the EntryPointPrivate, so we need to add it manually.
+ qt_record_extra_qt_package_dependency(Core EntryPointPrivate "${PROJECT_VERSION}")
+
+ set(entrypoint_conditions "$<NOT:$<BOOL:$<TARGET_PROPERTY:qt_no_entrypoint>>>")
+ list(APPEND entrypoint_conditions "$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>")
- target_link_libraries(Core INTERFACE $<$<AND:${isExe},${isWin32},${isNotExcluded},${isPolicyNEW}>:Qt::WinMain>)
- qt_record_extra_qt_package_dependency(Core WinMain "${PROJECT_VERSION}")
+ if(WIN32)
+ list(APPEND entrypoint_conditions "$<BOOL:$<TARGET_PROPERTY:WIN32_EXECUTABLE>>")
+ endif()
+
+ list(JOIN entrypoint_conditions "," entrypoint_conditions)
+ set(entrypoint_conditions "$<AND:${entrypoint_conditions}>")
+
+ target_link_libraries(Core INTERFACE
+ "$<${entrypoint_conditions}:${QT_CMAKE_EXPORT_NAMESPACE}::EntryPointPrivate>"
+ )
endif()
# Record darwin minimum deployment target.
@@ -1243,26 +1410,77 @@ if(APPLE AND CMAKE_OSX_DEPLOYMENT_TARGET)
set_property(TARGET Core APPEND PROPERTY
EXPORT_PROPERTIES "QT_DARWIN_MIN_DEPLOYMENT_TARGET")
endif()
-# special case end
-qt_create_tracepoints(Core qtcore.tracepoints)
-# special case begin
-if(TARGET Core_tracepoints_header)
- add_dependencies(Core_qobject Core_tracepoints_header)
-endif()
-# special case end
-qt_add_docs(Core
+qt_internal_generate_tracepoints(Core core
+ SOURCES
+ kernel/qcoreapplication.cpp
+ kernel/qcoreevent.cpp
+ kernel/qobject.cpp
+ plugin/qfactoryloader.cpp
+ plugin/qlibrary.cpp
+ global/qlogging.cpp
+)
+qt_internal_add_docs(Core
doc/qtcore.qdocconf
)
-# special case begin
-# Handle qtzlib.pro to create headers for the
-# QtZlibPrivate target, equivalent to Qt += zlib-private
-if(NOT QT_FEATURE_system_zlib)
- qt_add_module(Zlib
- INTERNAL_MODULE
- HEADER_MODULE
- NO_CONFIG_HEADER_FILE
+qt_internal_add_optimize_full_flags()
+
+# Copy / install an lldb python script into the QtCore.framework.dSYM bundle which searches
+# for the latest installed Qt Creator and loads its lldbbridge.py script.
+# When debugging a Qt app, lldb will prompt the developer to explicitly import the shim script.
+# It will then enable Qt C++ type pretty printers when using command-line lldb or Xcode
+# (e.g. show contents of QString).
+if(APPLE AND QT_FEATURE_framework AND QT_FEATURE_separate_debug_info)
+ qt_internal_module_info(dsym_module_name "Core")
+
+ set(dsym_dir "${dsym_module_name}.framework.dSYM")
+ set(script_name "${dsym_module_name}.py")
+ set(dsym_script_dir_suffix "${INSTALL_LIBDIR}/${dsym_dir}/Contents/Resources/Python")
+ set(dsym_script_build_path "${QT_BUILD_DIR}/${dsym_script_dir_suffix}/${script_name}")
+
+ qt_path_join(dsym_script_install_dir
+ ${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX} ${dsym_script_dir_suffix})
+
+ configure_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/debug_script.py"
+ "${dsym_script_build_path}"
+ @ONLY
)
+ qt_install(FILES
+ "${dsym_script_build_path}"
+ DESTINATION "${dsym_script_install_dir}"
+ )
+endif()
+
+if(IOS)
+ qt_internal_set_apple_privacy_manifest(Core
+ "${CMAKE_CURRENT_SOURCE_DIR}/platform/ios/PrivacyInfo.xcprivacy")
endif()
-# special case end
+
+set(linker_script_contents "")
+if (QT_NAMESPACE STREQUAL "")
+ set(tag_symbol "qt_version_tag")
+else()
+ set(tag_symbol "qt_version_tag_${QT_NAMESPACE}")
+endif()
+foreach(minor_version RANGE ${PROJECT_VERSION_MINOR})
+ set(previous "${current}")
+ set(current "Qt_${PROJECT_VERSION_MAJOR}.${minor_version}")
+ if (minor_version EQUAL ${PROJECT_VERSION_MINOR})
+ string(APPEND linker_script_contents "${current} { ${tag_symbol}; } ${previous};\n")
+ else()
+ string(APPEND linker_script_contents "${current} {} ${previous};\n")
+ endif()
+endforeach()
+qt_internal_extend_target(Core
+ EXTRA_LINKER_SCRIPT_CONTENT "${linker_script_contents}"
+
+ # Workaround for QTBUG-117514:
+ # Function called by inline methods taking a pointer to a private class as a parameter
+ EXTRA_LINKER_SCRIPT_EXPORTS
+ # QFutureInterfaceBase::setContinuation(std::function<void (QFutureInterfaceBase const&)>, QFutureInterfaceBasePrivate*)
+ "_ZN*20QFutureInterfaceBase15setContinuationE*27QFutureInterfaceBasePrivate*"
+ # QReadWriteLock::destroyRecursive(QReadWriteLockPrivate*)
+ "_ZN*14QReadWriteLock16destroyRecursiveEP*21QReadWriteLockPrivate*"
+)