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
}
|