summaryrefslogtreecommitdiffstats
path: root/configure.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'configure.cmake')
-rw-r--r--configure.cmake173
1 files changed, 123 insertions, 50 deletions
diff --git a/configure.cmake b/configure.cmake
index 64d3d4270..2d826e6dd 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -1,21 +1,27 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
if(QT_CONFIGURE_RUNNING)
function(assertTargets)
endfunction()
function(add_check_for_support)
endfunction()
+ function(check_for_ulimit)
+ endfunction()
else()
find_package(Ninja 1.7.2)
find_package(Gn ${QT_REPO_MODULE_VERSION} EXACT)
- find_program(Python3_EXECUTABLE NAMES python3 HINTS $ENV{PYTHON3_PATH})
+ find_program(Python3_EXECUTABLE NAMES python3 python HINTS $ENV{PYTHON3_PATH})
if(NOT Python3_EXECUTABLE)
find_package(Python3 3.6)
endif()
find_package(GPerf)
find_package(BISON)
find_package(FLEX)
+ find_package(Perl)
find_package(PkgConfig)
find_package(Snappy)
- find_package(Nodejs 12.0)
+ find_package(Nodejs 14.0)
endif()
if(PkgConfig_FOUND)
@@ -32,22 +38,25 @@ if(PkgConfig_FOUND)
pkg_check_modules(X11 x11)
pkg_check_modules(XPROTO glproto)
pkg_check_modules(GLIB glib-2.0>=2.32.0)
- pkg_check_modules(HARFBUZZ harfbuzz>=2.9.0 harfbuzz-subset>=2.9.0)
+ pkg_check_modules(HARFBUZZ harfbuzz>=4.3.0 harfbuzz-subset>=4.3.0)
pkg_check_modules(JPEG libjpeg IMPORTED_TARGET)
pkg_check_modules(LIBEVENT libevent)
pkg_check_modules(MINIZIP minizip)
pkg_check_modules(PNG libpng>=1.6.0)
+ pkg_check_modules(TIFF libtiff-4>=4.2.0)
pkg_check_modules(ZLIB zlib)
- pkg_check_modules(RE2 re2 IMPORTED_TARGET)
- pkg_check_modules(ICU icu-uc>=68 icu-i18n>=68)
+ # TODO: chromium may replace base::StringView with std::string_view. See: crbug.com/691162
+ pkg_check_modules(RE2 re2>=11.0.0 IMPORTED_TARGET)
+ pkg_check_modules(ICU icu-uc>=70 icu-i18n>=70)
pkg_check_modules(WEBP libwebp libwebpmux libwebpdemux)
pkg_check_modules(LCMS2 lcms2)
pkg_check_modules(FREETYPE freetype2 IMPORTED_TARGET)
pkg_check_modules(LIBXML2 libxml-2.0 libxslt IMPORTED_TARGET)
- pkg_check_modules(FFMPEG libavcodec libavformat libavutil)
+ pkg_check_modules(FFMPEG libavcodec libavformat libavutil IMPORTED_TARGET)
pkg_check_modules(OPUS opus>=1.3.1)
pkg_check_modules(VPX vpx>=1.10.0 IMPORTED_TARGET)
pkg_check_modules(LIBPCI libpci)
+ pkg_check_modules(LIBOPENJP2 libopenjp2)
endif()
if(Python3_EXECUTABLE)
@@ -97,6 +106,7 @@ int main() {
pkt.data.frame.height[0] = 0u;
auto a = CONSTRAINED_FROM_ABOVE_DROP;
auto b = VPX_IMG_FMT_NV12;
+ auto v9 = vpx_codec_vp9_cx();
}"
)
@@ -188,14 +198,21 @@ int main(void) {
}"
)
-qt_config_compile_test(winversion
- LABEL "winversion"
+qt_config_compile_test(libavformat
+ LABEL "libavformat"
+ LIBRARIES
+ PkgConfig::FFMPEG
CODE
"
-#if !defined(__clang__) && _MSC_FULL_VER < 191426428
-#error unsupported Visual Studio version
+#include \"libavformat/version.h\"
+extern \"C\" {
+#include \"libavformat/avformat.h\"
+}
+int main(void) {
+#if LIBAVFORMAT_VERSION_MAJOR >= 59
+ AVStream stream;
+ auto first_dts = av_stream_get_first_dts(&stream);
#endif
-int main(void){
return 0;
}"
)
@@ -304,6 +321,10 @@ qt_feature("webengine-system-libwebp" PRIVATE
LABEL "libwebp, libwebpmux and libwebpdemux"
CONDITION UNIX AND WEBP_FOUND
)
+qt_feature("webengine-system-libopenjpeg2" PRIVATE
+ LABEL "libopenjpeg2"
+ CONDITION UNIX AND LIBOPENJP2_FOUND
+)
qt_feature("webengine-system-opus" PRIVATE
LABEL "opus"
CONDITION UNIX AND OPUS_FOUND
@@ -315,6 +336,7 @@ qt_feature("webengine-system-ffmpeg" PRIVATE
)
qt_feature("webengine-system-libvpx" PRIVATE
LABEL "libvpx"
+ AUTODETECT FALSE
CONDITION UNIX AND TEST_vpx
)
qt_feature("webengine-system-snappy" PRIVATE
@@ -341,7 +363,6 @@ qt_feature("webengine-system-minizip" PRIVATE
)
qt_feature("webengine-system-libevent" PRIVATE
LABEL "libevent"
- AUTODETECT FALSE # coin bug 711
CONDITION UNIX AND LIBEVENT_FOUND
)
qt_feature("webengine-system-libxml" PRIVATE
@@ -356,6 +377,10 @@ qt_feature("webengine-system-libpng" PRIVATE
LABEL "png"
CONDITION UNIX AND TARGET Qt::Gui AND PNG_FOUND AND QT_FEATURE_system_png
)
+qt_feature("webengine-system-libtiff" PRIVATE
+ LABEL "tiff"
+ CONDITION UNIX AND TARGET Qt::Gui AND TIFF_FOUND
+)
qt_feature("webengine-qt-libpng" PRIVATE
LABEL "qtpng"
CONDITION QT_FEATURE_static
@@ -373,14 +398,13 @@ qt_feature("webengine-qt-libjpeg" PRIVATE
AND TARGET Qt::Gui
AND QT_FEATURE_jpeg
AND NOT QT_FEATURE_system_jpeg
- AND FALSE # FIXME requires qtbase dep update
)
qt_feature("webengine-system-harfbuzz" PRIVATE
LABEL "harfbuzz"
CONDITION UNIX AND TARGET Qt::Gui AND HARFBUZZ_FOUND AND QT_FEATURE_system_harfbuzz
)
qt_feature("webengine-qt-harfbuzz" PRIVATE
- LABEL "qtpng"
+ LABEL "qtharfbuzz"
CONDITION QT_FEATURE_static
AND TARGET Qt::Gui
AND QT_FEATURE_harfbuzz
@@ -419,7 +443,8 @@ qt_feature("webengine-ozone-x11" PRIVATE
)
#### Support Checks
-if(WIN32 AND (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64" OR CMAKE_CROSSCOMPILING))
+if(WIN32 AND (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64"
+ OR CMAKE_CROSSCOMPILING))
set(WIN_ARM_64 ON)
else()
set(WIN_ARM_64 OFF)
@@ -446,16 +471,17 @@ add_check_for_support(
)
add_check_for_support(
MODULES QtPdf
- CONDITION LINUX OR (WIN32 AND NOT WIN_ARM_64) OR MACOS OR IOS
- MESSAGE "Build can be done only on Linux, Windows, macOS or iOS."
+ CONDITION LINUX OR (WIN32 AND NOT WIN_ARM_64) OR MACOS OR IOS OR ANDROID
+ MESSAGE "Build can be done only on Linux, Windows, macO, iOS and Android."
)
if(LINUX AND CMAKE_CROSSCOMPILING)
- get_gn_arch(testArch ${TEST_architecture_arch})
+ set(supportedTargets "arm" "arm64" "armv7-a" "x86_64")
add_check_for_support(
MODULES QtWebEngine QtPdf
- CONDITION testArch
+ CONDITION TEST_architecture_arch IN_LIST supportedTargets
MESSAGE "Cross compiling is not supported for ${TEST_architecture_arch}."
)
+ unset(supportedTargets)
endif()
add_check_for_support(
MODULES QtWebEngine
@@ -465,7 +491,14 @@ add_check_for_support(
add_check_for_support(
MODULES QtWebEngine QtPdf
CONDITION TARGET Nodejs::Nodejs
- MESSAGE "node.js version 12 or later is required."
+ MESSAGE "node.js version 14 or later is required."
+)
+add_check_for_support(
+ MODULES QtWebEngine
+ CONDITION NOT (Nodejs_ARCH STREQUAL "ia32") AND
+ NOT (Nodejs_ARCH STREQUAL "x86") AND
+ NOT (Nodejs_ARCH STREQUAL "arm")
+ MESSAGE "32bit version of Nodejs is not supported."
)
add_check_for_support(
MODULES QtWebEngine QtPdf
@@ -522,48 +555,60 @@ add_check_for_support(
CONDITION NOT LINUX OR DBUS_FOUND
MESSAGE "Build requires dbus."
)
-# FIXME: This prevents non XCB Linux builds from building:
-set(xcbSupport X11 LIBDRM XCOMPOSITE XCURSOR XRANDR XI XPROTO XSHMFENCE XTST)
-foreach(xs ${xcbSupport})
- if(${xs}_FOUND)
- set(xcbErrorMessage "${xcbErrorMessage} ${xs}:YES")
- else()
- set(xcbErrorMessage "${xcbErrorMessage} ${xs}:NO")
- endif()
-endforeach()
add_check_for_support(
- MODULES QtWebEngine
- CONDITION NOT LINUX OR NOT QT_FEATURE_xcb OR QT_FEATURE_webengine_ozone_x11
- MESSAGE "Could not find all necessary libraries for qpa-xcb support.\
-${xcbErrorMessage}"
+ MODULES QtWebEngine
+ CONDITION NOT LINUX OR NOT QT_FEATURE_webengine_system_ffmpeg OR TEST_libavformat
+ MESSAGE "Unmodified ffmpeg >= 5.0 is not supported."
)
+
add_check_for_support(
- MODULES QtWebEngine QtPdf
- CONDITION NOT WIN32 OR TEST_winversion
- MESSAGE "Build requires Visual Studio 2019 or higher."
+ MODULES QtWebEngine
+ CONDITION MSVC OR
+ (LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
+ (LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR
+ (MACOS AND CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
+ MESSAGE
+ "${CMAKE_CXX_COMPILER_ID} compiler is not supported."
)
+
add_check_for_support(
- MODULES QtWebEngine QtPdf
- CONDITION
- (LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL GNU) OR
- (LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL Clang) OR
- (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL MSVC) OR
- (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL Clang AND
- CMAKE_CXX_SIMULATE_ID STREQUAL MSVC) OR
- (MACOS AND CMAKE_CXX_COMPILER_ID STREQUAL AppleClang) OR
- (APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL AppleClang)
- MESSAGE "${CMAKE_CXX_COMPILER_ID} compiler is not supported."
+ MODULES QtPdf
+ CONDITION MSVC OR
+ (LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
+ (LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR
+ (APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") OR
+ (ANDROID AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR
+ (MINGW AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
+ (MINGW AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ MESSAGE
+ "${CMAKE_CXX_COMPILER_ID} compiler is not supported."
)
-
if(WIN32)
+ if(MSVC)
+ if(MSVC_TOOLSET_VERSION EQUAL 142) # VS 2019 (16.0)
+ add_check_for_support(
+ MODULES QtWebEngine QtPdf
+ CONDITION NOT MSVC_VERSION LESS 1929
+ MESSAGE "VS compiler version must be at least 14.29"
+ )
+ elseif(MSVC_TOOLSET_VERSION EQUAL 143) # VS 2022 (17.0)
+ add_check_for_support(
+ MODULES QtWebEngine QtPdf
+ CONDITION NOT MSVC_VERSION LESS 1936
+ MESSAGE "VS compiler version must be at least 14.36"
+ )
+ else()
+ message(FATAL_ERROR "Build requires Visual Studio 2019 or higher.")
+ endif()
+ endif()
set(windowsSdkVersion $ENV{WindowsSDKVersion})
string(REGEX REPLACE "([0-9.]+).*" "\\1" windowsSdkVersion "${windowsSdkVersion}")
string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" sdkMinor "${windowsSdkVersion}")
message("-- Windows 10 SDK version: ${windowsSdkVersion}")
add_check_for_support(
- MODULES QtWebEngine QtPdf
- CONDITION sdkMinor GREATER_EQUAL 19041
- MESSAGE "Build requires Windows 10 SDK at least version 10.0.19041.0"
+ MODULES QtWebEngine
+ CONDITION sdkMinor GREATER_EQUAL 22621
+ MESSAGE "Build requires Windows 11 SDK at least version 10.0.22621.0"
)
endif()
@@ -601,7 +646,9 @@ if(UNIX)
qt_configure_add_summary_entry(ARGS "webengine-system-libxml")
qt_configure_add_summary_entry(ARGS "webengine-system-lcms2")
qt_configure_add_summary_entry(ARGS "webengine-system-libpng")
+ qt_configure_add_summary_entry(ARGS "webengine-system-libtiff")
qt_configure_add_summary_entry(ARGS "webengine-system-libjpeg")
+ qt_configure_add_summary_entry(ARGS "webengine-system-libopenjpeg2")
qt_configure_add_summary_entry(ARGS "webengine-system-harfbuzz")
qt_configure_add_summary_entry(ARGS "webengine-system-freetype")
qt_configure_add_summary_entry(ARGS "webengine-system-libpci")
@@ -638,9 +685,35 @@ qt_configure_add_report_entry(
MESSAGE "Building fat libray with device and simulator architectures will disable NEON."
CONDITION IOS AND simulator AND device AND QT_FEATURE_qtpdf_build
)
+
+if(LINUX AND QT_FEATURE_xcb AND TARGET Qt::Gui)
+ set(ozone_x11_support X11 LIBDRM XCOMPOSITE XCURSOR XRANDR XI XPROTO XSHMFENCE XTST)
+ set(ozone_x11_error OFF)
+ foreach(xs ${ozone_x11_support})
+ if(NOT ${xs}_FOUND)
+ set(ozone_x11_error ON)
+ set(ozone_x11_error_message "${ozone_x11_error_message}\n-- ${xs} libray not found")
+ endif()
+ endforeach()
+ if(ozone_x11_error)
+ qt_configure_add_report_entry(
+ TYPE WARNING
+ MESSAGE
+ "Could not find all necessary libraries for qpa-xcb support.${ozone_x11_error_message}"
+ )
+ endif()
+endif()
+
if(PRINT_BFD_LINKER_WARNING)
qt_configure_add_report_entry(
TYPE WARNING
MESSAGE "Using bfd linker requires at least 4096 open files limit"
)
endif()
+if(NOT FEATURE_webengine_opus_system AND NOT Perl_FOUND)
+ qt_configure_add_report_entry(
+ TYPE WARNING
+ MESSAGE "No perl found, compiling opus without some optimizations."
+ )
+endif()
+