1TARGET	   = QtCore
2QT         =
3CONFIG    += exceptions
4
5MODULE = core     # not corelib, as per project file
6MODULE_CONFIG = moc resources
7qtConfig(gc_binaries): MODULE_CONFIG += gc_binaries
8!isEmpty(QT_NAMESPACE): MODULE_DEFINES = QT_NAMESPACE=$$QT_NAMESPACE
9
10TRACEPOINT_PROVIDER = $$PWD/qtcore.tracepoints
11CONFIG += qt_tracepoints
12
13CONFIG += $$MODULE_CONFIG
14DEFINES += $$MODULE_DEFINES
15android: DEFINES += LIBS_SUFFIX='\\"_$${QT_ARCH}.so\\"'
16DEFINES += QT_NO_USING_NAMESPACE QT_NO_FOREACH
17msvc:equals(QT_ARCH, i386): QMAKE_LFLAGS += /BASE:0x67000000
18
19CONFIG += simd optimize_full
20CONFIG += metatypes install_metatypes
21
22QMAKE_DOCS = $$PWD/doc/qtcore.qdocconf
23
24ANDROID_LIB_DEPENDENCIES = \
25    plugins/platforms/libplugins_platforms_qtforandroid.so
26ANDROID_BUNDLED_JAR_DEPENDENCIES = \
27    jar/QtAndroid.jar
28ANDROID_PERMISSIONS = \
29    android.permission.INTERNET \
30    android.permission.WRITE_EXTERNAL_STORAGE
31
32# QtCore can't be compiled with -Wl,-no-undefined because it uses the "environ"
33# variable and on FreeBSD and OpenBSD, this variable is in the final executable itself.
34# OpenBSD 6.0 will include environ in libc.
35freebsd|openbsd: QMAKE_LFLAGS_NOUNDEF =
36
37qtConfig(animation): include(animation/animation.pri)
38include(global/global.pri)
39include(thread/thread.pri)
40include(tools/tools.pri)
41include(text/text.pri)
42include(time/time.pri)
43include(io/io.pri)
44include(itemmodels/itemmodels.pri)
45include(plugin/plugin.pri)
46include(kernel/kernel.pri)
47include(codecs/codecs.pri)
48include(serialization/serialization.pri)
49include(statemachine/statemachine.pri)
50include(mimetypes/mimetypes.pri)
51include(platform/platform.pri)
52
53win32 {
54    QMAKE_USE_PRIVATE += ws2_32
55    !winrt: QMAKE_USE_PRIVATE += advapi32 kernel32 ole32 shell32 uuid user32 winmm
56}
57
58darwin {
59    osx {
60        LIBS_PRIVATE += -framework ApplicationServices
61        LIBS_PRIVATE += -framework CoreServices
62    }
63    LIBS_PRIVATE += -framework CoreFoundation
64    LIBS_PRIVATE += -framework Foundation
65}
66
67integrity {
68    LIBS_PRIVATE += -lposix -livfs -lsocket -lnet -lshm_client
69}
70
71QMAKE_DYNAMIC_LIST_FILE = $$PWD/QtCore.dynlist
72
73HOST_BINS = $$[QT_HOST_BINS]
74host_bins.name = host_bins
75host_bins.variable = HOST_BINS
76
77qt_conf.name = qt_config
78qt_conf.variable = QT_CONFIG
79
80QMAKE_PKGCONFIG_VARIABLES += host_bins qt_conf
81
82load(qt_module)
83
84# Override qt_module, so the symbols are actually included into the library.
85win32: DEFINES -= QT_NO_CAST_TO_ASCII
86
87ctest_macros_file.input = $$PWD/Qt5CTestMacros.cmake
88ctest_macros_file.output = $$DESTDIR/cmake/Qt5Core/Qt5CTestMacros.cmake
89ctest_macros_file.CONFIG = verbatim
90
91cmake_umbrella_config_file.input = $$PWD/Qt5Config.cmake.in
92cmake_umbrella_config_file.output = $$DESTDIR/cmake/Qt5/Qt5Config.cmake
93
94cmake_umbrella_config_module_location.input = $$PWD/Qt5ModuleLocation.cmake.in
95cmake_umbrella_config_module_location.output = $$DESTDIR/cmake/Qt5/Qt5ModuleLocation.cmake
96
97cmake_umbrella_config_module_location_for_install.input = $$PWD/Qt5ModuleLocationForInstall.cmake.in
98cmake_umbrella_config_module_location_for_install.output = $$DESTDIR/cmake/install/Qt5/Qt5ModuleLocation.cmake
99
100cmake_umbrella_config_version_file.input = $$PWD/../../mkspecs/features/data/cmake/Qt5ConfigVersion.cmake.in
101cmake_umbrella_config_version_file.output = $$DESTDIR/cmake/Qt5/Qt5ConfigVersion.cmake
102
103android {
104    cmake_android_support.input = $$PWD/Qt5AndroidSupport.cmake
105    cmake_android_support.output = $$DESTDIR/cmake/Qt5Core/Qt5AndroidSupport.cmake
106    cmake_android_support.CONFIG = verbatim
107}
108
109load(cmake_functions)
110
111defineTest(pathIsAbsolute) {
112    p = $$clean_path($$1)
113    !isEmpty(p):isEqual(p, $$absolute_path($$p)): return(true)
114    return(false)
115}
116
117##### This requires fixing, so that the feature system works with cmake as well
118CMAKE_DISABLED_FEATURES = $$join(QT_DISABLED_FEATURES, "$$escape_expand(\\n)    ")
119
120# Embed the minimum darwin deployment target that Qt needs for informational purposes only.
121macos: CMAKE_MIN_DARWIN_DEPLOYMENT_TARGET = $$QMAKE_MACOSX_DEPLOYMENT_TARGET
122ios: CMAKE_MIN_DARWIN_DEPLOYMENT_TARGET = $$QMAKE_IOS_DEPLOYMENT_TARGET
123tvos: CMAKE_MIN_DARWIN_DEPLOYMENT_TARGET = $$QMAKE_TVOS_DEPLOYMENT_TARGET
124watchos: CMAKE_MIN_DARWIN_DEPLOYMENT_TARGET = $$QMAKE_WATCHOS_DEPLOYMENT_TARGET
125
126CMAKE_HOST_DATA_DIR = $$cmakeRelativePath($$[QT_HOST_DATA/src], $$[QT_INSTALL_PREFIX])
127pathIsAbsolute($$CMAKE_HOST_DATA_DIR) {
128    CMAKE_HOST_DATA_DIR = $$[QT_HOST_DATA/src]/
129    CMAKE_HOST_DATA_DIR_IS_ABSOLUTE = True
130}
131
132cmake_extras_mkspec_dir.input = $$PWD/Qt5CoreConfigExtrasMkspecDir.cmake.in
133cmake_extras_mkspec_dir.output = $$DESTDIR/cmake/Qt5Core/Qt5CoreConfigExtrasMkspecDir.cmake
134
135CMAKE_INSTALL_DATA_DIR = $$cmakeRelativePath($$[QT_HOST_DATA], $$[QT_INSTALL_PREFIX])
136pathIsAbsolute($$CMAKE_INSTALL_DATA_DIR) {
137    CMAKE_INSTALL_DATA_DIR = $$[QT_HOST_DATA]/
138    CMAKE_INSTALL_DATA_DIR_IS_ABSOLUTE = True
139}
140
141cmake_extras_mkspec_dir_for_install.input = $$PWD/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in
142cmake_extras_mkspec_dir_for_install.output = $$DESTDIR/cmake/install/Qt5Core/Qt5CoreConfigExtrasMkspecDir.cmake
143
144cmake_qt5_umbrella_module_files.files = \
145    $$cmake_umbrella_config_file.output \
146    $$cmake_umbrella_config_version_file.output \
147    $$cmake_umbrella_config_module_location_for_install.output
148
149cmake_qt5_umbrella_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5
150
151QMAKE_SUBSTITUTES += \
152    ctest_macros_file \
153    cmake_umbrella_config_file \
154    cmake_umbrella_config_module_location \
155    cmake_umbrella_config_module_location_for_install \
156    cmake_umbrella_config_version_file \
157    cmake_extras_mkspec_dir \
158    cmake_extras_mkspec_dir_for_install
159
160android {
161    QMAKE_SUBSTITUTES += cmake_android_support
162    ctest_qt5_module_files.files += $$cmake_android_support.output
163}
164
165ctest_qt5_module_files.files += $$ctest_macros_file.output $$cmake_extras_mkspec_dir_for_install.output
166
167ctest_qt5_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5Core
168
169INSTALLS += ctest_qt5_module_files cmake_qt5_umbrella_module_files
170
171QMAKE_DSYM_DEBUG_SCRIPT = $$PWD/debug_script.py
172