Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
353 changes: 353 additions & 0 deletions mingw-w64-qt6-webengine-thirdparty/0001-cmake-configure-fixes.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,353 @@
diff --git a/configure.cmake b/configure.cmake
index 931071f..13e6498 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -31,7 +31,9 @@ qt_webengine_set_version(libavutil 58.29.100)
qt_webengine_set_version(libavcodec 60.31.102)
qt_webengine_set_version(libavformat 60.16.100)
qt_webengine_set_version(openh264 2.4.1)
+if(NOT MINGW)
qt_webengine_set_version(windows_sdk 26100) # we only care about minor number "10.0.26100.0"
+endif()


#### find_package checks
@@ -428,6 +430,8 @@ qt_webengine_configure_check("compiler"
CONDITION MSVC OR
(LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
(LINUX 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") OR
(MACOS AND CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
MESSAGE
"${CMAKE_CXX_COMPILER_ID} compiler is not supported."
@@ -511,20 +515,20 @@ qt_webengine_configure_check("android-ndk-api-level"
TAGS ANDROID_PALTFORM
)

-if(WIN32)
+if(MSVC)
qt_webengine_get_windows_sdk_version(windows_sdk_version sdk_minor)
message("-- Windows 10 SDK version: ${windows_sdk_version}")
unset(windows_sdk_version)
-endif()

-qt_webengine_configure_check("windows-sdk"
- MODULES QtWebEngine
- CONDITION NOT WIN32 OR sdk_minor GREATER_EQUAL ${QT_CONFIGURE_CHECK_windows_sdk_version}
- MESSAGE "Build requires Windows 11 SDK at least version 10.0.${QT_CONFIGURE_CHECK_windows_sdk_version}.0"
- DOCUMENTATION "Windows 11 SDK at least version 10.0.${QT_CONFIGURE_CHECK_windows_sdk_version}.0"
- TAGS WINDOWS_PLATFORM
-)
-unset(sdk_minor)
+ qt_webengine_configure_check("windows-sdk"
+ MODULES QtWebEngine
+ CONDITION NOT WIN32 OR sdk_minor GREATER_EQUAL ${QT_CONFIGURE_CHECK_windows_sdk_version}
+ MESSAGE "Build requires Windows 11 SDK at least version 10.0.${QT_CONFIGURE_CHECK_windows_sdk_version}.0"
+ DOCUMENTATION "Windows 11 SDK at least version 10.0.${QT_CONFIGURE_CHECK_windows_sdk_version}.0"
+ TAGS WINDOWS_PLATFORM
+ )
+ unset(sdk_minor)
+endif()

### Support Checks (optional)

@@ -644,19 +648,19 @@ qt_feature("webengine-system-re2" PRIVATE
qt_feature("webengine-system-icu" PRIVATE
LABEL "icu"
AUTODETECT FALSE
- CONDITION UNIX AND ICU_FOUND
+ CONDITION (UNIX OR MINGW) AND ICU_FOUND
)
qt_feature("webengine-system-libwebp" PRIVATE
LABEL "libwebp, libwebpmux and libwebpdemux"
- CONDITION UNIX AND WEBP_FOUND
+ CONDITION (UNIX OR MINGW) AND WEBP_FOUND
)
qt_feature("webengine-system-libopenjpeg2" PRIVATE
LABEL "libopenjpeg2"
- CONDITION UNIX AND LIBOPENJP2_FOUND
+ CONDITION (UNIX OR MINGW) AND LIBOPENJP2_FOUND
)
qt_feature("webengine-system-opus" PRIVATE
LABEL "opus"
- CONDITION UNIX AND OPUS_FOUND
+ CONDITION (UNIX OR MINGW) AND OPUS_FOUND
)
qt_feature("webengine-system-ffmpeg" PRIVATE
LABEL "ffmpeg"
@@ -666,11 +670,11 @@ qt_feature("webengine-system-ffmpeg" PRIVATE
qt_feature("webengine-system-libvpx" PRIVATE
LABEL "libvpx"
AUTODETECT FALSE
- CONDITION UNIX AND TEST_vpx
+ CONDITION (UNIX OR MINGW) AND TEST_vpx
)
qt_feature("webengine-system-snappy" PRIVATE
LABEL "snappy"
- CONDITION UNIX AND TEST_webengine_system_snappy
+ CONDITION (UNIX OR MINGW) AND TEST_webengine_system_snappy
)
qt_feature("webengine-system-glib" PRIVATE
LABEL "glib"
@@ -678,7 +682,7 @@ qt_feature("webengine-system-glib" PRIVATE
)
qt_feature("webengine-system-zlib" PRIVATE
LABEL "zlib"
- CONDITION UNIX AND QT_FEATURE_system_zlib AND ZLIB_FOUND
+ CONDITION (UNIX OR MINGW) AND QT_FEATURE_system_zlib AND ZLIB_FOUND
)
qt_feature("webengine-qt-zlib" PRIVATE
LABEL "qtzlib"
@@ -688,23 +692,23 @@ qt_feature("webengine-qt-zlib" PRIVATE
)
qt_feature("webengine-system-minizip" PRIVATE
LABEL "minizip"
- CONDITION UNIX AND MINIZIP_FOUND
+ CONDITION (UNIX OR MINGW) AND MINIZIP_FOUND
)
qt_feature("webengine-system-libxml" PRIVATE
LABEL "libxml2 and libxslt"
- CONDITION UNIX AND LIBXML2_FOUND
+ CONDITION (UNIX OR MINGW) AND LIBXML2_FOUND
)
qt_feature("webengine-system-lcms2" PRIVATE
LABEL "lcms2"
- CONDITION UNIX AND LCMS2_FOUND
+ CONDITION (UNIX OR MINGW) AND LCMS2_FOUND
)
qt_feature("webengine-system-libpng" PRIVATE
LABEL "png"
- CONDITION UNIX AND TARGET Qt::Gui AND PNG_FOUND AND QT_FEATURE_system_png
+ CONDITION (UNIX OR MINGW) 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
+ CONDITION (UNIX OR MINGW) AND TARGET Qt::Gui AND TIFF_FOUND
)
qt_feature("webengine-qt-libpng" PRIVATE
LABEL "qtpng"
@@ -715,7 +719,7 @@ qt_feature("webengine-qt-libpng" PRIVATE
)
qt_feature("webengine-system-libjpeg" PRIVATE
LABEL "jpeg"
- CONDITION UNIX AND TARGET Qt::Gui AND TEST_jpeg AND QT_FEATURE_system_jpeg
+ CONDITION (UNIX OR MINGW) AND TARGET Qt::Gui AND TEST_jpeg AND QT_FEATURE_system_jpeg
)
qt_feature("webengine-qt-libjpeg" PRIVATE
LABEL "qtjpeg"
@@ -726,7 +730,7 @@ qt_feature("webengine-qt-libjpeg" PRIVATE
)
qt_feature("webengine-system-harfbuzz" PRIVATE
LABEL "harfbuzz"
- CONDITION UNIX AND TARGET Qt::Gui AND HARFBUZZ_FOUND AND QT_FEATURE_system_harfbuzz
+ CONDITION (UNIX OR MINGW) AND TARGET Qt::Gui AND HARFBUZZ_FOUND AND QT_FEATURE_system_harfbuzz
)
qt_feature("webengine-qt-harfbuzz" PRIVATE
LABEL "qtharfbuzz"
@@ -737,7 +741,7 @@ qt_feature("webengine-qt-harfbuzz" PRIVATE
)
qt_feature("webengine-system-freetype" PRIVATE
LABEL "freetype"
- CONDITION UNIX AND TARGET Qt::Gui AND TEST_freetype AND QT_FEATURE_system_freetype
+ CONDITION (UNIX OR MINGW) AND TARGET Qt::Gui AND TEST_freetype AND QT_FEATURE_system_freetype
)
qt_feature("webengine-qt-freetype" PRIVATE
LABEL "qtfreetype"
@@ -758,7 +762,7 @@ qt_feature("webengine-system-libudev" PRIVATE

qt_feature("webengine-system-openh264" PRIVATE
LABEL "openh264"
- CONDITION UNIX AND OPENH264_FOUND
+ CONDITION (UNIX OR MINGW) AND OPENH264_FOUND
)

qt_feature("webengine-ozone-x11" PRIVATE
@@ -795,7 +799,7 @@ qt_configure_add_summary_entry(ARGS "qtpdf-widgets-build")
qt_configure_add_summary_entry(ARGS "qtpdf-quick-build")
qt_configure_end_summary_section()
# >> Optional system libraries
-if(UNIX)
+if(UNIX OR MINGW)
qt_configure_add_summary_section(NAME "Optional system libraries")
qt_configure_add_summary_entry(ARGS "webengine-system-re2")
qt_configure_add_summary_entry(ARGS "webengine-system-icu")
diff --git a/cmake/QtToolchainHelpers.cmake b/cmake/QtToolchainHelpers.cmake
index c692c78..7f8130a 100644
--- a/cmake/QtToolchainHelpers.cmake
+++ b/cmake/QtToolchainHelpers.cmake
@@ -553,9 +553,6 @@ macro(append_toolchain_setup)
list(APPEND gnArgArg target_cpu="${target_cpu}")
if(MINGW)
list(APPEND gnArgArg
- # note '/' prefix
- custom_toolchain="/${buildDir}/target_toolchain:target"
- host_toolchain="/${buildDir}/host_toolchain:host"
host_cpu="${host_cpu}"
)
else()
diff --git a/src/core/api/CMakeLists.txt b/src/core/api/CMakeLists.txt
index 970c071..340fd7f 100644
--- a/src/core/api/CMakeLists.txt
+++ b/src/core/api/CMakeLists.txt
@@ -89,6 +89,7 @@ if(CLANG OR GCC)
target_compile_options(WebEngineCore PRIVATE
"-Wno-unused-parameter"
"-Wno-expansion-to-defined"
+ "-Wno-deprecated-declarations"
)
endif()

diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index eb83a82..d636b2f 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -615,6 +615,54 @@ foreach(arch ${archs})
)
endif()

+ if(MINGW)
+ list(APPEND gnArgArg
+ angle_enable_vulkan=false
+ angle_shared_libvulkan=false
+ devtools_dcheck_always_on=true
+ icu_use_data_file=false
+ use_gio=false
+ use_glib=false
+ use_gtk=false
+ use_v8_context_snapshot=false
+ v8_enable_etw_stack_walking=false
+ v8_use_external_startup_data=false
+ )
+ set(systemLibs re2 libjpeg libpng freetype harfbuzz libwebp libxml
+ opus snappy icu ffmpeg lcms2 libopenjpeg2 libvpx
+ )
+ foreach(slib ${systemLibs})
+ extend_gn_list(gnArgArg
+ ARGS use_system_${slib}
+ CONDITION QT_FEATURE_webengine_system_${slib}
+ )
+ endforeach()
+ extend_gn_list(gnArgArg
+ ARGS use_system_libxslt
+ CONDITION QT_FEATURE_webengine_system_libxml
+ )
+ extend_gn_list(gnArgArg
+ ARGS use_system_zlib use_system_minizip
+ CONDITION QT_FEATURE_webengine_system_zlib AND QT_FEATURE_webengine_system_minizip
+ )
+ extend_gn_list(gnArgArg
+ ARGS pdfium_use_system_zlib
+ CONDITION QT_FEATURE_webengine_system_zlib
+ )
+ extend_gn_list(gnArgArg
+ ARGS pdfium_use_system_libpng
+ CONDITION QT_FEATURE_webengine_system_libpng
+ )
+ extend_gn_list(gnArgArg
+ ARGS pdfium_use_system_libtiff
+ CONDITION QT_FEATURE_webengine_system_libtiff
+ )
+ extend_gn_list(gnArgArg
+ ARGS rtc_system_openh264
+ CONDITION QT_FEATURE_webengine_system_openh264
+ )
+ endif()
+
add_gn_command(
CMAKE_TARGET WebEngineCore
NINJA_TARGETS QtWebEngineCore convert_dict
diff --git a/src/core/configure/BUILD.root.gn.in b/src/core/configure/BUILD.root.gn.in
index 0e611c2..c1965c7 100644
--- a/src/core/configure/BUILD.root.gn.in
+++ b/src/core/configure/BUILD.root.gn.in
@@ -78,6 +78,19 @@ config("QtWebEngineCore_config") {
@GN_INCLUDE_DIRS@,
rebase_path("${target_gen_dir}/.moc/")
]
+
+ if (is_mingw) {
+ # Silenced warnings from skia headers.
+ cflags_cc += [ "-Wno-missing-field-initializers" ]
+
+ if (is_clang) {
+ cflags_cc += [
+ "-Wno-overloaded-virtual",
+ "-Wno-sometimes-uninitialized",
+ "-Wno-unused-private-field",
+ ]
+ }
+ }
}

declare_args() {
@@ -91,7 +104,7 @@ config("embedded_config") {

config("cpp20_config") {
# Chromium is built with C++20
- if (is_win) {
+ if (is_msvc) {
cflags_cc = [ "/std:c++20" ]
} else if(is_gcc) {
cflags_cc = [ "-std=gnu++20" ]
@@ -122,9 +135,12 @@ shared_library("QtWebEngineCore") {
rsp_types = [ "objects", "archives", "libs", "ldir"]
configs += [
":cpp20_config",
- ":QtWebEngineCore_config",
- "//build/config:precompiled_headers"
+ ":QtWebEngineCore_config"
]
+ if (!is_mingw) {
+ configs += [ "//build/config:precompiled_headers" ]
+ }
+
include_dirs = [
"//skia/config",
"//third_party",
@@ -588,9 +604,11 @@ if (is_win) {
static_library("QtWebEngineCoreSandbox") {
complete_static_lib = true
configs += [ ":cpp20_config",
- ":QtWebEngineCore_config",
- "//build/config:precompiled_headers"
+ ":QtWebEngineCore_config"
]
+ if (!is_mingw) {
+ configs += [ "//build/config:precompiled_headers" ]
+ }
output_dir = "$root_out_dir"
sources = [
"@GN_SOURCE_ROOT@/sandbox_win.cpp"
diff --git a/src/pdf/configure/BUILD.root.gn.in b/src/pdf/configure/BUILD.root.gn.in
index e9f54ed..5033aa1 100644
--- a/src/pdf/configure/BUILD.root.gn.in
+++ b/src/pdf/configure/BUILD.root.gn.in
@@ -41,7 +41,7 @@ config("QtPdf_config") {

config("cpp20_config") {
# Chromium headers now use concepts and requires c++20
- if (is_win) {
+ if (is_msvc) {
cflags_cc = [ "/std:c++20" ]
} else {
cflags_cc = [ "-std=c++20" ]
diff --git a/src/process/CMakeLists.txt b/src/process/CMakeLists.txt
index 37bca3b..74d1616 100644
--- a/src/process/CMakeLists.txt
+++ b/src/process/CMakeLists.txt
@@ -33,8 +33,12 @@ if(WIN32)
set_property(TARGET ${qtWebEngineProcessName} PROPERTY WIN32_EXECUTABLE TRUE)
# get libs rsp file, since cmake is not aware of PUBLIC libs for WebEngineCore
get_target_property(libs_rsp WebEngineCore LIBS_RSP)
get_target_property(archives_rsp WebEngineCore ARCHIVES_RSP)
- target_link_options(${qtWebEngineProcessName} PRIVATE "@${libs_rsp}" "@${archives_rsp}" "/STACK:0x800000")
+ if(MSVC)
+ target_link_options(${qtWebEngineProcessName} PRIVATE "@${libs_rsp}" "@${archives_rsp}" "/STACK:0x800000")
+ else()
+ target_link_options(${qtWebEngineProcessName} PRIVATE "@${libs_rsp}" "@${archives_rsp}" "-Wl,--stack,800000")
+ endif()
endif()

if(MACOS)
Loading
Loading