blob: 71872664b33b0b17de2c64c75456268a908035f7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
load(functions)
ROOT_QT_BUILD_DIR = $$ROOT_BUILD_DIR/..
TEMPLATE = aux
qtConfig(debug_and_release): CONFIG += debug_and_release build_all
CONFIG(debug, debug|release) {
configuration = Debug
} else {
configuration = Release
}
programExistsInPath(ninja): use_ninja = 1
cmake_build_dir = $$system_quote($$system_path($$ROOT_BUILD_DIR/$$lower($$configuration)))
toolchain_file = $$system_quote($$system_path($$ROOT_BUILD_DIR/qmake_toolchain.cmake))
build_pass|!debug_and_release {
CMAKE_CONFIG += \
PORT=Qt \
CMAKE_BUILD_TYPE=$$configuration \
CMAKE_TOOLCHAIN_FILE=$$toolchain_file \
USE_LIBHYPHEN=OFF
!isEmpty(_QMAKE_SUPER_CACHE_) {
CMAKE_CONFIG += CMAKE_PREFIX_PATH=\"$$ROOT_QT_BUILD_DIR/qtbase;$$ROOT_QT_BUILD_DIR/qtlocation;$$ROOT_QT_BUILD_DIR/qtsensors;$$ROOT_QT_BUILD_DIR/qtdeclarative;$$ROOT_QT_BUILD_DIR/qtwebchannel\"
} else {
CMAKE_CONFIG += Qt5_DIR=\"$$[QT_INSTALL_LIBS]/cmake/Qt5\"
}
static: CMAKE_CONFIG += USE_THIN_ARCHIVES=OFF
static_runtime: CMAKE_CONFIG += USE_STATIC_RUNTIME=ON
QT_FOR_CONFIG += gui-private
!win32:!qtConfig(system-jpeg):qtConfig(jpeg) {
# Use QImageReader for JPEG
CMAKE_CONFIG += USE_LIBJPEG=OFF
}
!qtConfig(system-png):qtConfig(png):exists($$QTBASE_DIR) {
CMAKE_CONFIG += \
QT_BUNDLED_PNG=1 \
PNG_INCLUDE_DIRS=$$QTBASE_DIR/src/3rdparty/libpng \
PNG_LIBRARIES=$$staticLibPath(qtpng)
}
!qtConfig(system-zlib):exists($$QTBASE_DIR) {
CMAKE_CONFIG += QT_BUNDLED_ZLIB=1
exists($$QTBASE_DIR/src/3rdparty/zlib/src/zlib.h): \
CMAKE_CONFIG += ZLIB_INCLUDE_DIRS=$$QTBASE_DIR/src/3rdparty/zlib/src
else: CMAKE_CONFIG += ZLIB_INCLUDE_DIRS=$$QTBASE_DIR/src/3rdparty/zlib
}
exists($$ROOT_BUILD_DIR/conanbuildinfo.cmake):exists($$ROOT_BUILD_DIR/conanfile.txt) {
CMAKE_CONFIG += QT_CONAN_DIR=$$ROOT_BUILD_DIR
}
msvc:!contains(QMAKE_HOST.arch, x86_64) {
CMAKE_CONFIG += USE_MINIMAL_DEBUG_INFO_MSVC=ON
}
!macos {
force_debug_info: CMAKE_CONFIG += FORCE_DEBUG_INFO=ON
qtConfig(separate_debug_info): CMAKE_CONFIG += SEPARATE_DEBUG_INFO=ON
}
macos {
# Reuse the cached sdk version value from mac/sdk.prf if available
# otherwise query for it.
QMAKE_MAC_SDK_PATH = $$eval(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.Path)
isEmpty(QMAKE_MAC_SDK_PATH) {
QMAKE_MAC_SDK_PATH = $$system("/usr/bin/xcodebuild -sdk $${QMAKE_MAC_SDK} -version Path 2>/dev/null")
}
exists($$QMAKE_MAC_SDK_PATH): CMAKE_CONFIG += CMAKE_OSX_SYSROOT=$$QMAKE_MAC_SDK_PATH
!isEmpty(QMAKE_MACOSX_DEPLOYMENT_TARGET): CMAKE_CONFIG += CMAKE_OSX_DEPLOYMENT_TARGET=$$QMAKE_MACOSX_DEPLOYMENT_TARGET
# Hack: install frameworks in debug_and_release in separate prefixes
debug_and_release:build_all:CONFIG(debug, debug|release) {
CMAKE_CONFIG += CMAKE_INSTALL_PREFIX=\"$$[QT_INSTALL_PREFIX]/debug\"
}
!qt_framework: CMAKE_CONFIG += MACOS_BUILD_FRAMEWORKS=OFF
}
linux:isEqual(EXTRA_RPATHS, "."): CMAKE_CONFIG += QT_ORIGIN_RPATH=ON
!isEmpty(use_ninja): cmake_args += "-G Ninja"
equals(QMAKE_HOST.os, Windows) {
if(equals(MAKEFILE_GENERATOR, MSVC.NET)|equals(MAKEFILE_GENERATOR, MSBUILD)) {
cmake_generator = "NMake Makefiles JOM"
make_command_name = jom
} else: if(equals(MAKEFILE_GENERATOR, MINGW)) {
cmake_generator = "MinGW Makefiles"
make_command_name = make
} else {
cmake_generator = "Unix Makefiles"
make_command_name = make
}
isEmpty(use_ninja): cmake_args += "-G \"$$cmake_generator\""
} else {
make_command_name = make
}
!silent {
make_args += "VERBOSE=1"
ninja_args += "-v"
}
# Append additional platform options defined in CMAKE_CONFIG
for (config, CMAKE_CONFIG): cmake_args += "-D$$config"
!exists($$cmake_build_dir) {
!system("$$QMAKE_MKDIR $$cmake_build_dir"): error("Failed to create cmake build directory")
}
cmake_cmd_base = "cd $$cmake_build_dir &&"
log("$${EOL}Running $$cmake_env cmake $$ROOT_WEBKIT_DIR $$cmake_args $${EOL}$${EOL}")
!system("$$cmake_cmd_base $$cmake_env cmake $$ROOT_WEBKIT_DIR $$cmake_args"): error("Running cmake failed")
log("$${EOL}WebKit is now configured for building. Just run '$$make_command_name'.$${EOL}$${EOL}")
build_pass:build_all: default_target.target = all
else: default_target.target = first
isEmpty(use_ninja) {
default_target.commands = cd $$cmake_build_dir && $(MAKE) $$make_args
} else {
default_target.commands = cd $$cmake_build_dir && ninja $$ninja_args
}
QMAKE_EXTRA_TARGETS += default_target
# When debug and release are built at the same time, don't install data files twice
debug_and_release:build_all:CONFIG(debug, debug|release): cmake_install_args = "-DCOMPONENT=Code"
install_impl_target.target = install_impl
install_impl_target.commands = cd $$cmake_build_dir && cmake $$cmake_install_args -P cmake_install.cmake
QMAKE_EXTRA_TARGETS += install_impl_target
install_target.target = install
install_target.commands = $(MAKE) -f $(MAKEFILE) install_impl $$make_args DESTDIR=$(INSTALL_ROOT)
QMAKE_EXTRA_TARGETS += install_target
}
!build_pass:debug_and_release:!isEmpty(use_ninja) {
# Special GNU make target for the meta Makefile that ensures that our
# debug_and_release Makefiles won't both run ninja in parallel.
notParallel.target = .NOTPARALLEL
QMAKE_EXTRA_TARGETS += notParallel
}
|