diff options
Diffstat (limited to 'src/corelib/CMakeLists.txt')
-rw-r--r-- | src/corelib/CMakeLists.txt | 1371 |
1 files changed, 812 insertions, 559 deletions
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index 9d6eb3d908..1055cf4ab5 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -1,63 +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) +qt_find_package(WrapZLIB PROVIDED_TARGETS WrapZLIB::WrapZLIB) - -# 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) +if(ANDROID) + set(corelib_extra_cmake_files + "${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}AndroidMacros.cmake") +endif() +if(WASM) + set(corelib_extra_cmake_files + "${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}WasmMacros.cmake") endif() -file(RELATIVE_PATH QT_INVERSE_CONFIG_INSTALL_DIR - "${_clean_prefix}" "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}") - -# special case end ##################################################################### ## 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/qtypetraits.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 @@ -68,14 +114,15 @@ qt_add_module(Core io/qfsfileengine.cpp io/qfsfileengine_p.h io/qfsfileengine_iterator.cpp io/qfsfileengine_iterator_p.h io/qiodevice.cpp io/qiodevice.h io/qiodevice_p.h + io/qiodevicebase.h io/qipaddress.cpp io/qipaddress_p.h io/qlockfile.cpp io/qlockfile.h io/qlockfile_p.h 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 @@ -84,44 +131,49 @@ 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.h kernel/qmath.cpp kernel/qmath.h + kernel/qmetacontainer.cpp kernel/qmetacontainer.h kernel/qmetaobject.cpp kernel/qmetaobject.h kernel/qmetaobject_p.h kernel/qmetaobject_moc_p.h kernel/qmetaobjectbuilder.cpp kernel/qmetaobjectbuilder_p.h kernel/qmetatype.cpp kernel/qmetatype.h kernel/qmetatype_p.h - kernel/qmetatypeswitcher_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/qpropertybinding.cpp kernel/qpropertybinding_p.h kernel/qpropertyprivate.h - kernel/qsharedmemory.cpp kernel/qsharedmemory.h kernel/qsharedmemory_p.h + kernel/qsequentialiterable.cpp kernel/qsequentialiterable.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 @@ -143,32 +195,29 @@ 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/qxmlutils.cpp serialization/qxmlutils_p.h - statemachine/qabstractstate.cpp statemachine/qabstractstate.h statemachine/qabstractstate_p.h - statemachine/qabstracttransition.cpp statemachine/qabstracttransition.h statemachine/qabstracttransition_p.h - statemachine/qfinalstate.cpp statemachine/qfinalstate.h statemachine/qfinalstate_p.h - statemachine/qhistorystate.cpp statemachine/qhistorystate.h statemachine/qhistorystate_p.h - statemachine/qsignaleventgenerator_p.h - statemachine/qsignaltransition.cpp statemachine/qsignaltransition.h statemachine/qsignaltransition_p.h - statemachine/qstate.cpp statemachine/qstate.h statemachine/qstate_p.h - statemachine/qstatemachine.cpp statemachine/qstatemachine.h statemachine/qstatemachine_p.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 + text/qbytearrayview.h text/qbytedata_p.h 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/qregexp.cpp text/qregexp.h + text/qstaticlatin1stringmatcher.h text/qstring.cpp text/qstring.h - text/qstring_compat.cpp 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 @@ -178,26 +227,38 @@ qt_add_module(Core text/qtextboundaryfinder.cpp text/qtextboundaryfinder.h text/qunicodetables_p.h 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 @@ -207,15 +268,16 @@ 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 - tools/qlist.cpp tools/qlist.h + tools/qlist.h tools/qmakearray_p.h - tools/qmap.cpp tools/qmap.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 @@ -223,107 +285,133 @@ 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 tools/qshareddata.cpp tools/qshareddata.h + tools/qshareddata_impl.h 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 + WrapZLIB::WrapZLIB PRECOMPILED_HEADER "global/qt_pch.h" - NO_PCH_SOURCES - "text/qstring_compat.cpp" - LIBRARIES - Qt::GlobalConfigPrivate # special case - Threads::Threads # special case - PUBLIC_LIBRARIES # special case: - Qt::Platform # special case: -) + GENERATE_CPP_EXPORTS + PUBLIC_LIBRARIES + Qt::Platform + EXTRA_CMAKE_FILES + "${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) -# 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) +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, 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() + +# 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/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 ) @@ -339,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 @@ -354,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 QT_FEATURE_version_tagging + 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="_${CMAKE_SYSTEM_PROCESSOR}.so" + 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 @@ -440,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 @@ -450,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 @@ -478,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 @@ -492,9 +598,20 @@ qt_extend_target(Core CONDITION APPLE 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} @@ -502,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 @@ -516,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 @@ -669,107 +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_internal_extend_target(Core CONDITION NOT QT_FEATURE_system_zlib + LIBRARIES + Qt::ZlibPrivate ) -qt_extend_target(Core CONDITION MSVC +qt_internal_extend_target(Core CONDITION QT_FEATURE_commandlineparser SOURCES - tools/qvector_msvc.cpp - NO_PCH_SOURCES - "tools/qvector_msvc.cpp" + tools/qcommandlineoption.cpp tools/qcommandlineoption.h + tools/qcommandlineparser.cpp tools/qcommandlineparser.h ) -qt_extend_target(Core CONDITION QT_FEATURE_system_zlib +qt_internal_extend_target(Core CONDITION QT_FEATURE_backtrace + DEFINES + BACKTRACE_HEADER="${Backtrace_HEADER}" 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 + WrapBacktrace::WrapBacktrace ) -qt_extend_target(Core CONDITION QT_FEATURE_commandlineparser - SOURCES - tools/qcommandlineoption.cpp tools/qcommandlineoption.h - tools/qcommandlineparser.cpp tools/qcommandlineparser.h +qt_internal_extend_target(Core CONDITION QT_FEATURE_system_doubleconversion + LIBRARIES + 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/double-conversion + ../3rdparty/double-conversion ) -qt_extend_target(Core CONDITION QT_FEATURE_system_doubleconversion +qt_internal_extend_target(Core CONDITION QT_FEATURE_system_libb2 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 - INCLUDE_DIRECTORIES - ../3rdparty/double-conversion/.. - ../3rdparty/double-conversion/include + 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 - kernel/qelapsedtimer_mac.cpp 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 @@ -777,186 +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 UNIX 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 ANDROID AND NOT ANDROID_EMBEDDED +qt_internal_extend_target(Core CONDITION ANDROID SOURCES io/qstandardpaths_android.cpp - io/qstorageinfo_unix.cpp - kernel/qjni.cpp kernel/qjni_p.h + 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 - kernel/qjnionload.cpp + 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_internal_extend_target(Core CONDITION QT_FEATURE_cpp_winrt + SOURCES + 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 @@ -964,150 +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 NACL - SOURCES - kernel/qfunctions_nacl.cpp kernel/qfunctions_nacl.h -) - -qt_extend_target(Core CONDITION INTEGRITY OR (NACL AND UNIX) OR (UNIX AND NOT APPLE) - SOURCES - kernel/qelapsedtimer_unix.cpp -) - -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_extend_target(Core CONDITION QT_FEATURE_cborstreamreader +qt_internal_extend_target(Core CONDITION QT_FEATURE_sysv_sem SOURCES - serialization/qcborstreamreader.cpp serialization/qcborstreamreader.h + ipc/qsystemsemaphore_systemv.cpp ) -qt_extend_target(Core CONDITION QT_FEATURE_cborstreamwriter +qt_internal_extend_target(Core CONDITION VXWORKS SOURCES - serialization/qcborstreamwriter.cpp serialization/qcborstreamwriter.h + io/qstandardpaths_unix.cpp + io/qstorageinfo_stub.cpp ) -qt_extend_target(Core CONDITION QT_FEATURE_binaryjson +qt_internal_extend_target(Core CONDITION QT_FEATURE_cborstreamreader SOURCES - serialization/qbinaryjson.cpp serialization/qbinaryjson_p.h - serialization/qbinaryjsonarray.cpp serialization/qbinaryjsonarray_p.h - serialization/qbinaryjsonobject.cpp serialization/qbinaryjsonobject_p.h - serialization/qbinaryjsonvalue.cpp serialization/qbinaryjsonvalue_p.h + 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_qeventtransition +qt_internal_extend_target(Core CONDITION QT_FEATURE_cborstreamwriter SOURCES - statemachine/qeventtransition.cpp statemachine/qeventtransition.h statemachine/qeventtransition_p.h + 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 @@ -1118,110 +1203,173 @@ qt_extend_target(Core CONDITION QT_FEATURE_mimetype mimetypes/qmimetypeparser.cpp mimetypes/qmimetypeparser_p.h ) -#### Keys ignored in scope 180:.: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 181:.: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 182:.:mimetypes:mimetypes/mimetypes.pri:ANDROID: -# outpath = "$$outpath/$${QT_ARCH}" - -#### Keys ignored in scope 184:.:mimetypes:mimetypes/mimetypes.pri:(CMAKE_BUILD_TYPE STREQUAL Debug): -# outpath = "$$outpath/debug" - -#### Keys ignored in scope 185:.:mimetypes:mimetypes/mimetypes.pri:else: -# outpath = "$$outpath/release" - -#### Keys ignored in scope 186:.: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 187:.:mimetypes:mimetypes/mimetypes.pri:else: -# mimedb.commands = "perl" "$${mimedb.depends}" - -#### Keys ignored in scope 188:.: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) @@ -1232,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>") + + 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 $<$<AND:${isExe},${isWin32},${isNotExcluded},${isPolicyNEW}>:Qt::WinMain>) - qt_record_extra_qt_package_dependency(Core WinMain "${PROJECT_VERSION}") + target_link_libraries(Core INTERFACE + "$<${entrypoint_conditions}:${QT_CMAKE_EXPORT_NAMESPACE}::EntryPointPrivate>" + ) endif() # Record darwin minimum deployment target. @@ -1249,21 +1410,113 @@ 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) -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() -# special case end + +if(IOS) + qt_internal_set_apple_privacy_manifest(Core + "${CMAKE_CURRENT_SOURCE_DIR}/platform/ios/PrivacyInfo.xcprivacy") +endif() + +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*" +) + +function(qt_internal_library_deprecation_level) + # QT_DISABLE_DEPRECATED_UP_TO controls which version we use as a cut-off + # compiling in to the library. E.g. if it is set to QT_VERSION then no + # code which was deprecated before QT_VERSION will be compiled in. + if(NOT DEFINED QT_DISABLE_DEPRECATED_UP_TO) + if(WIN32) + # On Windows, due to the way DLLs work, we need to export all functions, + # including the inlines + set(QT_DISABLE_DEPRECATED_UP_TO "0x040800") + else() + # On other platforms, Qt's own compilation does need to compile the Qt 5.0 API + set(QT_DISABLE_DEPRECATED_UP_TO "0x050000") + endif() + elseif(NOT QT_DISABLE_DEPRECATED_UP_TO MATCHES "^0x[0-9][0-9][0-9][0-9][0-9][0-9]$") + message(FATAL_ERROR "Ivalid format of the QT_DISABLE_DEPRECATED_UP_TO macro:" + " ${QT_DISABLE_DEPRECATED_UP_TO}. The expected format is the hexadecimal number," + " e.g. 0x060102") + endif() + # QT_WARN_DEPRECATED_UP_TO controls the upper-bound of deprecation + # warnings that are emitted. E.g. if it is set to 0x060500 then all use of + # things deprecated in or before 6.5.0 will be warned against. + set(QT_WARN_DEPRECATED_UP_TO 0x070000) + + set(output_header "${CMAKE_CURRENT_BINARY_DIR}/global/qtdeprecationdefinitions.h") + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/global/qtdeprecationdefinitions.h.in" + "${output_header}" + @ONLY + NEWLINE_STYLE UNIX + ) + + target_sources(Core PRIVATE "${output_header}") + set_source_files_properties("${output_header}" PROPERTIES GENERATED TRUE) +endfunction() +qt_internal_library_deprecation_level() |