Revision control
Copy as Markdown
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
qt_find_package(WrapPCRE2 MODULE PROVIDED_TARGETS WrapPCRE2::WrapPCRE2)
qt_internal_extend_sbom(WrapPCRE2::WrapPCRE2
CPE_VENDOR "pcre"
CPE_PRODUCT "pcre2"
)
qt_find_package(WrapZLIB MODULE PROVIDED_TARGETS WrapZLIB::WrapZLIB)
qt_internal_extend_sbom(WrapZLIB::WrapZLIB
CPE_VENDOR "zlib"
CPE_PRODUCT "zlib"
)
if(ANDROID)
set(corelib_extra_cmake_files
"${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}AndroidMacros.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}AndroidDynamicFeatureHelpers.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}AndroidGradleHelpers.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}AndroidPermissionHelpers.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/QtAndroidScanQmlImports.cmake"
)
endif()
if(OHOS)
set(corelib_extra_cmake_files
"${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}HarmonyOSBlockingTestDialogHelpers.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}HarmonyOSMacros.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}HarmonyOSPermissionHelpers.cmake"
)
endif()
if(WASM)
set(corelib_extra_cmake_files
"${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}WasmMacros.cmake")
endif()
#####################################################################
## Core Module:
#####################################################################
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/qalloc.cpp global/qalloc.h
global/qassert.cpp global/qassert.h
global/qcheckedint_impl.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.h
global/qexpected_p.h
global/qflags.h
global/qfloat16.cpp global/qfloat16.h
global/qforeach.h
global/qfunctionpointer.h
global/qgettid_p.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/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/qstdlibdetection.h
global/qswap.h
global/qsysinfo.cpp global/qsysinfo.h
global/qsystemdetection.h
global/qtclasshelpermacros.h
global/qtclasshelper_p.h
global/qtconfiginclude.h
global/qtconfigmacros.h
global/qtcoreglobal.h global/qtcoreglobal_p.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/q17memory.h
global/q20algorithm.h
global/q20atomic.h
global/q20bit.h
global/q20chrono.h
global/q20functional.h
global/q20iterator.h
global/q20map.h
global/q20memory.h
global/q20type_traits.h
global/q20utility.h
global/q20vector.h
global/q23functional.h
global/q23utility.cpp # remove once we have a user that tests this
global/q23type_traits.h
global/q23utility.h
global/q26numeric.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_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
io/qfilesystemengine.cpp io/qfilesystemengine_p.h
io/qfilesystementry.cpp io/qfilesystementry_p.h
io/qfilesystemiterator_p.h
io/qfilesystemmetadata_p.h
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/qloggingcategory_p.h
io/qloggingregistry.cpp io/qloggingregistry_p.h
io/qnoncontiguousbytedevice.cpp io/qnoncontiguousbytedevice_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_p.h
io/qstandardpaths.cpp io/qstandardpaths.h
io/qstorageinfo.cpp io/qstorageinfo.h io/qstorageinfo_p.h
io/qtemporarydir.cpp io/qtemporarydir.h
io/qtemporaryfile.cpp io/qtemporaryfile.h io/qtemporaryfile_p.h
io/qurl.cpp io/qurl.h io/qurl_p.h
io/qurlidna.cpp
io/qurlquery.cpp io/qurlquery.h
io/qurlrecode.cpp
io/wcharhelpers_win_p.h
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/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_p.h
kernel/qfunctions_p.h
kernel/qiterable.cpp kernel/qiterable.h kernel/qiterable_impl.h
kernel/qmath.cpp kernel/qmath.h
kernel/qmetaassociation.cpp kernel/qmetaassociation.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/qmetasequence.cpp kernel/qmetasequence.h
kernel/qmetatype.cpp kernel/qmetatype.h kernel/qmetatype_p.h
kernel/qmimedata.cpp kernel/qmimedata.h
kernel/qtmetamacros.h kernel/qtmocconstants.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.h
kernel/qproperty.cpp kernel/qproperty.h kernel/qproperty_p.h
kernel/qpropertyprivate.h
kernel/qsequentialiterable.cpp kernel/qsequentialiterable.h
kernel/qsignalmapper.cpp kernel/qsignalmapper.h
kernel/qsingleshottimer.cpp kernel/qsingleshottimer_p.h
kernel/qsocketnotifier.cpp kernel/qsocketnotifier.h
kernel/qsystemerror.cpp kernel/qsystemerror_p.h
kernel/qtestsupport_core.cpp kernel/qtestsupport_core.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
parse/qtparsecommon_p.h
plugin/qfactoryinterface.cpp plugin/qfactoryinterface.h
plugin/qfactoryloader.cpp plugin/qfactoryloader_p.h
plugin/qplugin.h plugin/qplugin_p.h
plugin/qpluginloader.cpp plugin/qpluginloader.h
plugin/quuid.cpp plugin/quuid.h plugin/quuid_p.h
serialization/qcborarray.h
serialization/qcborcommon.cpp serialization/qcborcommon.h serialization/qcborcommon_p.h
serialization/qcbordiagnostic.cpp
serialization/qcbormap.h
serialization/qcborstream.h
serialization/qcborvalue.cpp serialization/qcborvalue.h serialization/qcborvalue_p.h
serialization/qdatastream.cpp serialization/qdatastream.h
serialization/qjson_p.h
serialization/qjsonarray.cpp serialization/qjsonarray.h
serialization/qjsoncbor.cpp
serialization/qjsondocument.cpp serialization/qjsondocument.h
serialization/qjsonobject.cpp serialization/qjsonobject.h
serialization/qjsonparseerror.h
serialization/qjsonparser.cpp serialization/qjsonparser_p.h
serialization/qjsonvalue.cpp serialization/qjsonvalue.h
serialization/qjsonwriter.cpp serialization/qjsonwriter_p.h
serialization/qtextstream.cpp serialization/qtextstream.h serialization/qtextstream_p.h
serialization/qxmlutils.cpp serialization/qxmlutils_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/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_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
text/qstringmatcher.h
text/qstringtokenizer.cpp text/qstringtokenizer.h
text/qstringview.cpp text/qstringview.h
text/qtextboundaryfinder.cpp text/qtextboundaryfinder.h
text/qtformat_impl.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/qatomicwait.cpp thread/qatomicwait_p.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_p.h
thread/qthreadstorage.h
thread/qthreadpool.cpp thread/qthreadpool_p.h thread/qthreadpool.h
thread/qsemaphore.cpp thread/qsemaphore.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/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
tools/qcontainertools_impl.h
tools/qcontiguouscache.cpp tools/qcontiguouscache.h
tools/qcryptographichash.cpp tools/qcryptographichash.h
tools/qduplicatetracker_p.h
tools/qflatmap_p.h
tools/qfreelist.cpp tools/qfreelist_p.h
tools/qfunctionaltools_impl.cpp tools/qfunctionaltools_impl.h
tools/qhashfunctions.h
tools/qiterator.h
tools/qline.cpp tools/qline.h
tools/qlist.h
tools/qmakearray_p.h
tools/qmap.h
tools/qmargins.cpp tools/qmargins.h
tools/qmessageauthenticationcode.h
tools/qminimalflatset_p.h
tools/qoffsetstringarray_p.h
tools/qpair.h
tools/qpoint.cpp tools/qpoint.h
tools/qquasivirtual_impl.h
tools/qqueue.h
tools/qrect.cpp tools/qrect.h
tools/qrefcount.cpp tools/qrefcount.h
tools/qringbuffer.cpp tools/qringbuffer_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/qsmallbytearray_p.h
tools/qspan.h
tools/qstack.h
tools/qtaggedpointer.h
tools/qtools_p.h
tools/qtyperevision.cpp tools/qtyperevision.h
tools/quniquehandle_p.h
tools/quniquehandle_types.cpp tools/quniquehandle_types_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/qassert.cpp # Windows: inconsistent linkage of qAbort()
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
io/qresource.cpp # QTBUG-132114
NO_PCH_SOURCES
compat/removed_api.cpp
global/qsimd.cpp
kernel/qsocketnotifier.cpp # defines BUILDING_QSOCKETNOTIFIER
kernel/qobject.cpp # undef QT_NO_DISCONNECT_CONST_CONNECTION
DEFINES
QT_NO_CONTEXTLESS_CONNECT
QT_NO_QPAIR
QT_NO_USING_NAMESPACE
QT_TYPESAFE_FLAGS
QT_USE_NODISCARD_FILE_OPEN
INCLUDE_DIRECTORIES
"${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"
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
QTP0007
QTP0008
ATTRIBUTION_FILE_DIR_PATHS
text
global
../3rdparty/siphash
../3rdparty/blake2
../3rdparty/md4
../3rdparty/md5
../3rdparty/sha1
../3rdparty/sha3
../3rdparty/rfc6234
../3rdparty/tinycbor
ELF_LINKER_DYNAMIC_LIST
QtCore.dynlist.in
)
_qt_internal_setup_deploy_support()
add_dependencies(Core qmodule_pri)
qt_internal_extend_target(Core CONDITION CMAKE_PROJECT_VERSION VERSION_LESS "7.0"
SOURCES
text/qstringconverter_base_deprecated.h
)
set_source_files_properties(text/qstringconverter_base_deprecated.h
PROPERTIES _qt_exclude_from_module_map TRUE)
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)
set_target_properties(Core PROPERTIES QT_NAMESPACE "${QT_NAMESPACE}")
set_property(TARGET Core APPEND PROPERTY EXPORT_PROPERTIES QT_NAMESPACE)
endif()
qt_generate_qconfig_cpp(global/qconfig.cpp.in global/qconfig.cpp)
set_target_properties(Core PROPERTIES INTERFACE_QT_COORD_TYPE "${QT_COORD_TYPE}")
set_property(TARGET Core APPEND PROPERTY COMPATIBLE_INTERFACE_STRING QT_COORD_TYPE)
# Handle qtConfig(thread): CONFIG += thread like in qt.prf.
# Aka if the feature is enabled, 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)
set(core_metatype_args MANUAL_MOC_JSON_FILES ${core_qobject_metatypes_json_list})
if(QT_WILL_INSTALL)
set(metatypes_install_dir ${INSTALL_ARCHDATADIR}/metatypes)
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.31")
cmake_path(SET metatypes_install_dir NORMALIZE "${metatypes_install_dir}")
endif()
list(APPEND core_metatype_args
__QT_INTERNAL_INSTALL __QT_INTERNAL_INSTALL_DIR "${metatypes_install_dir}")
endif()
# Use qt6_extract_metatypes instead so that we can manually pass the
# additional json files.
qt6_extract_metatypes(Core ${core_metatype_args})
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 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/sh
RESULT_VARIABLE readelf_ok
OUTPUT_VARIABLE readelf_output
)
if ("${readelf_ok}" STREQUAL "0"
AND "${readelf_output}" MATCHES "program interpreter: (.*)]")
set(ELF_INTERPRETER "${CMAKE_MATCH_1}" CACHE INTERNAL "ELF interpreter location")
else()
set(ELF_INTERPRETER "" CACHE INTERNAL "ELF interpreter location")
endif()
endif()
if (ELF_INTERPRETER)
target_link_options(Core PRIVATE "-Wl,-e,qt_core_boilerplate")
target_compile_definitions(Core PRIVATE ELF_INTERPRETER="${ELF_INTERPRETER}")
endif()
endif()
qt_internal_add_simd_part(Core SIMD mips_dsp
SOURCES
../gui/painting/qt_mips_asm_dsp_p.h
text/qstring_mips_dsp_asm.S
)
if(ANDROID)
_qt_internal_add_android_executable_finalizer(Core)
set_property(TARGET Core APPEND PROPERTY QT_ANDROID_BUNDLED_JAR_DEPENDENCIES
jar/Qt${QtBase_VERSION_MAJOR}Android.jar
)
set_property(TARGET Core APPEND PROPERTY QT_ANDROID_LIB_DEPENDENCIES
${INSTALL_PLUGINSDIR}/platforms/libplugins_platforms_qtforandroid.so
)
qt_internal_add_android_permission(Core
NAME android.permission.WRITE_EXTERNAL_STORAGE
)
qt_internal_add_android_permission(Core
NAME android.permission.INTERNET
)
endif()
if(OHOS)
_qt_internal_add_harmonyos_executable_finalizer(Core)
qt_internal_add_harmonyos_permission(Core
NAME ohos.permission.STORE_PERSISTENT_DATA
)
qt_internal_add_harmonyos_permission(Core
NAME ohos.permission.FILE_ACCESS_PERSIST
)
qt_internal_add_harmonyos_permission(Core
NAME ohos.permission.PREPARE_APP_TERMINATE
)
endif()
# 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}
)
if((GCC OR CLANG) AND NOT MSVC)
# qglobal.cpp has #include moc_qnamespace.cpp, so increase the template
# depth for it due to the size of the Qt namespace
set_source_files_properties(global/qglobal.cpp PROPERTIES
COMPILE_OPTIONS "-ftemplate-depth=2048")
endif()
if(GCC)
# Disable LTO, as the symbols disappear somehow under GCC
# This is not tested well with newer GCC versions, so we cannot say if
# issue persists or not. Assume the disabling is safer option.
set_source_files_properties(${core_version_tagging_files}
PROPERTIES COMPILE_OPTIONS "-fno-lto")
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
DEFINES
LIBS_SUFFIX="_${ANDROID_ABI}.so"
)
qt_internal_extend_target(Core CONDITION MSVC AND (TEST_architecture_arch STREQUAL "i386")
LINK_OPTIONS
"/BASE:0x67000000"
)
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
SOURCES
animation/qabstractanimation.cpp animation/qabstractanimation.h animation/qabstractanimation_p.h
animation/qanimationgroup.cpp animation/qanimationgroup.h animation/qanimationgroup_p.h
animation/qparallelanimationgroup.cpp animation/qparallelanimationgroup.h animation/qparallelanimationgroup_p.h
animation/qpauseanimation.cpp animation/qpauseanimation.h
animation/qpropertyanimation.cpp animation/qpropertyanimation.h animation/qpropertyanimation_p.h
animation/qsequentialanimationgroup.cpp animation/qsequentialanimationgroup.h animation/qsequentialanimationgroup_p.h
animation/qvariantanimation.cpp animation/qvariantanimation.h animation/qvariantanimation_p.h
)
if(QT_FEATURE_async_io)
qt_internal_extend_target(Core
SOURCES
io/qiooperation.cpp io/qiooperation_p.h io/qiooperation_p_p.h
io/qrandomaccessasyncfile.cpp io/qrandomaccessasyncfile_p.h io/qrandomaccessasyncfile_p_p.h
)
if(APPLE)
qt_internal_extend_target(Core
SOURCES
io/qrandomaccessasyncfile_darwin.mm
)
elseif((LINUX AND QT_FEATURE_liburing) OR (WIN32 AND QT_FEATURE_windows_ioring))
qt_internal_extend_target(Core
SOURCES
io/qrandomaccessasyncfile_qioring.cpp
DEFINES
QT_RANDOMACCESSASYNCFILE_QIORING
)
endif()
# This is the fallback condition that should be always available.
# TODO: try to rewrite it so that it does not depend on
# QT_FEATURE_future.
qt_internal_extend_target(Core
SOURCES
io/qrandomaccessasyncfile_threadpool.cpp
)
endif()
# 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 CYGWIN
SOURCES
global/qt_windows.h
)
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
io/qstandardpaths_win.cpp
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/qeventdispatcher_win.cpp kernel/qeventdispatcher_win_p.h
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/qwin32ticks_p.h
kernel/qwinregistry.cpp kernel/qwinregistry_p.h
plugin/qsystemlibrary.cpp plugin/qsystemlibrary_p.h
text/qlocale_win.cpp
thread/qthread_win.cpp
platform/windows/qcomobject_p.h
platform/windows/qcomptr_p.h
platform/windows/qbstr_p.h
platform/windows/qcomvariant_p.h
platform/windows/quniquehandle_types_windows.cpp platform/windows/quniquehandle_types_windows_p.h
LIBRARIES
advapi32
authz
kernel32
netapi32
ntdll
ole32
runtimeobject
shell32
user32
uuid
version
winmm
ws2_32
PUBLIC_LIBRARIES
mpr
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
kernel/qwinregistry.cpp # ntstatus.h clashes
)
qt_internal_extend_target(Core CONDITION GCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "13"
NO_UNITY_BUILD_SOURCES
io/qresource.cpp io/qresource.h io/qresource_p.h # -Werror=subobject-linkage
)
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
io/qstandardpaths_mac.mm
io/qstorageinfo_mac.cpp
kernel/qcfsocketnotifier.cpp kernel/qcfsocketnotifier_p.h
kernel/qcore_foundation.mm
kernel/qcore_mac.mm kernel/qcore_mac_p.h
kernel/qcoreapplication_mac.cpp
kernel/qeventdispatcher_cf.mm kernel/qeventdispatcher_cf_p.h
platform/darwin/qdarwinsecurityscopedfileengine.mm platform/darwin/qdarwinsecurityscopedfileengine_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/qcore_mac.mm # See below
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
NO_PCH_SOURCES
kernel/qcore_mac.mm # See below
ATTRIBUTION_FILE_DIR_PATHS
kernel
)
if(APPLE)
# For QObjCWeakPointer
set_source_files_properties(kernel/qcore_mac.mm PROPERTIES COMPILE_FLAGS -fobjc-weak)
endif()
qt_internal_extend_target(Core CONDITION MACOS
LIBRARIES
${FWAppKit}
${FWApplicationServices}
${FWCoreServices}
${FWSecurity}
PUBLIC_LIBRARIES
${FWDiskArbitration}
)
qt_internal_extend_target(Core CONDITION INTEGRITY
LIBRARIES
ivfs
net
posix
shm_client
socket
COMPILE_OPTIONS
--pending_instantiations=128
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_liburing
SOURCES
io/qioring.cpp io/qioring_linux.cpp io/qioring_p.h
LIBRARIES
uring
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_windows_ioring
SOURCES
io/qioring.cpp io/qioring_win.cpp io/qioring_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>
)
qt_internal_extend_target(Core CONDITION QNX AND QT_FEATURE_fsnotify
LIBRARIES
fsnotify
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_qqnx_eventfd
LIBRARIES
Eventfd::Eventfd
)
qt_internal_extend_target(Core CONDITION LINUX AND QT_BUILD_SHARED_LIBS
SOURCES
global/minimum-linux_p.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_slog2
LIBRARIES
Slog2::Slog2
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_journald
LIBRARIES
PkgConfig::Libsystemd
)
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/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/qfutex_p.h
thread/qlatch.cpp thread/qlatch_p.h
thread/qmutex.cpp thread/qmutex_p.h
thread/qreadwritelock.cpp thread/qreadwritelock_p.h
thread/qthreadstorage.cpp thread/qthreadstorage_p.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND UNIX
SOURCES
thread/qwaitcondition_unix.cpp
)
qt_internal_extend_target(Core CONDITION APPLE AND QT_FEATURE_thread
SOURCES
thread/qfutex_mac_p.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND UNIX AND NOT APPLE AND NOT LINUX
SOURCES
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
thread/qfuture.h
thread/qfuture_impl.h
thread/qfutureinterface.cpp thread/qfutureinterface.h thread/qfutureinterface_p.h
thread/qfuturesynchronizer.h
thread/qfuturewatcher.cpp thread/qfuturewatcher.h thread/qfuturewatcher_p.h
thread/qpromise.h
thread/qresultstore.cpp thread/qresultstore.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_std_atomic64
PUBLIC_LIBRARIES
WrapAtomic::WrapAtomic
)
qt_internal_extend_target(Core CONDITION NOT QT_FEATURE_system_zlib
LIBRARIES
Qt::ZlibPrivate
)
qt_internal_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_backtrace
DEFINES
BACKTRACE_HEADER="${Backtrace_HEADER}"
LIBRARIES
WrapBacktrace::WrapBacktrace
)
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
ATTRIBUTION_FILE_DIR_PATHS
../3rdparty/double-conversion
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_system_libb2
LIBRARIES
Libb2::Libb2
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_easingcurve
SOURCES
tools/qeasingcurve.cpp tools/qeasingcurve.h
tools/qtimeline.cpp tools/qtimeline.h
ATTRIBUTION_FILE_DIR_PATHS
../3rdparty/easing
)
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_internal_extend_target(Core CONDITION APPLE
SOURCES
text/qlocale_mac.mm
)
qt_internal_extend_target(Core CONDITION UNIX AND NOT APPLE AND NOT WASM AND NOT ANDROID
SOURCES
text/qlocale_unix.cpp
)
# Switch this to just 'icu' once we can expect Windows 10 version 1903
qt_internal_extend_target(Core CONDITION QT_FEATURE_winsdkicu
LIBRARIES
icuuc icuin
)
qt_internal_extend_target(Core CONDITION WASM
SOURCES
text/qlocale_wasm.cpp
)
qt_internal_extend_target(Core CONDITION MSVC AND CLANG
LIBRARIES
clang_rt.builtins-$<IF:$<STREQUAL:${TEST_architecture_arch},arm64>,aarch64,x86_64>
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_icu OR ANDROID
SOURCES
text/qcollator_icu.cpp
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_icu
SOURCES
text/qlocale_icu.cpp
LIBRARIES
ICU::i18n ICU::uc ICU::data
)
qt_internal_extend_target(Core CONDITION WIN32 AND NOT QT_FEATURE_icu
SOURCES
text/qcollator_win.cpp
)
qt_internal_extend_target(Core CONDITION MACOS AND NOT QT_FEATURE_icu
SOURCES
text/qcollator_macx.cpp
)
qt_internal_extend_target(Core CONDITION WASM AND NOT QT_FEATURE_icu
SOURCES
text/qcollator_wasm.cpp
)
qt_internal_extend_target(Core CONDITION UNIX AND NOT ANDROID AND NOT MACOS AND NOT WASM AND NOT QT_FEATURE_icu
SOURCES
text/qcollator_posix.cpp
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_jemalloc
PUBLIC_LIBRARIES
PkgConfig::JeMalloc
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_regularexpression
SOURCES
text/qregularexpression.cpp text/qregularexpression.h
LIBRARIES
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
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_islamiccivilcalendar
SOURCES
time/qislamiccivilcalendar.cpp time/qislamiccivilcalendar_p.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_jalalicalendar
SOURCES
time/qjalalicalendar.cpp time/qjalalicalendar_p.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_timezone
SOURCES
time/qtimezoneprivate.cpp time/qtimezoneprivate_p.h
)
qt_internal_extend_target(Core
CONDITION
QT_FEATURE_timezone_tzdb
SOURCES
time/qtimezoneprivate_chrono.cpp
)
qt_internal_extend_target(Core
CONDITION
QT_FEATURE_timezone AND APPLE AND NOT QT_FEATURE_timezone_tzdb
SOURCES
time/qtimezoneprivate_mac.mm
)
qt_internal_extend_target(Core
CONDITION
QT_FEATURE_timezone AND ANDROID
AND NOT APPLE AND NOT QT_FEATURE_timezone_tzdb
SOURCES
time/qtimezoneprivate_android.cpp
)
qt_internal_extend_target(Core
CONDITION
QT_FEATURE_timezone AND UNIX AND NOT VXWORKS AND NOT WASM
AND NOT ANDROID AND NOT OHOS AND NOT APPLE AND NOT QT_FEATURE_timezone_tzdb
SOURCES
time/qtimezoneprivate_tz.cpp
)
qt_internal_extend_target(Core
CONDITION
QT_FEATURE_icu AND QT_FEATURE_timezone
AND (VXWORKS OR OHOS OR NOT UNIX) AND NOT QT_FEATURE_timezone_tzdb
SOURCES
time/qtimezoneprivate_icu.cpp
)
qt_internal_extend_target(Core
CONDITION
QT_FEATURE_icu AND QT_FEATURE_timezone
AND OHOS AND NOT QT_FEATURE_timezone_tzdb
LIBRARIES
time_service_ndk
)
# 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
AND NOT QT_FEATURE_timezone_tzdb
SOURCES
time/qtimezoneprivate_win.cpp
)
qt_internal_extend_target(Core
CONDITION
QT_FEATURE_timezone_locale
SOURCES
time/qtimezonelocale.cpp time/qtimezonelocale_p.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_datestring
SOURCES
time/qttemporalpattern.cpp time/qttemporalpattern_p.h
parse/qtparseqttemporalformat.cpp parse/qtparseqttemporalformat_p.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_datetimeparser
SOURCES
time/qdatetimeparser.cpp time/qdatetimeparser_p.h
parse/qtparsetemporal.cpp parse/qtparsetemporal_p.h
parse/qtparsetimezone.cpp parse/qtparsetimezone_p.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_zstd
LIBRARIES
WrapZSTD::WrapZSTD
)
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_internal_extend_target(Core CONDITION QT_FEATURE_filesystemwatcher AND WIN32
SOURCES
io/qfilesystemwatcher_win.cpp io/qfilesystemwatcher_win_p.h
)
qt_internal_extend_target(Core CONDITION MACOS AND QT_FEATURE_filesystemwatcher
SOURCES
io/qfilesystemwatcher_fsevents.mm io/qfilesystemwatcher_fsevents_p.h
)
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_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_internal_extend_target(Core CONDITION QT_FEATURE_processenvironment
SOURCES
io/qprocess.cpp io/qprocess.h io/qprocess_p.h
)
if (NOT QT_FEATURE_process)
set_source_files_properties(io/qprocess.cpp io/qprocess.h PROPERTIES SKIP_AUTOMOC TRUE)
endif()
qt_internal_extend_target(Core CONDITION QT_FEATURE_processenvironment AND WIN32
SOURCES
io/qprocess_win.cpp
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_processenvironment AND UNIX
SOURCES
io/qprocess_unix.cpp
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_settings
SOURCES
io/qsettings.cpp io/qsettings.h io/qsettings_p.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_settings AND WIN32
SOURCES
io/qsettings_win.cpp
)
qt_internal_extend_target(Core CONDITION APPLE AND QT_FEATURE_settings
SOURCES
io/qsettings_mac.cpp
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_settings AND WASM
SOURCES
io/qsettings_wasm.cpp
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_filesystemiterator AND WIN32
SOURCES
io/qfilesystemiterator_win.cpp
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_process AND UNIX
SOURCES
../3rdparty/forkfd/forkfd.h
io/forkfd_qt.c
INCLUDE_DIRECTORIES
../3rdparty/forkfd
ATTRIBUTION_FILE_DIR_PATHS
../3rdparty/forkfd
)
qt_internal_extend_target(Core CONDITION APPLE AND QT_FEATURE_processenvironment
SOURCES
io/qprocess_darwin.mm
)
qt_internal_extend_target(Core CONDITION APPLE AND NOT MACOS
PUBLIC_LIBRARIES
${FWMobileCoreServices}
)
qt_internal_extend_target(Core CONDITION ANDROID
SOURCES
io/qstandardpaths_android.cpp
io/qstorageinfo_linux.cpp io/qstorageinfo_linux_p.h
kernel/qjniarray.h
kernel/qjnitypes.h kernel/qjnitypes_impl.h
kernel/qjnienvironment.cpp kernel/qjnienvironment.h
kernel/qjniobject.cpp kernel/qjniobject.h
kernel/qjnihelpers.cpp kernel/qjnihelpers_p.h
platform/android/qandroidextras_p.h platform/android/qandroidextras.cpp
platform/android/qandroidnativeinterface.cpp
platform/android/qandroidtypes_p.h
platform/android/qandroidtypeconverter_p.h
platform/android/qandroiditemmodelproxy_p.h platform/android/qandroiditemmodelproxy.cpp
platform/android/qandroidmodelindexproxy_p.h platform/android/qandroidmodelindexproxy.cpp
text/qlocale_android.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 OHOS
SOURCES
kernel/qcore_ohos.cpp kernel/qcore_ohos_p.h
kernel/qnapi_p.h
io/qfilesystemengine_ohos.cpp
io/qstandardpaths_ohos.cpp
io/qstorageinfo_linux.cpp io/qstorageinfo_linux_p.h
platform/ohos/qohospermissionshelper_p.h
platform/ohos/qohosappcontext.cpp platform/ohos/qohosappcontext_p.h
platform/ohos/qohoslogger.cpp platform/ohos/qohoslogger_p.h
platform/ohos/qohoscommon_p.h
platform/ohos/qohospathutils.cpp platform/ohos/qohospathutils_p.h
platform/ohos/qohosjstools.cpp
platform/ohos/qohosjstools_p.h
platform/ohos/qohosjsonconversions.cpp platform/ohos/qohosjsonconversions_p.h
platform/ohos/qohosmemoizingjsthreadfetcher.cpp platform/ohos/qohosmemoizingjsthreadfetcher_p.h
platform/ohos/qharmonyjsonconversions.cpp platform/ohos/qharmonyjsonconversions.h
platform/ohos/qharmonyjscontext.cpp platform/ohos/qharmonyjscontext.h
platform/ohos/qharmonyappjscontext.cpp platform/ohos/qharmonyappjscontext.h
platform/ohos/qharmonyjsobjectref.cpp platform/ohos/qharmonyjsobjectref.h
platform/ohos/qharmonynativeinterface.cpp
DEFINES
NODE_ADDON_API_ENABLE_TYPE_CHECK_ON_AS
NAPI_CPP_EXCEPTIONS
LIBRARIES
NodeAddonApi::NodeAddonApi
ace_napi.z
deviceinfo_ndk.z
hilog_ndk.z
ohenvironment
ohfileuri
)
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
SOURCES
io/qstandardpaths_haiku.cpp
io/qstorageinfo_unix.cpp
PUBLIC_LIBRARIES
be
)
qt_internal_extend_target(Core
CONDITION UNIX AND NOT LINUX AND NOT APPLE AND NOT HAIKU AND NOT ANDROID AND NOT OHOS
AND NOT VXWORKS
SOURCES
io/qstandardpaths_unix.cpp
io/qstorageinfo_unix.cpp
)
qt_internal_extend_target(Core CONDITION LINUX AND NOT ANDROID AND NOT OHOS 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_rangemodel
SOURCES
itemmodels/qrangemodel.h itemmodels/qrangemodel_impl.h itemmodels/qrangemodel.cpp
itemmodels/qrangemodeladapter.h itemmodels/qrangemodeladapter_impl.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_proxymodel
SOURCES
itemmodels/qabstractproxymodel.cpp itemmodels/qabstractproxymodel.h itemmodels/qabstractproxymodel_p.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_concatenatetablesproxymodel AND QT_FEATURE_proxymodel
SOURCES
itemmodels/qconcatenatetablesproxymodel.cpp itemmodels/qconcatenatetablesproxymodel.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_identityproxymodel AND QT_FEATURE_proxymodel
SOURCES
itemmodels/qidentityproxymodel.cpp itemmodels/qidentityproxymodel.h itemmodels/qidentityproxymodel_p.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_proxymodel AND QT_FEATURE_sortfilterproxymodel
SOURCES
itemmodels/qsortfilterproxymodel.cpp itemmodels/qsortfilterproxymodel.h
)
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_internal_extend_target(Core CONDITION QT_FEATURE_stringlistmodel
SOURCES
itemmodels/qstringlistmodel.cpp itemmodels/qstringlistmodel.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_library
SOURCES
plugin/qlibrary.cpp plugin/qlibrary.h plugin/qlibrary_p.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_library AND CYGWIN
SOURCES
plugin/qcoffpeparser.cpp plugin/qcoffpeparser_p.h
)
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_internal_extend_target(Core CONDITION QT_FEATURE_library AND UNIX AND NOT APPLE
SOURCES
plugin/qelfparser_p.cpp plugin/qelfparser_p.h
plugin/qlibrary_unix.cpp
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_dlopen
LIBRARIES
${CMAKE_DL_LIBS}
)
qt_internal_extend_target(Core CONDITION APPLE AND UIKIT
LIBRARIES
${FWUIKit}
)
qt_internal_extend_target(Core CONDITION WATCHOS
LIBRARIES
${FWWatchKit}
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_poll_select AND UNIX
SOURCES
kernel/qpoll.cpp
)
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_internal_extend_target(Core CONDITION QT_FEATURE_clock_gettime
LIBRARIES
WrapRt::WrapRt
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_posix_shm AND UNIX
SOURCES
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
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
SOURCES
mimetypes/qmimedatabase.cpp mimetypes/qmimedatabase.h mimetypes/qmimedatabase_p.h
mimetypes/qmimeglobpattern.cpp mimetypes/qmimeglobpattern_p.h
mimetypes/qmimemagicrule.cpp mimetypes/qmimemagicrule_p.h
mimetypes/qmimemagicrulematcher.cpp mimetypes/qmimemagicrulematcher_p.h
mimetypes/qmimeprovider.cpp mimetypes/qmimeprovider_p.h
mimetypes/qmimetype.cpp mimetypes/qmimetype.h mimetypes/qmimetype_p.h
mimetypes/qmimetypeparser.cpp mimetypes/qmimetypeparser_p.h
)
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 OR UNIX) AND NOT (ANDROID OR WASM OR OHOS))
qt_internal_extend_target(Core
SOURCES
kernel/qpermissions_plugin.cpp
PLUGIN_TYPES
permissions
)
endif()
if(QT_FEATURE_permissions AND APPLE)
qt_internal_extend_target(Core
SOURCES
platform/darwin/qdarwinpermissionplugin.mm
platform/darwin/qdarwinpermissionplugin_p.h
)
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
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_permissions AND OHOS
SOURCES
kernel/qpermissions_harmony.cpp
)
if(QT_FEATURE_mimetype AND QT_FEATURE_mimetype_database)
include(${CMAKE_CURRENT_SOURCE_DIR}/mimetypes/mimetypes_resources.cmake)
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(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()
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}"
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"
ATTRIBUTION_FILE_DIR_PATHS
mimetypes/3rdparty
)
set_source_files_properties(${qmimeprovider_db_output} PROPERTIES
GENERATED TRUE
HEADER_FILE_ONLY TRUE
)
endif()
qt_internal_extend_target(Core CONDITION WASM
SOURCES
platform/wasm/qwasmanimationdriver.cpp platform/wasm/qwasmanimationdriver_p.h
platform/wasm/qwasmglobal.cpp platform/wasm/qwasmglobal_p.h
platform/wasm/qstdweb.cpp platform/wasm/qstdweb_p.h
platform/wasm/qwasmsocket.cpp platform/wasm/qwasmsocket_p.h
platform/wasm/qwasmsuspendresumecontrol.cpp platform/wasm/qwasmsuspendresumecontrol_p.h
platform/wasm/qwasmlocalfileengine.cpp platform/wasm/qwasmlocalfileengine_p.h
kernel/qeventdispatcher_wasm.cpp kernel/qeventdispatcher_wasm_p.h
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_hitrace
SOURCES
tracing/qhitrace.cpp tracing/qhitrace_p.h
LIBRARIES
hitrace_ndk.z
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_ctf
SOURCES
tracing/qctf_p.h tracing/qctf.cpp
PLUGIN_TYPES
tracing
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_tracecallback
SOURCES
tracing/qtracecallback.cpp tracing/qtracecallback_p.h
)
# This file is included by qmutex.cpp
set_source_files_properties(
thread/qmutex_unix.cpp
PROPERTIES HEADER_FILE_ONLY ON)
# Remove QT_NO_CAST_TO_ASCII to ensure that the symbols are included in the library.
if(WIN32)
get_target_property(defines Core COMPILE_DEFINITIONS)
list(REMOVE_ITEM defines QT_NO_CAST_TO_ASCII)
set_target_properties(Core PROPERTIES COMPILE_DEFINITIONS "${defines}")
endif()
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 UIKIT)
# find_package(Qt6Core) should call find_package(Qt6EntryPointPrivate) so that we can
# link against EntryPointPrivate. Normally this is handled automatically for deps, but
# it doesn't work for EntryPointPrivate since its linker line contains the generator expression.
qt_internal_register_target_dependencies(Core PUBLIC Qt6::EntryPointPrivate)
get_target_property(entrypoint_src_dir Qt6::EntryPointPrivate SOURCE_DIR)
include("${entrypoint_src_dir}/Qt6EntryPointPrivateMacros.cmake")
_qt_internal_get_entrypoint_conditions(entrypoint_conditions)
target_link_libraries(Core INTERFACE
"$<${entrypoint_conditions}:${QT_CMAKE_EXPORT_NAMESPACE}::EntryPointPrivate>"
)
endif()
# Record darwin minimum deployment target.
if(APPLE AND CMAKE_OSX_DEPLOYMENT_TARGET)
set_property(TARGET Core PROPERTY
QT_DARWIN_MIN_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}")
set_property(TARGET Core APPEND PROPERTY
EXPORT_PROPERTIES "QT_DARWIN_MIN_DEPLOYMENT_TARGET")
endif()
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
)
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()
qt_internal_extend_target(Core CONDITION UIKIT
SOURCES platform/ios/qiosrunloopintegration_p.h
)
if(IOS)
qt_internal_set_apple_privacy_manifest(Core
"${CMAKE_CURRENT_SOURCE_DIR}/platform/ios/PrivacyInfo.xcprivacy")
endif()
if(QT_FEATURE_swift_interop)
set_target_properties(Core PROPERTIES _qt_swift_apinotes
"${CMAKE_CURRENT_SOURCE_DIR}/platform/swift/QtCore.apinotes")
endif()
set(elf_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 elf_linker_script_contents "${current} { ${tag_symbol}; } ${previous};\n")
else()
string(APPEND elf_linker_script_contents "${current} {} ${previous};\n")
endif()
endforeach()
qt_internal_extend_target(Core
EXTRA_ELF_LINKER_SCRIPT_CONTENT "${elf_linker_script_contents}"
# Workaround for QTBUG-117514:
# ### Qt7: remove (fixed in code)
# Function called by inline methods taking a pointer to a private class as a parameter
EXTRA_ELF_LINKER_SCRIPT_EXPORTS
# QFutureInterfaceBase::setContinuation(std::function<void (QFutureInterfaceBase const&)>, QFutureInterfaceBasePrivate*)
"_ZN*20QFutureInterfaceBase15setContinuationE*27QFutureInterfaceBasePrivate*"
# QReadWriteLock::destroyRecursive(QReadWriteLockPrivate*)
"_ZN*14QReadWriteLock16destroyRecursiveEP*21QReadWriteLockPrivate*"
# QUntypedPropertyBinding::QUntypedPropertyBinding(QPropertyBindingPrivate*)
"_ZN*23QUntypedPropertyBindingC1EP*23QPropertyBindingPrivate"
)
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.
set(digit "[0-9a-fA-F]")
string(REPEAT "${digit}" 6 six_digits)
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${six_digits}$")
message(FATAL_ERROR "Invalid 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()
if(QT_BUILD_DOC_SNIPPETS)
add_subdirectory(doc/snippets)
endif()