diff options
| -rw-r--r-- | cmake/QtConfigureHelpers.cmake | 18 | ||||
| -rw-r--r-- | configure.cmake | 122 |
2 files changed, 83 insertions, 57 deletions
diff --git a/cmake/QtConfigureHelpers.cmake b/cmake/QtConfigureHelpers.cmake index 31b8c6230..7524c9422 100644 --- a/cmake/QtConfigureHelpers.cmake +++ b/cmake/QtConfigureHelpers.cmake @@ -189,6 +189,24 @@ function(qt_webengine_configure_check check) endforeach() endfunction() +# trivial wrapper around qt_webengine_configure_check to avoid excessive typing +macro(qt_webengine_configure_check_for_optional_unix lib condition) + string(SUBSTRING ${lib} 0 1 first_letter) + string(TOUPPER ${first_letter} first_letter) + string(REGEX REPLACE "^.(.*)" "${first_letter}\\1" lib_cap "${lib}") + qt_webengine_configure_check(${lib} + MODULES QtWebEngine + CONDITION NOT UNIX OR ${condition} + MESSAGE "No ${lib} library with version ${QT_CONFIGURE_CHECK_${lib}_version} or later. Using built-in one" + DOCUMENTATION "${lib_cap} library version ${QT_CONFIGURE_CHECK_${lib}_version} + or later. (optional, built-in used otherwise)" + TAGS MACOS_PLATFORM LINUX_PLATFORM + OPTIONAL + ) + unset(first_letter) + unset(lib_cap) +endmacro() + function(qt_webengine_configure_check_for_ulimit) message(STATUS "Checking 'ulimit -n'") execute_process(COMMAND bash -c "ulimit -n" diff --git a/configure.cmake b/configure.cmake index 101fd2908..5625a349a 100644 --- a/configure.cmake +++ b/configure.cmake @@ -6,6 +6,8 @@ if(QT_CONFIGURE_RUNNING) endfunction() endif() +#### Versions + qt_webengine_set_version(cmake ${QT_SUPPORTED_MIN_CMAKE_VERSION_FOR_BUILDING_WEBENGINE}) qt_webengine_set_version(ninja 1.7.2) qt_webengine_set_version(python3 3.8) @@ -13,7 +15,7 @@ qt_webengine_set_version(nodejs 14.9) qt_webengine_set_version(nss 3.26) qt_webengine_set_version(gcc 10.0) qt_webengine_set_version(clang 17.0) -qt_webengine_set_version(gcc-pdf 9.0) +qt_webengine_set_version(gcc_for_pdf 9.0) qt_webengine_set_version(glib 2.32.0) qt_webengine_set_version(glibc 2.16) qt_webengine_set_version(harfbuzz 4.3.0) @@ -29,9 +31,14 @@ qt_webengine_set_version(libavformat 60.16.100) qt_webengine_set_version(openh264 2.4.1) qt_webengine_set_version(windows_sdk 26100) # we only care about minor number "10.0.26100.0" + +#### find_package checks + if(QT_CONFIGURE_RUNNING) function(qt_webengine_configure_check) endfunction() + function(qt_webengine_configure_check_for_optional_unix) + endfunction() function(qt_webengine_configure_check_for_ulimit) endfunction() function(qt_webengine_get_windows_sdk_version) @@ -55,6 +62,8 @@ else() ) endif() +#### pkg_config checks + if(PkgConfig_FOUND) pkg_check_modules(DBUS dbus-1) pkg_check_modules(FONTCONFIG fontconfig) @@ -97,6 +106,8 @@ if(PkgConfig_FOUND) pkg_check_modules(OPENH264 openh264>=${QT_CONFIGURE_CHECK_openh264_version}) endif() +#### Tests + if(Python3_EXECUTABLE) execute_process( COMMAND ${Python3_EXECUTABLE} -c "import html5lib" @@ -105,8 +116,6 @@ if(Python3_EXECUTABLE) ) endif() -#### Tests - if(LINUX) qt_webengine_configure_check_for_ulimit() endif() @@ -261,7 +270,7 @@ int main(void) { }" ) -#### Support Checks +#### Support Checks (required) qt_webengine_configure_check("compiler-cxx20" MODULES QtWebEngine QtPdf @@ -341,6 +350,12 @@ if(QT_GENERATE_SBOM AND QT_SBOM_GENERATE_JSON AND QT_SBOM_REQUIRE_GENERATE_JSON) "SBOM JSON file generation requirements missing, but JSON files were explicitly required. ${sbom_missing_deps_message}" ) endif() +qt_webengine_configure_check("ninja" + MODULES QtWebEngine QtPdf + CONDITION Ninja_FOUND + MESSAGE "Ninja version ${QT_CONFIGURE_CHECK_ninja_version} or later is required." + DOCUMENTATION "Ninja version ${QT_CONFIGURE_CHECK_python3_version} or later." +) qt_webengine_configure_check("python3-html5lib" MODULES QtWebEngine CONDITION Python3_EXECUTABLE AND NOT html5lib_NOT_FOUND @@ -378,22 +393,6 @@ qt_webengine_configure_check("glibc" DOCUMENTATION "Glibc library at least ${QT_CONFIGURE_CHECK_glibc_version} version or later." TAGS LINUX_PLATFORM ) -qt_webengine_configure_check("glib" - MODULES QtWebEngine - CONDITION NOT UNIX OR GLIB_FOUND - MESSAGE "No glib library at least ${QT_CONFIGURE_CHECK_glib_version} version or later. Using build-in one" - DOCUMENTATION "Glib library at least ${QT_CONFIGURE_CHECK_glib_version} version or later." - TAGS MACOS_PLATFORM LINUX_PLATFORM - OPTIONAL -) -qt_webengine_configure_check("harfbuzz" - MODULES QtWebEngine QtPdf - CONDITION NOT UNIX OR HARFBUZZ_FOUND - MESSAGE "No harfbuzz library at least ${QT_CONFIGURE_CHECK_harfbuzz_version} version or later. Using build-in one" - DOCUMENTATION "Harfbuzz library at least ${QT_CONFIGURE_CHECK_harfbuzz_version} version or later." - TAGS MACOS_PLATFORM LINUX_PLATFORM - OPTIONAL -) qt_webengine_configure_check("mesa-headers" MODULES QtWebEngine CONDITION NOT LINUX OR TEST_khr @@ -412,7 +411,7 @@ qt_webengine_configure_check("nss" MODULES QtWebEngine CONDITION NOT LINUX OR NSS_FOUND MESSAGE "Build requires nss >= ${QT_CONFIGURE_CHECK_nss_version}." - DOCUMENTATION "Nss library are least ${QT_CONFIGURE_CHECK_nss_version} version." + DOCUMENTATION "Nss library is at least ${QT_CONFIGURE_CHECK_nss_version} version." TAGS LINUX_PLATFORM ) qt_webengine_configure_check("dbus" @@ -422,36 +421,6 @@ qt_webengine_configure_check("dbus" DOCUMENTATION "Dbus" TAGS LINUX_PKG_CONFIG ) -qt_webengine_configure_check("libudev" - MODULES QtWebEngine - CONDITION NOT UNIX OR LIBUDEV_FOUND - MESSAGE "No libudev found." - DOCUMENTATION "Libudev library." - TAGS MACOS_PLATFORM LINUX_PLATFORM - OPTIONAL -) - -# Only check for the 'xcb' feature if the Gui targets exists, aka Qt was not configured with -# -no-gui. -set(x_libs X11 LIBDRM XCOMPOSITE XCURSOR XRANDR XI XPROTO XSHMFENCE XTST XKBCOMMON XKBFILE XCBDRI3) -set(qpa_xcb_support_check TRUE) -foreach(x_lib ${x_libs}) - string(TOLOWER ${x_lib} x) - qt_webengine_configure_check("${x}" - MODULES QtWebEngine - CONDITION NOT TARGET Qt6::Gui OR NOT LINUX OR NOT QT_FEATURE_xcb OR ${x_lib}_FOUND - MESSAGE "Could not find ${x} library for qpa-xcb support." - DOCUMENTATION "${x}" - TAGS LINUX_XCB - OPTIONAL - ) - if(qpa_xcb_support_check AND NOT QT_CONFIGURE_CHECK_${x}) - set(qpa_xcb_support_check FALSE) - endif() - unset(x) -endforeach() -unset(x_libs) - qt_webengine_configure_check("compiler" MODULES QtWebEngine CONDITION MSVC OR @@ -513,12 +482,12 @@ qt_webengine_configure_check("clang" TAGS LINUX_PLATFORM ) -qt_webengine_configure_check("gcc-pdf" +qt_webengine_configure_check("gcc_for_pdf" MODULES QtPdf CONDITION NOT (LINUX OR MINGW) OR NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR - NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${QT_CONFIGURE_CHECK_gcc-pdf_version} - MESSAGE "Gcc version must be at least ${QT_CONFIGURE_CHECK_gcc-pdf_version}" - DOCUMENTATION "Gcc version must be at least ${QT_CONFIGURE_CHECK_gcc-pdf_version}." + NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${QT_CONFIGURE_CHECK_gcc_for_pdf_version} + MESSAGE "GCC version must be at least ${QT_CONFIGURE_CHECK_gcc_for_pdf_version}" + DOCUMENTATION "Gcc version must be at least ${QT_CONFIGURE_CHECK_gcc_for_pdf_version}" TAGS LINUX_PLATFORM ) @@ -537,6 +506,43 @@ qt_webengine_configure_check("windows-sdk" ) unset(sdk_minor) +### Support Checks (optional) + +# Only check for the 'xcb' feature if the Gui targets exists, aka Qt was not configured with +# -no-gui. +set(x_libs X11 LIBDRM XCOMPOSITE XCURSOR XRANDR XI XPROTO XSHMFENCE XTST XKBCOMMON XKBFILE XCBDRI3) +set(qpa_xcb_support_check TRUE) +foreach(x_lib ${x_libs}) + string(TOLOWER ${x_lib} lib) + qt_webengine_configure_check("${lib}" + MODULES QtWebEngine + CONDITION NOT TARGET Qt6::Gui OR NOT LINUX OR NOT QT_FEATURE_xcb OR ${x_lib}_FOUND + MESSAGE "Could not find ${lib} library for qpa-xcb support." + DOCUMENTATION "${lib}" + TAGS LINUX_XCB + OPTIONAL + ) + if(qpa_xcb_support_check AND NOT QT_CONFIGURE_CHECK_${lib}) + set(qpa_xcb_support_check FALSE) + endif() +endforeach() +unset(lib) +unset(x_libs) + +qt_webengine_configure_check_for_optional_unix(glib GLIB_FOUND) +qt_webengine_configure_check_for_optional_unix(harfbuzz HARFBUZZ_FOUND) +qt_webengine_configure_check_for_optional_unix(libudev LIBUDEV_FOUND) +qt_webengine_configure_check_for_optional_unix(libpng PNG_FOUND) +qt_webengine_configure_check_for_optional_unix(libtiff TIFF_FOUND) +qt_webengine_configure_check_for_optional_unix(re2 TEST_re2) +qt_webengine_configure_check_for_optional_unix(icu ICU_FOUND) +qt_webengine_configure_check_for_optional_unix(opus OPUS_FOUND) +qt_webengine_configure_check_for_optional_unix(vpx VPX_FOUND) +qt_webengine_configure_check_for_optional_unix(libavutil FFMPEG_FOUND) +qt_webengine_configure_check_for_optional_unix(libavcodec FFMPEG_FOUND) +qt_webengine_configure_check_for_optional_unix(libavformat FFMPEG_FOUND) +qt_webengine_configure_check_for_optional_unix(openh264 OPENH264_FOUND) + #### Features qt_feature("qtwebengine-build" PUBLIC @@ -618,7 +624,7 @@ qt_feature("webengine-system-re2" PRIVATE qt_feature("webengine-system-icu" PRIVATE LABEL "icu" AUTODETECT FALSE - CONDITION UNIX AND NOT APPLE AND ICU_FOUND + CONDITION UNIX AND ICU_FOUND ) qt_feature("webengine-system-libwebp" PRIVATE LABEL "libwebp, libwebpmux and libwebpdemux" @@ -743,11 +749,13 @@ qt_feature("webengine-ozone-x11" PRIVATE AND qpa_xcb_support_check ) +#FIXME: fix version numbers when qt_feature_with_configure_check megred as +#it requires diffrent evaluation order qt_feature("webengine-gcc-legacy-support" PRIVATE LABEL "gcc-legacy-support" CONDITION UNIX AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0 - AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL ${QT_CONFIGURE_CHECK_gcc-pdf_version} + AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0 ) #### Summary |
