diff options
Diffstat (limited to 'src/corelib/CMakeLists.txt')
-rw-r--r-- | src/corelib/CMakeLists.txt | 927 |
1 files changed, 527 insertions, 400 deletions
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index cd79a9f0c2..ce3def3cd6 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -1,20 +1,8 @@ -# 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 @@ -24,7 +12,6 @@ if(WASM) set(corelib_extra_cmake_files "${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}WasmMacros.cmake") endif() -# special case end ##################################################################### ## Core Module: @@ -35,42 +22,88 @@ qt_internal_add_module(Core 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.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/qlibraryinfo.cpp global/qlibraryinfo.h global/qlibraryinfo_p.h - global/qlogging.cpp global/qlogging.h - global/qmalloc.cpp + 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.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/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 @@ -87,9 +120,9 @@ qt_internal_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 @@ -98,20 +131,21 @@ qt_internal_add_module(Core io/qurlidna.cpp io/qurlquery.cpp io/qurlquery.h io/qurlrecode.cpp + 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 @@ -121,24 +155,25 @@ qt_internal_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 + 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 @@ -160,12 +195,9 @@ qt_internal_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 @@ -174,13 +206,18 @@ qt_internal_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 @@ -192,25 +229,36 @@ qt_internal_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 @@ -220,7 +268,7 @@ qt_internal_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 @@ -228,7 +276,8 @@ qt_internal_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 @@ -245,52 +294,69 @@ qt_internal_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 + "${CMAKE_CURRENT_BINARY_DIR}/global" "${CMAKE_CURRENT_BINARY_DIR}/kernel" # for moc_qobject.cpp to be found by qobject.cpp - # ../3rdparty/md4 # special case remove - # ../3rdparty/md5 # special case remove - # ../3rdparty/sha3 # special case remove ../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" - "${CMAKE_CURRENT_SOURCE_DIR}/Qt6CoreConfigureFileTemplate.in" - ${corelib_extra_cmake_files} - # special case end -) - -set(corelib_no_pch_sources - compat/removed_api.cpp - kernel/qmetatype.cpp + "${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() -foreach(src ${corelib_no_pch_sources}) - qt_update_ignore_pch_source(Core ${src}) -endforeach() - -# special case begin add_dependencies(Core qmodule_pri) if (NOT QT_NAMESPACE STREQUAL "") - target_compile_definitions(Core PUBLIC "QT_NAMESPACE=${QT_NAMESPACE}") + 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() @@ -311,7 +377,7 @@ endif() # 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 +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 @@ -323,23 +389,29 @@ set_source_files_properties(${qobject_moc_files} PROPERTIES HEADER_FILE_ONLY ON) set(core_metatype_args MANUAL_MOC_JSON_FILES ${core_qobject_metatypes_json_list}) if(QT_WILL_INSTALL) - set(metatypes_install_dir ${INSTALL_LIBDIR}/metatypes) + set(metatypes_install_dir ${INSTALL_ARCHDATADIR}/metatypes) list(APPEND core_metatype_args __QT_INTERNAL_INSTALL __QT_INTERNAL_INSTALL_DIR "${metatypes_install_dir}") endif() -# Use qt6_extract_metatypes instead of GENERATE_METATYPES so that we can manually pass the + +# Use qt6_extract_metatypes instead so that we can manually pass the # additional json files. qt6_extract_metatypes(Core ${core_metatype_args}) -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") +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 +) # 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 ) @@ -355,7 +427,6 @@ 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_internal_add_simd_part(Core SIMD mips_dsp SOURCES @@ -370,70 +441,48 @@ endif() if(ANDROID) set_property(TARGET Core APPEND PROPERTY QT_ANDROID_BUNDLED_JAR_DEPENDENCIES - jar/Qt${QtBase_VERSION_MAJOR}Android.jar # special case + 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_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_internal_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_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 + global/qsimd_x86_p.h +) qt_internal_extend_target(Core CONDITION ANDROID - SOURCES - kernel/qsharedmemory_android.cpp - kernel/qsystemsemaphore_android.cpp DEFINES - LIBS_SUFFIX="_${ANDROID_ABI}.so" # special case + LIBS_SUFFIX="_${ANDROID_ABI}.so" ) qt_internal_extend_target(Core CONDITION MSVC AND (TEST_architecture_arch STREQUAL "i386") @@ -441,12 +490,11 @@ qt_internal_extend_target(Core CONDITION MSVC AND (TEST_architecture_arch STREQU "/BASE:0x67000000" ) -# QtCore can't be compiled with -Wl,-no-undefined because it uses the -# "environ" variable and FreeBSD does not include a weak symbol for it -# in libc. -qt_internal_extend_target(Core CONDITION FREEBSD - LINK_OPTIONS - "LINKER:--warn-unresolved-symbols" +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_internal_extend_target(Core CONDITION QT_FEATURE_animation @@ -466,7 +514,7 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_animation # from the wrong DLL at runtime and crash! qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND WIN32 SOURCES - thread/qmutex_win.cpp + thread/qfutex_win_p.h thread/qwaitcondition_win.cpp LIBRARIES synchronization @@ -475,6 +523,7 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND WIN32 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 @@ -482,17 +531,17 @@ qt_internal_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/qthread_win.cpp - # DEFINES # special case: remove + platform/windows/qcomobject_p.h LIBRARIES advapi32 authz @@ -510,6 +559,31 @@ qt_internal_extend_target(Core CONDITION WIN32 userenv ) +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 @@ -520,11 +594,21 @@ qt_internal_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_internal_extend_target(Core CONDITION MACOS @@ -535,7 +619,6 @@ qt_internal_extend_target(Core CONDITION MACOS ${FWSecurity} PUBLIC_LIBRARIES ${FWDiskArbitration} - ${FWIOKit} ) qt_internal_extend_target(Core CONDITION INTEGRITY @@ -549,30 +632,12 @@ qt_internal_extend_target(Core CONDITION INTEGRITY --pending_instantiations=128 ) -# Workaround for QTBUG-90353 -# Remove if MinGW (our only supported gcc version < 9) is no longer supported -qt_internal_extend_target(Core CONDITION GCC AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0.0") - PUBLIC_COMPILE_OPTIONS -Wno-error=invalid-offsetof +# 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 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" - -# special case begin -# Remove this because it's handled manually -#qt_internal_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_internal_extend_target(Core CONDITION LINUX AND QT_BUILD_SHARED_LIBS SOURCES global/minimum-linux_p.h @@ -588,16 +653,6 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_journald PkgConfig::Libsystemd ) -set(core_version_tagging_files global/qversiontagging.cpp global/qversiontagging.h) -target_sources(Core PRIVATE ${core_version_tagging_files}) - -# Disable LTO, as the symbols disappear somehow under GCC -# (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48200) -if(GCC) - set_source_files_properties(${core_version_tagging_files} - PROPERTIES COMPILE_OPTIONS "-fno-lto") -endif() - qt_internal_extend_target(Core CONDITION UNIX SOURCES io/qfilesystemengine_unix.cpp @@ -605,26 +660,29 @@ qt_internal_extend_target(Core CONDITION UNIX 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_internal_extend_target(Core CONDITION UNIX AND NOT WASM + SOURCES + kernel/qeventdispatcher_unix.cpp kernel/qeventdispatcher_unix_p.h +) qt_internal_extend_target(Core CONDITION QT_FEATURE_thread SOURCES - thread/qatomic.cpp thread/qatomic.h - thread/qatomic_bootstrap.h - thread/qatomic_cxx11.h - thread/qbasicatomic.h + 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 ) @@ -636,6 +694,7 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND UNIX qt_internal_extend_target(Core CONDITION APPLE AND QT_FEATURE_thread SOURCES + thread/qfutex_mac_p.h thread/qmutex_mac.cpp ) @@ -644,6 +703,16 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND UNIX AND NOT APPL thread/qmutex_unix.cpp ) +qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND FREEBSD + SOURCES + thread/qfutex_freebsd_p.h +) + +qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND LINUX + SOURCES + thread/qfutex_linux_p.h +) + qt_internal_extend_target(Core CONDITION QT_FEATURE_future SOURCES thread/qexception.cpp thread/qexception.h @@ -661,30 +730,9 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_std_atomic64 WrapAtomic::WrapAtomic ) -qt_internal_extend_target(Core CONDITION QT_FEATURE_system_zlib - LIBRARIES - WrapZLIB::WrapZLIB -) - qt_internal_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 + LIBRARIES + Qt::ZlibPrivate ) qt_internal_extend_target(Core CONDITION QT_FEATURE_commandlineparser @@ -694,13 +742,15 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_commandlineparser ) 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 + WrapSystemDoubleConversion::WrapSystemDoubleConversion ) qt_internal_extend_target(Core CONDITION QT_FEATURE_doubleconversion AND NOT QT_FEATURE_system_doubleconversion @@ -746,12 +796,12 @@ qt_internal_extend_target(Core CONDITION UNIX AND NOT HAIKU AND NOT INTEGRITY AN m ) -qt_internal_extend_target(Core CONDITION APPLE AND NOT NACL +qt_internal_extend_target(Core CONDITION APPLE SOURCES text/qlocale_mac.mm ) -qt_internal_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 ) @@ -761,8 +811,13 @@ qt_internal_extend_target(Core CONDITION WIN32 text/qlocale_win.cpp ) +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 WIN32 AND MSVC AND NOT CLANG +qt_internal_extend_target(Core CONDITION MSVC LIBRARIES runtimeobject ) @@ -797,6 +852,11 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_regularexpression WrapPCRE2::WrapPCRE2 ) +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 @@ -816,39 +876,50 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_jalalicalendar 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_internal_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_internal_extend_target(Core CONDITION QT_FEATURE_timezone AND ANDROID 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_internal_extend_target(Core CONDITION QT_FEATURE_timezone AND UNIX AND 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_internal_extend_target(Core CONDITION QT_FEATURE_icu AND QT_FEATURE_timezone AND UNIX AND 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_internal_extend_target(Core CONDITION QT_FEATURE_icu AND QT_FEATURE_timezone AND WIN32 AND 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_internal_extend_target(Core CONDITION QT_FEATURE_timezone AND WIN32 AND NOT QT_FEATURE_icu AND 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_internal_extend_target(Core CONDITION QT_FEATURE_datetimeparser @@ -858,7 +929,7 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_datetimeparser qt_internal_extend_target(Core CONDITION QT_FEATURE_zstd LIBRARIES - ZSTD::ZSTD + WrapZSTD::WrapZSTD ) qt_internal_extend_target(Core CONDITION QT_FEATURE_filesystemwatcher @@ -912,7 +983,7 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_settings AND WIN32 io/qsettings_win.cpp ) -qt_internal_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 ) @@ -930,7 +1001,7 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_filesystemiterator AND WIN32 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 ) @@ -945,20 +1016,30 @@ qt_internal_extend_target(Core CONDITION APPLE AND NOT MACOS ${FWMobileCoreServices} ) -qt_internal_extend_target(Core CONDITION UNIX AND NOT APPLE - SOURCES - kernel/qelapsedtimer_unix.cpp -) - qt_internal_extend_target(Core CONDITION ANDROID SOURCES io/qstandardpaths_android.cpp - io/qstorageinfo_unix.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_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_internal_extend_target(Core CONDITION HAIKU AND NOT ANDROID @@ -969,12 +1050,19 @@ qt_internal_extend_target(Core CONDITION HAIKU AND NOT ANDROID be ) -qt_internal_extend_target(Core CONDITION UNIX AND NOT APPLE AND NOT HAIKU AND 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_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 @@ -1031,12 +1119,12 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_library AND UNIX AND NOT APP plugin/qlibrary_unix.cpp ) -qt_internal_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_internal_extend_target(Core CONDITION APPLE AND (IOS OR TVOS) +qt_internal_extend_target(Core CONDITION APPLE AND UIKIT LIBRARIES ${FWUIKit} ) @@ -1058,34 +1146,50 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_glib AND UNIX GLIB2::GLIB2 ) -qt_internal_extend_target(Core CONDITION QT_FEATURE_clock_gettime AND UNIX +qt_internal_extend_target(Core CONDITION QT_FEATURE_clock_gettime LIBRARIES WrapRt::WrapRt ) -qt_internal_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_internal_extend_target(Core CONDITION QT_FEATURE_sysv_shm + SOURCES + ipc/qsharedmemory_systemv.cpp +) +qt_internal_extend_target(Core CONDITION QT_FEATURE_posix_sem + SOURCES + ipc/qsystemsemaphore_posix.cpp + LIBRARIES + WrapRt::WrapRt +) +qt_internal_extend_target(Core CONDITION QT_FEATURE_sysv_sem + SOURCES + ipc/qsystemsemaphore_systemv.cpp ) qt_internal_extend_target(Core CONDITION VXWORKS SOURCES - kernel/qfunctions_vxworks.cpp kernel/qfunctions_vxworks.h + 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_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_internal_extend_target(Core CONDITION QT_FEATURE_mimetype @@ -1099,165 +1203,154 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_mimetype mimetypes/qmimetypeparser.cpp mimetypes/qmimetypeparser_p.h ) -#### Keys ignored in scope 171:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_mimetype: -# MIME_DATABASE = "mimetypes/mime/packages/freedesktop.org.xml" -# OTHER_FILES = "$$MIME_DATABASE" - -# special case begin -# qt_internal_extend_target(Core CONDITION QT_FEATURE_mimetype AND QT_FEATURE_mimetype_database -# INCLUDE_DIRECTORIES -# .rcc -#) -# special case end - -#### Keys ignored in scope 172:.: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 173:.:mimetypes:mimetypes/mimetypes.pri:ANDROID: -# outpath = "$$outpath/$${QT_ARCH}" - -#### Keys ignored in scope 175:.:mimetypes:mimetypes/mimetypes.pri:(CMAKE_BUILD_TYPE STREQUAL Debug): -# outpath = "$$outpath/debug" - -#### Keys ignored in scope 176:.:mimetypes:mimetypes/mimetypes.pri:else: -# outpath = "$$outpath/release" - -#### Keys ignored in scope 177:.: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 178:.:mimetypes:mimetypes/mimetypes.pri:else: -# mimedb.commands = "perl" "$${mimedb.depends}" - -#### Keys ignored in scope 179:.: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. -if(QT_FEATURE_mimetype AND QT_FEATURE_mimetype_database) - include(${CMAKE_CURRENT_SOURCE_DIR}/mimetypes/mimetypes_resources.cmake) +qt_internal_extend_target(Core CONDITION QT_FEATURE_permissions + SOURCES + kernel/qpermissions.cpp kernel/qpermissions.h kernel/qpermissions_p.h +) -# Generate qmimeprovider_database.cpp - set(qmimeprovider_db_output_dir "${CMAKE_CURRENT_BINARY_DIR}/.rcc") - set(qmimeprovider_db_output "${qmimeprovider_db_output_dir}/qmimeprovider_database.cpp") - if(CMAKE_VERSION VERSION_LESS 3.18 OR QT_AVOID_CMAKE_ARCHIVING_API) - 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" ) - else() - file(MAKE_DIRECTORY ${qmimeprovider_db_output_dir}) - list(APPEND command_args perl "${mime_dir}/generate.pl" ) - endif() +if(QT_FEATURE_permissions AND APPLE) + qt_internal_extend_target(Core + SOURCES + kernel/qpermissions_darwin.mm + platform/darwin/qdarwinpermissionplugin.mm + PLUGIN_TYPES + permissions + ) - if (QT_FEATURE_zstd) - list(APPEND command_args "--zstd") - endif() + 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" + ) - list(APPEND command_args "${corelib_mimetypes_resource_file}" ">" "${qmimeprovider_db_output}") + # Contacts + qt_internal_extend_target(QDarwinContactsPermissionPlugin + LIBRARIES ${FWContacts} + ) - add_custom_command(OUTPUT "${qmimeprovider_db_output}" - DEPENDS ${command_depends} - COMMAND ${command_args} - COMMENT "Generating ${qmimeprovider_db_output}" + # 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() - if(QT_FEATURE_zstd) - if(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() - set(qmime_db_compression Zstd) - string(APPEND qmime_db_content "#define MIME_DATABASE_IS_ZSTD\n") - else() - set(qmime_db_compression GZip) - string(APPEND qmime_db_content "#define MIME_DATABASE_IS_GZIP\n") - endif() + set_property(TARGET QDarwinLocationPermissionPlugin PROPERTY + _qt_info_plist_usage_descriptions + "NSLocationWhenInUseUsageDescription" + "NSLocationAlwaysAndWhenInUseUsageDescription" + ) + endif() +endif() - file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/.rcc") - get_filename_component(mime_types_resource_file "${corelib_mimetypes_resource_file}" NAME) +qt_internal_extend_target(Core CONDITION QT_FEATURE_permissions AND ANDROID + SOURCES + kernel/qpermissions_android.cpp +) - set(mimetypes_resource_file_minified "${CMAKE_CURRENT_BINARY_DIR}/.rcc/${mime_types_resource_file}") +qt_internal_extend_target(Core CONDITION QT_FEATURE_permissions AND WASM + SOURCES + kernel/qpermissions_wasm.cpp +) - set(mimetypes_resfile_timestamp_file "${CMAKE_CURRENT_BINARY_DIR}/.rcc/${mime_types_resource_file}.timestamp") - file(TIMESTAMP "${corelib_mimetypes_resource_file}" mimetypes_resfile_timestamp) +if(QT_FEATURE_mimetype AND QT_FEATURE_mimetype_database) + include(${CMAKE_CURRENT_SOURCE_DIR}/mimetypes/mimetypes_resources.cmake) - set(compute_db_archive ON) - if (EXISTS "${mimetypes_resfile_timestamp_file}") - file(READ "${mimetypes_resfile_timestamp_file}" old_mimetypes_resfile_timestamp) - if ("${mimetypes_resfile_timestamp}" STREQUAL "${old_mimetypes_resfile_timestamp}") - set(compute_db_archive OFF) - endif() + if(CMAKE_VERSION VERSION_LESS 3.18 OR QT_AVOID_CMAKE_ARCHIVING_API) + set(archiving_api "External") + else() + 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 (compute_db_archive) - find_program(xmlstarlet NAMES xmlstarlet xml) - if (xmlstarlet) - execute_process( - COMMAND "${xmlstarlet}" sel -D -B -t -c / "${corelib_mimetypes_resource_file}" - OUTPUT_FILE "${mimetypes_resource_file_minified}" - RESULT_VARIABLE failed_to_minify - ) - if (NOT failed_to_minify) - set(corelib_mimetypes_resource_file "${mimetypes_resource_file_minified}") - endif() - else() - message(STATUS "xmlstarlet command was not found. ${mime_types_resource_file} will not be minified.") - endif() - - if (CMAKE_VERSION GREATER_EQUAL 3.19) - set(additional_file_archive_create_parameters COMPRESSION_LEVEL 9) - endif() - - file(ARCHIVE_CREATE OUTPUT "${qmimeprovider_db_output}.archive" - PATHS "${corelib_mimetypes_resource_file}" - FORMAT raw - COMPRESSION ${qmime_db_compression} - ${additional_file_archive_create_parameters} - ) - file(READ "${qmimeprovider_db_output}.archive" qmime_db_archive HEX) - file(SIZE "${qmimeprovider_db_output}.archive" qmime_db_archive_size) - file(SIZE "${corelib_mimetypes_resource_file}" qmime_db_resource_size) - file(REMOVE ${qmimeprovider_db_output}.archive) - - string(APPEND qmime_db_content "static const unsigned char mimetype_database[] = { ") - - string(REGEX MATCHALL "([a-f0-9][a-f0-9])" qmime_db_hex "${qmime_db_archive}") - - list(TRANSFORM qmime_db_hex PREPEND "0x") - math(EXPR qmime_db_archive_size "${qmime_db_archive_size} - 1") - foreach(index RANGE 0 ${qmime_db_archive_size} 12) - list(APPEND index_list ${index}) - endforeach() - list(TRANSFORM qmime_db_hex PREPEND "\n " AT ${index_list}) - list(JOIN qmime_db_hex ", " qmime_db_hex_joined) - - string(APPEND qmime_db_content "${qmime_db_hex_joined}") - string(APPEND qmime_db_content "\n};\n") - string(APPEND qmime_db_content "static constexpr size_t MimeTypeDatabaseOriginalSize = ${qmime_db_resource_size};\n") - - file(WRITE "${qmimeprovider_db_output}" "${qmime_db_content}") - - file(WRITE "${mimetypes_resfile_timestamp_file}" "${mimetypes_resfile_timestamp}") + 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() - 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") -endif() + 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() -# special case end + # Generate qmimeprovider_database.cpp + set(qmimeprovider_db_output "${CMAKE_CURRENT_BINARY_DIR}/.rcc/qmimeprovider_database.cpp") + add_custom_command(OUTPUT "${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 + ) + + 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() qt_internal_extend_target(Core CONDITION WASM SOURCES @@ -1265,12 +1358,18 @@ qt_internal_extend_target(Core CONDITION WASM kernel/qeventdispatcher_wasm.cpp kernel/qeventdispatcher_wasm_p.h ) +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_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) @@ -1283,7 +1382,7 @@ qt_internal_apply_gc_binaries_conditional(Core PUBLIC) # 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 CMAKE_SYSTEM_NAME STREQUAL "iOS") +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. @@ -1311,24 +1410,20 @@ 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_internal_create_tracepoints(Core qtcore.tracepoints) +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_internal_add_module(ZlibPrivate - INTERNAL_MODULE - HEADER_MODULE - NO_CONFIG_HEADER_FILE - ) -endif() - qt_internal_add_optimize_full_flags() # Copy / install an lldb python script into the QtCore.framework.dSYM bundle which searches @@ -1357,3 +1452,35 @@ if(APPLE AND QT_FEATURE_framework AND QT_FEATURE_separate_debug_info) DESTINATION "${dsym_script_install_dir}" ) endif() + +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*" +) |