diff options
Diffstat (limited to 'configure.cmake')
-rw-r--r-- | configure.cmake | 173 |
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() + |