diff options
Diffstat (limited to 'mkspecs/features/configure.prf')
-rw-r--r-- | mkspecs/features/configure.prf | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/mkspecs/features/configure.prf b/mkspecs/features/configure.prf new file mode 100644 index 000000000..9b0be0140 --- /dev/null +++ b/mkspecs/features/configure.prf @@ -0,0 +1,215 @@ +# Load configure.prf from qtbase first +load(configure) +load(functions) + +defineTest(runConfigure) { + webengine_successfully_configured: return(true) + linux:contains(QT_CONFIG,no-pkg-config) { + skipBuild("pkg-config is required") + return(false) + } + # Ignore the cached config tests results in case they were not successful + CONFIG += recheck + #Override the config.tests path + QMAKE_CONFIG_TESTS_DIR = $$QTWEBENGINE_ROOT/config.tests + CONFIG_TESTS = $$files($$QMAKE_CONFIG_TESTS_DIR/*.pro, true) + log("Running configure tests$${EOL}") + for(test, CONFIG_TESTS) { + test = $$basename(test) + test ~= s/\\.pro$// + qtCompileTest($$test) + } + + isQtMinimum(5, 8) { + include($$QTWEBENGINE_OUT_ROOT/qtwebengine-config.pri) + QT_FOR_CONFIG += webengine-private + + qtConfig(pepper-plugins): WEBENGINE_CONFIG += use_pepper_plugins + qtConfig(printing-and-pdf): WEBENGINE_CONFIG += use_printing use_pdf + qtConfig(proprietary-codecs): WEBENGINE_CONFIG += use_proprietary_codecs + qtConfig(spellchecker): WEBENGINE_CONFIG += use_spellchecker + qtConfig(webrtc): WEBENGINE_CONFIG += use_webrtc + qtConfig(embedded): WEBENGINE_CONFIG += embedded_build + qtConfig(system-webp): WEBENGINE_CONFIG += use_system_libwebp + else: WEBENGINE_CONFIG += use_bundled_libwebp + qtConfig(system-opus): WEBENGINE_CONFIG += use_system_opus + else: WEBENGINE_CONFIG += use_bundled_opus + qtConfig(system-ffmpeg): WEBENGINE_CONFIG += use_system_ffmpeg + else: WEBENGINE_CONFIG += use_bundled_ffmpeg + } else { + cross_compile: WEBENGINE_CONFIG += embedded_build reduce_binary_size + } + isQtMinimum(5, 9) { + qtConfig(appstore-compliant): WEBENGINE_CONFIG += use_appstore_compliant_code + optimize_size: WEBENGINE_CONFIG += reduce_binary_size + } else { + qtConfig(embedded): WEBENGINE_CONFIG += reduce_binary_size + } + + linux { + QT_FOR_CONFIG += gui-private + !config_khr:skipBuild("khronos development headers appear to be missing (mesa/libegl1-mesa-dev)") + + REQUIRED_PACKAGES = dbus-1 fontconfig + !contains(WEBENGINE_CONFIG, embedded_build): qtConfig(xcb): REQUIRED_PACKAGES += libdrm xcomposite xcursor xi xrandr xtst + qtConfig(pulseaudio): REQUIRED_PACKAGES += libpulse + qtConfig(system-png): REQUIRED_PACKAGES += libpng + qtConfig(system-harfbuzz) { + packagesExist("\'harfbuzz >= 1.2.0\'"): WEBENGINE_CONFIG += use_system_harfbuzz + else: log("System harfbuzz is too old (min. version 1.2). Using Chromium's copy.$${EOL}") + } + qtConfig(glib) { + packagesExist("\'glib-2.0 >= 2.32.0\'"): WEBENGINE_CONFIG += use_glib + } + + for(package, $$list($$REQUIRED_PACKAGES)) { + !packagesExist($$package):skipBuild("Unmet dependency: $$package") + } + packagesExist(minizip, zlib): WEBENGINE_CONFIG += use_system_minizip use_system_zlib + else: log("System zlib or minizip not found. Using Chromium's copies.$${EOL}") + !isQtMinimum(5, 8) { + packagesExist(libwebp,libwebpdemux): WEBENGINE_CONFIG += use_system_libwebp use_system_libwebpdemux + else: log("System libwebp or libwebpdemux not found. Using Chromium's copies.$${EOL}") + packagesExist(opus): WEBENGINE_CONFIG += use_system_opus + else: log("System opus not found. Using Chromium's copy.$${EOL}") + } + packagesExist(libxml-2.0,libxslt) { + PKGCONFIG_LIBS_STATIC = $$system($$PKG_CONFIG --libs --static libxml-2.0) + contains(PKGCONFIG_LIBS_STATIC, -licuuc) { + WEBENGINE_CONFIG += use_system_libxslt use_system_libxml2 + } else { + log("System libxml2 is not configured with ICU. Using Chromium's copy.$${EOL}") + } + } + else: log("System libxml2 or libxslt not found. Using Chromium's copies.$${EOL}") + for(package, $$list("libevent jsoncpp protobuf")) { + packagesExist($$package): WEBENGINE_CONFIG += use_system_$$package + else { + log("System $$package not found. Using Chromium's copy.$${EOL}") + WEBENGINE_CONFIG += use_bundled_$$package + } + } + use?(system_protobuf) { + !system("which protoc > /dev/null") { + log("Protobuf compiler not found. Using Chromium's copy of protobuf.$${EOL}") + WEBENGINE_CONFIG -= use_system_protobuf + WEBENGINE_CONFIG += use_bundled_protobuf + } + } + config_libvpx: WEBENGINE_CONFIG += use_system_vpx + else { + log("Compatible system libvpx not found. Using Chromium's copy.$${EOL}") + WEBENGINE_CONFIG += use_bundled_libvpx + } + config_srtp: WEBENGINE_CONFIG += use_system_libsrtp + else { + log("System libsrtp not found. Using Chromium's copy.$${EOL}") + WEBENGINE_CONFIG += use_bundled_srtp + } + config_snappy: WEBENGINE_CONFIG += use_system_snappy + else { + log("System snappy not found. Using Chromium's copy.$${EOL}") + WEBENGINE_CONFIG += use_bundled_snappy + } + + !contains(WEBENGINE_CONFIG, embedded_build) { + packagesExist(nss): WEBENGINE_CONFIG += use_nss + else: log("System NSS not found, BoringSSL will be used.$${EOL}") + } + } + + win32 { + !config_winversion: skipBuild("Needs VS 2015 Update 3 with Cumulative Servicing Release or higher") + } + + isEmpty(skipBuildReason): { + cache(CONFIG, add, $$list(webengine_successfully_configured)) + !isEmpty(WEBENGINE_CONFIG) { + cache(WEBENGINE_CONFIG, add, $$list($$WEBENGINE_CONFIG)) + export(WEBENGINE_CONFIG) + } + # Set a global WEBENGINE_ARCH for the target architecture we can also read from option(host_build) + WEBENGINE_ARCH = $$QT_ARCH + cache(WEBENGINE_ARCH) + export(WEBENGINE_ARCH) + } + + unix:!darwin { + log("System library dependencies:$${EOL}") + use?(system_icu) { + packagesExist("icu-uc icu-i18n") { + log(" ICU ................................ Using system version$${EOL}") + } else { + log(" ICU ................................ System ICU not found$${EOL}") + skipBuild("Unmet dependencies: icu-uc, icu-i18n") + } + } else { + log(" ICU ................................ Using internal copy (Default, force system ICU with WEBENGINE_CONFIG+=use_system_icu)$${EOL}") + WEBENGINE_CONFIG += use_bundled_icu + } + !isQtMinimum(5, 8) { + use?(system_ffmpeg) { + packagesExist("libavcodec libavformat libavutil") { + packagesExist("libwebp, libwebpdemux, opus, \'vpx >= 1.4\'"){ + log(" FFMPEG ............................. Using system version$${EOL}") + } else { + log(" FFMPEG ............................. Conflicting FFMPEG dependencies$${EOL}") + skipBuild("Unmet dependencies: opus, vpx, libwebp, libwebpdemux") + } + } else { + log(" FFMPEG ............................. System FFMPEG not found$${EOL}") + skipBuild("Unmet dependencies: libavcodec, libavformat, libavutil") + } + } else { + log(" FFMPEG ............................. Using internal copy (Default, force system FFMPEG with WEBENGINE_CONFIG+=use_system_ffmpeg)$${EOL}") + WEBENGINE_CONFIG += use_bundled_ffmpeg + } + } + for(config, WEBENGINE_CONFIG) { + match = $$find(config, "^use_system_") + !isEmpty(match) { + use_system += $$replace(match, ^use_system_,) + } + match = $$find(config, "^use_bundled_") + !isEmpty(match) { + use_bundled += $$replace(match, ^use_bundled_,) + } + } + !isEmpty(use_system): log(" Optional system libraries used ..... $$use_system$${EOL}") + !isEmpty(use_bundled): log(" Optional bundled libraries used .... $$use_bundled$${EOL}") + } + log("Configurable features:$${EOL}") + use?(proprietary_codecs) { + log(" Proprietary codecs (H264, MP3) ..... Enabled$${EOL}") + } else { + log(" Proprietary codecs (H264, MP3) ..... Not enabled (Default, enable with WEBENGINE_CONFIG+=use_proprietary_codecs)$${EOL}") + } + qtHaveModule(positioning): { + log(" Geolocation ........................ Enabled$${EOL}") + } else { + log(" Geolocation ........................ Not enabled (Requires Qt Positioning module)$${EOL}") + } + unix:!darwin { + use?(nss) { + log(" Certificate handling ............... Using system NSS$${EOL}") + } else { + log(" Certificate handling ............... Using bundled BoringSSL$${EOL}") + } + } + osx { + use?(appstore_compliant_code) { + log(" Mac App Store Compliant ............ Enabled$${EOL}") + } else { + log(" Mac App Store Compliant ............ Not enabled (Default, enable with WEBENGINE_CONFIG+=use_appstore_compliant_code)$${EOL}") + } + use?(native_spellchecker) { + log("Native Spellchecker .............. Enabled$${EOL}") + } else { + log("Native Spellchecker .............. Not enabled (Default, enable with WEBENGINE_CONFIG+=use_native_spellchecker)$${EOL}") + } + !isMinOSXSDKVersion(10, 10, 3) { + log(" Force Touch API usage .............. Not enabled (Because the OS X SDK version to be used \"$${WEBENGINE_OSX_SDK_PRODUCT_VERSION}\" is lower than the required \"10.10.3\")$${EOL}") + } + } +} + |