summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.cmake.conf1
-rw-r--r--CMakeLists.txt113
-rw-r--r--cmake/FindGPerf.cmake20
-rw-r--r--cmake/FindGn.cmake23
-rw-r--r--cmake/FindNinja.cmake31
-rw-r--r--cmake/FindNodejs.cmake32
-rw-r--r--cmake/FindSnappy.cmake35
-rw-r--r--cmake/Functions.cmake58
-rw-r--r--configure.cmake462
-rw-r--r--src/core/CMakeLists.txt66
-rw-r--r--src/core/api/configure.cmake155
-rw-r--r--src/core/configure/BUILD.root.gn.in516
-rw-r--r--src/core/configure/BUILD.toolchain.gn.in43
-rw-r--r--src/core/generator.cmake263
-rw-r--r--src/core/media_capture_devices_dispatcher.cpp3
-rw-r--r--src/gn/CMakeLists.txt36
-rw-r--r--src/ninja/CMakeLists.txt37
-rw-r--r--tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp12
18 files changed, 1893 insertions, 13 deletions
diff --git a/.cmake.conf b/.cmake.conf
new file mode 100644
index 000000000..930548045
--- /dev/null
+++ b/.cmake.conf
@@ -0,0 +1 @@
+set(QT_REPO_MODULE_VERSION "6.0.0")
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 000000000..fd00f06e9
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,113 @@
+cmake_minimum_required(VERSION 3.18.0)
+
+include(.cmake.conf)
+include(ExternalProject)
+include(cmake/Functions.cmake)
+
+project(QtWebEngineSuperBuild
+ VERSION "${QT_REPO_MODULE_VERSION}"
+ DESCRIPTION "Qt WebEngine Libraries"
+ HOMEPAGE_URL "https://qt.io/"
+ LANGUAGES CXX C
+)
+
+find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS BuildInternals Core)
+
+set(installDir ${CMAKE_CURRENT_BINARY_DIR}/install)
+
+### FEATURES
+
+qt_build_repo_begin()
+qt_feature_module_begin(ONLY_EVALUATE_FEATURES)
+# Enable printing of feature summary by forcing qt_configure_record_command
+# to work in spite of ONLY_EVALUATE_FEATURES.
+set(__QtFeature_only_evaluate_features OFF)
+include(configure.cmake)
+include(src/core/api/configure.cmake)
+qt_feature_module_end(ONLY_EVALUATE_FEATURES)
+qt_build_repo_end()
+
+if(NOT ${webEngineSupport})
+ add_custom_target(WebEngineErrorMessage ALL
+ ${CMAKE_COMMAND} -E cmake_echo_color --red "QtWebEngine will not be built: ${webEngineError}"
+ COMMENT "Check QtWebEngine support")
+ message("-- Support check for QtWebEngine failed: ${webEngineError}")
+ set(QT_FEATURE_qtwebengine_build OFF CACHE BOOL "Build QtWebEngine" FORCE)
+endif()
+
+if(NOT ${pdfSupport})
+ add_custom_target(PdfErrorMessage ALL
+ ${CMAKE_COMMAND} -E cmake_echo_color --red "QtPdf will not be built: ${pdfError}"
+ COMMENT "Check QtPdf support")
+ message("-- Support check for QtPdf failed: ${pdfError}")
+ set(QT_FEATURE_qtpdf_build OFF CACHE BOOL "Build QtPdf" FORCE)
+endif()
+
+if(NOT QT_FEATURE_qtwebengine_build AND NOT QT_FEATURE_qtpdf_build)
+ return()
+endif()
+
+### NINJA
+
+if(NOT Ninja_FOUND)
+ externalproject_add(ninja
+ SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/src/ninja
+ BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/ninja
+ INSTALL_DIR ${installDir}
+ PREFIX ninja
+ USES_TERMINAL_BUILD ON
+ CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release
+ -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+ -DCMAKE_PREFIX_PATH:PATH=<INSTALL_DIR>
+)
+endif()
+
+### GN
+
+if(NOT Gn_FOUND)
+ externalproject_add(gn
+ SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/src/gn
+ BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/gn
+ INSTALL_DIR ${installDir}
+ PREFIX gn
+ USES_TERMINAL_BUILD ON
+ CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release
+ -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+ -DCMAKE_PREFIX_PATH:PATH=<INSTALL_DIR>
+ -DWEBENGINE_ROOT_BUILD_DIR=${CMAKE_CURRENT_BINARY_DIR}
+)
+endif()
+
+### LIBS
+
+# on windows source path can be specified without hard drive letter,
+# however we need that for gn use REALPATH
+get_filename_component(WEBENGINE_ROOT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" REALPATH)
+get_qt_features(featureList webengine)
+get_qt_features(featureList qtwebengine)
+
+list(TRANSFORM featureList PREPEND "-D")
+list(APPEND webenginecoreCmakeArgs
+ "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}"
+ "-DWEBENGINE_ROOT_BUILD_PATH=${CMAKE_CURRENT_BINARY_DIR}"
+ "-DWEBENGINE_ROOT_SOURCE_DIR=${WEBENGINE_ROOT_SOURCE_DIR}"
+ "${featureList}")
+
+externalproject_add(libs
+ SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/src/core
+ BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/src/core
+ INSTALL_DIR ${installDir}
+ PREFIX libs
+ USES_TERMINAL_CONFIGURE ON
+ USES_TERMINAL_BUILD ON
+ CMAKE_ARGS ${webenginecoreCmakeArgs}
+)
+
+if(NOT Gn_FOUND)
+ externalproject_add_stepdependencies(libs install gn)
+endif()
+
+if(NOT Ninja_FOUND)
+ externalproject_add_stepdependencies(gn install ninja)
+endif()
+
diff --git a/cmake/FindGPerf.cmake b/cmake/FindGPerf.cmake
new file mode 100644
index 000000000..85b55f1b8
--- /dev/null
+++ b/cmake/FindGPerf.cmake
@@ -0,0 +1,20 @@
+find_program(GPerf_EXECUTABLE NAMES gperf)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GPerf
+ FOUND_VAR
+ GPerf_FOUND
+ REQUIRED_VARS
+ GPerf_EXECUTABLE
+)
+
+if(GPerf_FOUND AND NOT TARGET GPerf::GPerf)
+ add_executable(GPerf::GPerf IMPORTED)
+ set_target_properties(GPerf::GPerf PROPERTIES IMPORTED_LOCATION "${GPerf_EXECUTABLE}")
+endif()
+
+include(FeatureSummary)
+set_package_properties(GPerf PROPERTIES
+ URL "https://www.gnu.org/software/gperf/"
+ DESCRIPTION "Perfect hash function generator"
+)
diff --git a/cmake/FindGn.cmake b/cmake/FindGn.cmake
new file mode 100644
index 000000000..dfbe5b363
--- /dev/null
+++ b/cmake/FindGn.cmake
@@ -0,0 +1,23 @@
+if (NOT DEFINED WEBENGINE_ROOT_BUILD_DIR)
+ set(WEBENGINE_ROOT_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/../..)
+endif()
+
+set(CMAKE_PROGRAM_PATH ${WEBENGINE_ROOT_BUILD_DIR}/install/bin)
+find_program(Gn_EXECUTABLE NAMES gn)
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(
+ Gn
+ REQUIRED_VARS Gn_EXECUTABLE)
+
+if(Gn_FOUND AND NOT TARGET Gn::gn)
+ add_executable(Gn::gn IMPORTED)
+ set_property(TARGET Gn::gn PROPERTY IMPORTED_LOCATION ${Gn_EXECUTABLE})
+endif()
+
+include(FeatureSummary)
+set_package_properties(Gn PROPERTIES
+ URL "https://gn.googlesource.com/gn/"
+ DESCRIPTION "Meta-build system"
+)
diff --git a/cmake/FindNinja.cmake b/cmake/FindNinja.cmake
new file mode 100644
index 000000000..3615d58b9
--- /dev/null
+++ b/cmake/FindNinja.cmake
@@ -0,0 +1,31 @@
+if (NOT DEFINED WEBENGINE_ROOT_BUILD_DIR)
+ set(WEBENGINE_ROOT_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/..)
+endif()
+
+set(CMAKE_PROGRAM_PATH ${WEBENGINE_ROOT_BUILD_DIR}/install/bin)
+find_program(Ninja_EXECUTABLE NAMES ninja ninja-build)
+
+if(Ninja_EXECUTABLE)
+ execute_process(
+ COMMAND ${Ninja_EXECUTABLE} --version
+ OUTPUT_VARIABLE Ninja_VERSION
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(
+ Ninja
+ REQUIRED_VARS Ninja_EXECUTABLE
+ VERSION_VAR Ninja_VERSION)
+
+if(Ninja_FOUND AND NOT TARGET Ninja::ninja)
+ add_executable(Ninja::ninja IMPORTED)
+ set_property(TARGET Ninja::ninja PROPERTY IMPORTED_LOCATION ${Ninja_EXECUTABLE})
+endif()
+
+include(FeatureSummary)
+set_package_properties(Ninja PROPERTIES
+ URL "https://ninja-build.org/"
+ DESCRIPTION "Build tool"
+)
diff --git a/cmake/FindNodejs.cmake b/cmake/FindNodejs.cmake
new file mode 100644
index 000000000..0e5efe4a3
--- /dev/null
+++ b/cmake/FindNodejs.cmake
@@ -0,0 +1,32 @@
+find_program(Nodejs_EXECUTABLE NAMES node nodejs)
+
+if(Nodejs_EXECUTABLE)
+ execute_process(
+ COMMAND ${Nodejs_EXECUTABLE} --version
+ OUTPUT_VARIABLE Nodejs_VERSION
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
+
+string (REGEX MATCHALL "([1-9][0-9])\..*" Nodejs_VERSION "${Nodejs_VERSION}")
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Nodejs
+ FOUND_VAR
+ Nodejs_FOUND
+ VERSION_VAR
+ Nodejs_VERSION
+ REQUIRED_VARS
+ Nodejs_EXECUTABLE
+)
+
+if(Nodejs_FOUND AND NOT TARGET Nodejs::Nodejs)
+ add_executable(Nodejs::Nodejs IMPORTED)
+ set_target_properties(Nodejs::Nodejs PROPERTIES IMPORTED_LOCATION "${Nodejs_EXECUTABLE}")
+endif()
+
+include(FeatureSummary)
+set_package_properties(Nodejs PROPERTIES
+ URL "https://nodejs.org/"
+ DESCRIPTION "JavaScript runtime environment that runs on the V8 engine"
+)
diff --git a/cmake/FindSnappy.cmake b/cmake/FindSnappy.cmake
new file mode 100644
index 000000000..1470c55a9
--- /dev/null
+++ b/cmake/FindSnappy.cmake
@@ -0,0 +1,35 @@
+
+if(TARGET Snappy::Snappy)
+ set(Snappy_FOUND TRUE)
+ return()
+endif()
+find_package(PkgConfig QUIET)
+
+if(PkgConfig_FOUND)
+ pkg_check_modules(Snappy snappy IMPORTED_TARGET)
+
+ if (TARGET PkgConfig::Snappy)
+ add_library(Snappy::Snappy INTERFACE IMPORTED)
+ target_link_libraries(Snappy::Snappy INTERFACE PkgConfig::Snappy)
+ set(Snappy_FOUND TRUE)
+ endif()
+endif()
+
+if(NOT TARGET Snappy::Snappy)
+ find_path(SNAPPY_INCLUDE_DIR NAMES snappy.h)
+ find_library(SNAPPY_LIBRARY NAMES snappy)
+
+ if(SNAPPY_LIBRARY AND SNAPPY_INCLUDE_DIR)
+ add_library(Snappy::Snappy UNKNOWN IMPORTED)
+ set_target_properties(Snappy::Snappy PROPERTIES
+ IMPORTED_LOCATION ${SNAPPY_LIBRARY}
+ INTERFACE_INCLUDE_DIRECTORIES ${SNAPPY_INCLUDE_DIR}
+ )
+ endif()
+
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(Snappy REQUIRED_VARS
+ SNAPPY_LIBRARY
+ SNAPPY_INCLUDE_DIR
+ )
+endif()
diff --git a/cmake/Functions.cmake b/cmake/Functions.cmake
new file mode 100644
index 000000000..89dff400f
--- /dev/null
+++ b/cmake/Functions.cmake
@@ -0,0 +1,58 @@
+function(assertTargets errorResult supportResult)
+ if(NOT DEFINED ${supportResult})
+ set(${supportResult} ON PARENT_SCOPE)
+ set(${supportResult} ON)
+ endif()
+ if(${${supportResult}})
+ list(REMOVE_ITEM ARGN ${errorResult})
+ list(REMOVE_ITEM ARGN ${supportResult})
+ foreach(qtTarget IN ITEMS ${ARGN})
+ if(NOT TARGET Qt::${qtTarget})
+ set(${errorResult} "Missing required Qt::${qtTarget}." PARENT_SCOPE)
+ set(${supportResult} OFF PARENT_SCOPE)
+ return()
+ endif()
+ endforeach()
+ endif()
+endfunction()
+
+# TODO: this should be idealy in qtbase
+function(add_check_for_support errorResult supportResult)
+ if(NOT DEFINED ${supportResult})
+ set(${supportResult} ON PARENT_SCOPE)
+ set(${supportResult} ON)
+ endif()
+ if (${${supportResult}})
+ qt_parse_all_arguments(arg "add_check_for_support"
+ "" "MODULE" "MESSAGE;CONDITION" "${ARGN}")
+ if ("x${arg_CONDITION}" STREQUAL x)
+ set(arg_CONDITION ON)
+ endif()
+ qt_evaluate_config_expression(result ${arg_CONDITION})
+ if(NOT ${result})
+ set(${supportResult} OFF PARENT_SCOPE)
+ set(${errorResult} ${arg_MESSAGE} PARENT_SCOPE)
+ qt_configure_add_report_entry(TYPE WARNING
+ MESSAGE "${arg_MODULE} won't be built. ${arg_MESSAGE}"
+ CONDITION ON
+ )
+ endif()
+ endif()
+endfunction()
+
+function(get_qt_features outList module)
+ get_cmake_property(variableList VARIABLES)
+ set(_featureList "")
+ foreach (variableKey ${variableList})
+ unset(FOUND)
+ string(REGEX MATCH QT_FEATURE_${module} FOUND ${variableKey})
+ if (FOUND)
+ list(APPEND _featureList "${variableKey}=${${variableKey}}")
+ endif()
+ endforeach()
+ if ("${${outList}}" STREQUAL "")
+ set(${outList} ${_featureList} PARENT_SCOPE)
+ else()
+ set(${outList} "${${outList}}" "${_featureList}" PARENT_SCOPE)
+ endif()
+endfunction()
diff --git a/configure.cmake b/configure.cmake
new file mode 100644
index 000000000..906e64017
--- /dev/null
+++ b/configure.cmake
@@ -0,0 +1,462 @@
+#### Inputs
+
+#### Libraries
+
+find_package(Ninja 1.7.2)
+find_package(Gn)
+find_package(Python2 2.7.5)
+find_package(GPerf)
+find_package(BISON)
+find_package(FLEX)
+find_package(Protobuf)
+find_package(PkgConfig)
+find_package(Snappy)
+find_package(Nodejs)
+find_package(Qt6 ${PROJECT_VERSION} CONFIG QUIET OPTIONAL_COMPONENTS Gui Widgets Network OpenGL OpenGLWidgets Quick Qml)
+
+if(PkgConfig_FOUND)
+ pkg_check_modules(DBUS dbus-1)
+ pkg_check_modules(FONTCONFIG fontconfig)
+ pkg_check_modules(LIBDRM libdrm)
+ pkg_check_modules(XCOMPOSITE xcomposite)
+ pkg_check_modules(XCURSOR xcursor)
+ pkg_check_modules(XI xi)
+ pkg_check_modules(XTST xtst)
+ pkg_check_modules(NSS nss>=3.26)
+ 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.4.0 harfbuzz-subset>=2.4.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(ZLIB zlib)
+ pkg_check_modules(RE2 re2 IMPORTED_TARGET)
+ pkg_check_modules(ICU icu-uc>=65 icu-i18n>=65)
+ 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(OPUS opus>=1.3.1)
+ pkg_check_modules(VPX vpx>=1.10.0 IMPORTED_TARGET)
+ pkg_check_modules(LIBPCI libpci)
+endif()
+
+#### Tests
+
+qt_config_compile_test(re2
+ LABEL "re2"
+ LIBRARIES
+ PkgConfig::RE2
+ CODE
+"
+#include \"re2/filtered_re2.h\"
+int main() {
+ std::string s;
+ re2::FilteredRE2 fre2(1);
+ int id = 0;
+ fre2.Add(s, {}, &id);
+ const RE2 &re2 = fre2.GetRE2(id);
+}"
+)
+
+qt_config_compile_test(vpx
+ LABEL "vpx"
+ LIBRARIES
+ PkgConfig::VPX
+ CODE
+"
+#include \"vpx/vpx_encoder.h\"
+#include \"vpx/vp8cx.h\"
+#include \"vpx/vpx_image.h\"
+int main() {
+ vpx_codec_cx_pkt pkt;
+ pkt.data.frame.width[0] = 0u;
+ pkt.data.frame.height[0] = 0u;
+ auto a = CONSTRAINED_FROM_ABOVE_DROP;
+ auto b = VPX_IMG_FMT_NV12;
+}"
+)
+
+qt_config_compile_test(snappy
+ LABEL "snappy"
+ LIBRARIES
+ Snappy::Snappy
+ CODE
+"
+#include \"snappy.h\"
+int main() {
+ snappy::Source *src = 0;
+ snappy::Sink *sink = 0;
+ return 0;
+}"
+)
+
+qt_config_compile_test(libxml2
+ LABEL "compatible libxml2 and libxslt"
+ LIBRARIES
+ PkgConfig::LIBXML2
+ CODE
+"
+#include \"libxml/xmlversion.h\"
+#if !defined(LIBXML_ICU_ENABLED)
+#error libxml icu not enabled
+#endif
+int main() {
+ return 0;
+}"
+)
+
+qt_config_compile_test(jpeg
+ LABEL "compatible libjpeg"
+ LIBRARIES
+ PkgConfig::JPEG
+ CODE
+"
+#include <cstdio>
+#include <cstring>
+extern \"C\" {
+ #include <jpeglib.h>
+}
+int main() {
+ JDIMENSION dummy;
+ jpeg_crop_scanline(nullptr, &dummy, &dummy);
+ jpeg_skip_scanlines(nullptr, dummy);
+}"
+)
+
+qt_config_compile_test(freetype
+ LABEL "freetype >= 2.4.2"
+ LIBRARIES
+ PkgConfig::FREETYPE
+ CODE
+"
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#if ((FREETYPE_MAJOR*10000 + FREETYPE_MINOR*100 + FREETYPE_PATCH) < 20402)
+# error This version of freetype is too old.
+#endif
+int main() {
+ FT_Face ft_face = 0;
+ FT_Reference_Face(ft_face);
+ return 0;
+}"
+)
+
+qt_config_compile_test(glibc
+ LABEL "glibc > 2.16"
+ CODE
+"
+#include <features.h>
+#if __GLIBC__ < 2 || __GLIBC_MINOR__ < 17
+#error glibc versions below 2.17 are not supported
+#endif
+int main(void) {
+ return 0;
+}"
+)
+
+qt_config_compile_test(khr
+ LABEL "khr"
+ CODE
+"
+#include <KHR/khrplatform.h>
+int main(void) {
+ return 0;
+}"
+)
+
+qt_config_compile_test(winversion
+ LABEL "winversion"
+ CODE
+"
+#if !defined(__clang__) && _MSC_FULL_VER < 191426428
+#error unsupported Visual Studio version
+#endif
+int main(void){
+ return 0;
+}"
+)
+
+
+#### Features
+
+qt_feature("qtwebengine-build" PRIVATE
+ LABEL "Build Qt WebEngine"
+ PURPOSE "Enables building the Qt WebEngine modules."
+)
+qt_feature("qtwebengine-widgets-build" PRIVATE
+ LABEL "Build Qt WebEngineWidgets"
+ PURPOSE "Enables building the Qt WebEngineWidgets module."
+ CONDITION TARGET Qt::Widgets
+)
+qt_feature("qtwebengine-quick-build" PRIVATE
+ LABEL "Build Qt WebEngineQuick"
+ PURPOSE "Enables building the Qt WebEngineQuick module."
+ CONDITION TARGET Qt::Quick AND TARGET Qt::Qml
+)
+qt_feature("qtpdf-build" PRIVATE
+ LABEL "Build Qt PDF"
+ PURPOSE "Enables building the Qt PDF rendering module."
+)
+qt_feature("webengine-system-ninja" PRIVATE
+ LABEL "Use system ninja"
+ CONDITION Ninja_FOUND
+)
+qt_feature("webengine-system-gn" PRIVATE
+ LABEL "Use system gn"
+ AUTODETECT FALSE
+ CONDITION GN_Found
+)
+qt_feature("webengine-developer-build" PRIVATE
+ LABEL "Developer build"
+ PURPOSE "Enables the developer build configuration."
+ AUTODETECT QT_FEATURE_private_tests
+)
+qt_feature("webengine-system-re2" PRIVATE
+ LABEL "re2"
+ AUTODETECT UNIX AND TEST_re2
+)
+qt_feature("webengine-system-icu" PRIVATE
+ LABEL "icu"
+ AUTODETECT FALSE
+ CONDITION ICU_FOUND
+)
+qt_feature("webengine-system-libwebp" PRIVATE
+ LABEL "libwebp, libwebpmux and libwebpdemux"
+ CONDITION UNIX AND WEBP_FOUND
+)
+qt_feature("webengine-system-opus" PRIVATE
+ LABEL "opus"
+ CONDITION UNIX AND OPUS_FOUND
+)
+qt_feature("webengine-system-ffmpeg" PRIVATE
+ LABEL "ffmpeg"
+ AUTODETECT FALSE
+ CONDITION FFMPEG_FOUND AND QT_FEATURE_webengine_system_opus AND QT_FEATURE_webengine_system_libwebp
+)
+qt_feature("webengine-system-libvpx" PRIVATE
+ LABEL "libvpx"
+ CONDITION UNIX AND TEST_vpx
+)
+qt_feature("webengine-system-snappy" PRIVATE
+ LABEL "snappy"
+ CONDITION UNIX AND TEST_snappy
+)
+qt_feature("webengine-system-glib" PRIVATE
+ LABEL "glib"
+ CONDITION UNIX AND GLIB_FOUND
+)
+qt_feature("webengine-system-zlib" PRIVATE
+ LABEL "zlib"
+ CONDITION UNIX AND QT_FEATURE_system_zlib AND ZLIB_FOUND
+)
+qt_feature("webengine-system-minizip" PRIVATE
+ LABEL "minizip"
+ CONDITION UNIX AND MINIZIP_FOUND
+)
+qt_feature("webengine-system-libevent" PRIVATE
+ LABEL "libevent"
+ AUTODETECT FALSE # coin bug 711
+ CONDITION UNIX AND LIBEVENT_FOUND
+)
+qt_feature("webengine-system-protobuf" PRIVATE
+ LABEL "protobuf"
+ CONDITION UNIX AND Protobuf_FOUND
+)
+qt_feature("webengine-system-libxml" PRIVATE
+ LABEL "libxml2 and libxslt"
+ CONDITION UNIX AND TEST_libxml2
+)
+qt_feature("webengine-system-lcms2" PRIVATE
+ LABEL "lcms2"
+ CONDITION UNIX 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
+)
+qt_feature("webengine-system-libjpeg" PRIVATE
+ LABEL "jpeg"
+ CONDITION UNIX AND TARGET Qt::Gui AND TEST_jpeg AND QT_FEATURE_system_jpeg
+)
+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-system-freetype" PRIVATE
+ LABEL "freetype"
+ CONDITION UNIX AND TARGET Qt::Gui AND TEST_freetype AND QT_FEATURE_system_freetype
+)
+qt_feature("webengine-system-libpci" PRIVATE
+ LABEL "libpci"
+ CONDITION UNIX AND LIBPCI_FOUND
+)
+
+qt_feature("webengine-ozone-x11" PRIVATE
+ LABEL "Support qpa-xcb"
+ CONDITION LINUX
+ AND TARGET Qt::Gui
+ AND QT_FEATURE_xcb
+ AND X11_FOUND
+ AND LIBDRM_FOUND
+ AND XCOMPOSITE_FOUND
+ AND XCURSOR_FOUND
+ AND XI_FOUND
+ AND XPROTO_FOUND
+ AND XTST_FOUND
+)
+
+#### Support Checks
+
+assertTargets(webEngineError webEngineSupport Gui Widgets OpenGL OpenGLWidgets Quick Qml)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ CONDITION LINUX OR WIN32 OR MACOS
+ MESSAGE "Build can be done only on Linux, Windows or macOS."
+)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ CONDITION TARGET Nodejs::Nodejs
+ MESSAGE "Nodejs is required."
+)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ CONDITION Python2_FOUND
+ MESSAGE "Python version 2 (2.7.5 or later) is required."
+)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ CONDITION GPerf_FOUND
+ MESSAGE "Tool gperf is required."
+)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ CONDITION BISON_FOUND
+ MESSAGE "Tool bison is required."
+)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ CONDITION FLEX_FOUND
+ MESSAGE "Tool flex is required."
+)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ CONDITION NOT LINUX OR PkgConfig_FOUND
+ MESSAGE "A pkg-config support is required."
+)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ CONDITION NOT LINUX OR TEST_glibc
+ MESSAGE "A suitable version >= 2.17 of glibc is required."
+)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ CONDITION NOT LINUX OR TEST_khr
+ MESSAGE "Build requires Khronos development headers for build(see mesa/libegl1-mesa-dev)."
+)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ CONDITION NOT LINUX OR FONTCONFIG_FOUND
+ MESSAGE "Build requires fontconfig."
+)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ CONDITION NOT LINUX OR NSS_FOUND
+ MESSAGE "Build requires nss >= 3.26."
+)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ CONDITION NOT LINUX OR DBUS_FOUND
+ MESSAGE "Build requires dbus."
+)
+set(xcbSupport X11 LIBDRM XCOMPOSITE XCURSOR XI XPROTO XTST)
+foreach(xs ${xcbSupport})
+ if(${xs}_FOUND)
+ set(xcbErrorMessage "${xcbErrorMessage} ${xs}:YES")
+ else()
+ set(xcbErrorMessage "${xcbErrorMessage} ${xs}:NO")
+ endif()
+endforeach()
+add_check_for_support(webEngineError webEngineSupport
+ MODULE 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}"
+)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ CONDITION NOT WIN32 OR TEST_winversion
+ MESSAGE "Build requires Visual Studio 2019 or higher."
+)
+add_check_for_support(webEngineError webEngineSupport
+ MODULE QtWebEngine
+ 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)
+ MESSAGE "${CMAKE_CXX_COMPILER_ID} compiler is not supported."
+)
+add_check_for_support(pdfError pdfSupport
+ MODULE QtPdf
+ CONDITION OFF
+ MESSAGE "QtPdf is missing cmake port."
+)
+
+#### Summary
+
+# > Qt WebEngine Build Features
+qt_configure_add_summary_section(NAME "Build Features")
+qt_configure_add_summary_entry(ARGS "webengine-system-ninja")
+qt_configure_add_summary_entry(ARGS "webengine-system-gn")
+qt_configure_add_summary_entry(ARGS "webengine-developer-build")
+# >> Optional system libraries
+if(UNIX)
+ 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")
+ qt_configure_add_summary_entry(ARGS "webengine-system-libwebp")
+ qt_configure_add_summary_entry(ARGS "webengine-system-opus")
+ qt_configure_add_summary_entry(ARGS "webengine-system-ffmpeg")
+ qt_configure_add_summary_entry(ARGS "webengine-system-libvpx")
+ qt_configure_add_summary_entry(ARGS "webengine-system-snappy")
+ qt_configure_add_summary_entry(ARGS "webengine-system-glib")
+ qt_configure_add_summary_entry(ARGS "webengine-system-zlib")
+ qt_configure_add_summary_entry(ARGS "webengine-system-minizip")
+ qt_configure_add_summary_entry(ARGS "webengine-system-libevent")
+ qt_configure_add_summary_entry(ARGS "webengine-system-protobuf")
+ 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-libjpeg")
+ 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")
+ qt_configure_end_summary_section()
+endif()
+# << Optional system libraries
+qt_configure_end_summary_section()
+# < Qt WebEngine Build Features
+
+qt_configure_add_report_entry(
+ TYPE NOTE
+ MESSAGE "QtWebEngine build is disabled by user."
+ CONDITION ${webEngineSupport} AND NOT QT_FEATURE_qtwebengine_build
+)
+
+qt_configure_add_report_entry(
+ TYPE NOTE
+ MESSAGE "QtPdf build is disabled by user."
+ CONDITION ${pdfSupport} AND NOT QT_FEATURE_qtpdf_build
+)
+
+qt_configure_add_report_entry(
+ TYPE WARNING
+ MESSAGE "Building fat libray with device and simulator architectures will disable NEON."
+ CONDITION IOS AND simulator AND device AND QT_FEATURE_qtpdf_build
+)
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
new file mode 100644
index 000000000..bdb937e19
--- /dev/null
+++ b/src/core/CMakeLists.txt
@@ -0,0 +1,66 @@
+cmake_minimum_required(VERSION 3.18.0)
+
+project(QtWebEngineCore
+ VERSION "6.0.0"
+ DESCRIPTION "QtWebEngineCore"
+ HOMEPAGE_URL "https://doc.qt.io/qt-5/qtwebenginecore-module.html"
+ LANGUAGES CXX C)
+
+if (NOT DEFINED CMAKE_WEBENGINE_ROOT_BUILD_PATH)
+ get_filename_component(CMAKE_WEBENGINE_ROOT_BUILD_PATH ${CMAKE_CURRENT_BINARY_DIR}/../.. ABSOLUTE)
+endif()
+
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/../../cmake")
+set(buildDir "${CMAKE_CURRENT_BINARY_DIR}/debug")
+
+include(${PROJECT_SOURCE_DIR}/../../cmake/Functions.cmake)
+
+get_qt_features(featureList webengine)
+message(${featureList})
+
+find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS BuildInternals Core)
+find_package(Qt6 ${PROJECT_VERSION} CONFIG OPTIONAL_COMPONENTS Gui Widgets Network OpenGL OpenGLWidgets Quick Qml QuickTest Test)
+find_package(Gn REQUIRED)
+find_package(Ninja REQUIRED)
+find_package(Python2 REQUIRED)
+
+qt_build_repo_begin()
+
+include(generator.cmake)
+configure_file(${PROJECT_SOURCE_DIR}/configure/BUILD.toolchain.gn.in ${buildDir}/toolchain/BUILD.gn @ONLY)
+configure_file(${PROJECT_SOURCE_DIR}/configure/BUILD.root.gn.in ${buildDir}/BUILD.gn @ONLY)
+
+get_target_property(gnCmd Gn::gn IMPORTED_LOCATION)
+
+set(gnArg help)
+
+message("configure with gn")
+execute_process(
+ COMMAND ${gnCmd} ${gnArg}
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ COMMAND_ECHO STDOUT
+ RESULT_VARIABLE gnResult
+ OUTPUT_VARIABLE gnOutput
+ ERROR_VARIABLE gnError
+ )
+
+if(NOT gnResult EQUAL 0)
+ message(FATAL_ERROR "Calling gn - FAILED ! \n${gnOutput}\n${gnError}")
+endif()
+
+add_custom_command(
+ OUTPUT QtWebEngineCore.stamp
+ WORKING_DIRECTORY ${buildDir}
+ COMMAND Ninja::ninja
+ $ENV{NINJAFLAGS}
+ -C ${buildDir}
+ ${CMAKE_PROJECT_NAME}
+ USES_TERMINAL
+ VERBATIM
+)
+add_custom_target(ninja ALL DEPENDS QtWebEngineCore.stamp)
+
+message("CMD: ${gn_cmd}\nARGS: ${gnArg}\nOUTPUT: ${gnOutput}")
+
+qt_build_repo_end()
+
diff --git a/src/core/api/configure.cmake b/src/core/api/configure.cmake
new file mode 100644
index 000000000..8986bf54e
--- /dev/null
+++ b/src/core/api/configure.cmake
@@ -0,0 +1,155 @@
+#### Libraries
+
+find_package(PkgConfig)
+if(PkgConfig_FOUND)
+ pkg_check_modules(ALSA alsa IMPORTED_TARGET)
+ pkg_check_modules(PULSEAUDIO libpulse>=0.9.10 libpulse-mainloop-glib)
+ pkg_check_modules(GIO gio-2.0)
+endif()
+
+find_package(Qt6 ${PROJECT_VERSION} CONFIG QUIET OPTIONAL_COMPONENTS Positioning WebChannel PrintSupport)
+
+#### Tests
+
+qt_config_compile_test(alsa
+ LABEL "alsa"
+ LIBRARIES
+ PkgConfig::ALSA
+ CODE
+"
+#include \"alsa/asoundlib.h\"
+#if SND_LIB_VERSION < 0x1000a // 1.0.10
+#error Alsa version found too old, require >= 1.0.10
+#endif
+int main(){};
+")
+
+#### Features
+
+qt_feature("webengine-embedded-build" PRIVATE
+ LABEL "Embedded build"
+ PURPOSE "Enables the embedded build configuration."
+ AUTODETECT tests.webengine-embedded-build OR FIXME
+ CONDITION UNIX
+)
+qt_feature("webengine-system-alsa" PRIVATE
+ LABEL "Use ALSA"
+ CONDITION UNIX AND TEST_alsa
+)
+qt_feature("webengine-v8-snapshot-support" PRIVATE
+ LABEL "Building v8 snapshot supported"
+ CONDITION NOT UNIX OR NOT QT_FEATURE_cross_compile OR ( TEST_architecture_arch STREQUAL arm64 ) OR TEST_webengine_host_compiler
+)
+qt_feature("webengine-geolocation" PUBLIC
+ LABEL "Geolocation"
+ CONDITION TARGET Qt::Positioning
+)
+qt_feature("webengine-system-pulseaudio" PRIVATE
+ LABEL "Use PulseAudio"
+ AUTODETECT UNIX
+ CONDITION PULSEAUDIO_FOUND
+)
+qt_feature("webengine-pepper-plugins" PRIVATE
+ LABEL "Pepper Plugins"
+ PURPOSE "Enables use of Pepper Flash plugins."
+ AUTODETECT NOT QT_FEATURE_webengine_embedded_build
+)
+qt_feature("webengine-printing-and-pdf" PRIVATE
+ LABEL "Printing and PDF"
+ PURPOSE "Provides printing and output to PDF."
+ AUTODETECT NOT QT_FEATURE_webengine_embedded_build
+ CONDITION TARGET Qt::PrintSupport AND QT_FEATURE_printer
+)
+qt_feature("webengine-webchannel" PUBLIC
+ SECTION "WebEngine"
+ LABEL "WebChannel support"
+ PURPOSE "Provides QtWebChannel integration."
+ CONDITION TARGET Qt::WebChannel
+)
+qt_feature("webengine-proprietary-codecs" PRIVATE
+ LABEL "Proprietary Codecs"
+ PURPOSE "Enables the use of proprietary codecs such as h.264/h.265 and MP3."
+ AUTODETECT OFF
+)
+qt_feature("webengine-kerberos" PRIVATE
+ SECTION "WebEngine"
+ LABEL "Kerberos Authentication"
+ PURPOSE "Enables Kerberos Authentication Support"
+ AUTODETECT WIN32
+)
+qt_feature("webengine-spellchecker" PUBLIC
+ LABEL "Spellchecker"
+ PURPOSE "Provides a spellchecker."
+ AUTODETECT OFF
+)
+qt_feature("webengine-native-spellchecker" PUBLIC
+ LABEL "Native Spellchecker"
+ PURPOSE "Use the system's native spellchecking engine."
+ AUTODETECT OFF
+ CONDITION MACOS AND QT_FEATURE_webengine_spellchecker
+)
+qt_feature("webengine-extensions" PUBLIC
+ SECTION "WebEngine"
+ LABEL "Extensions"
+ PURPOSE "Enables Chromium extensions within certain limits. Currently used for enabling the pdf viewer."
+ AUTODETECT QT_FEATURE_webengine_printing_and_pdf
+ CONDITION QT_FEATURE_webengine_printing_and_pdf
+)
+qt_feature("webengine-webrtc" PRIVATE
+ LABEL "WebRTC"
+ PURPOSE "Provides WebRTC support."
+ AUTODETECT OFF
+)
+qt_feature("webengine-webrtc-pipewire" PRIVATE
+ LABEL "PipeWire over GIO"
+ PURPOSE "Provides PipeWire support in WebRTC using GIO."
+ AUTODETECT false
+ CONDITION QT_FEATURE_webengine_webrtc AND GIO_FOUND
+)
+qt_feature_config("webengine-full-debug-info" QMAKE_PRIVATE_CONFIG
+ NAME "v8base_debug"
+)
+qt_feature_config("webengine-full-debug-info" QMAKE_PRIVATE_CONFIG
+ NAME "webcore_debug"
+)
+qt_configure_add_summary_section(NAME "Qt WebEngineCore")
+qt_configure_add_summary_entry(ARGS "webengine-embedded-build")
+qt_configure_add_summary_entry(ARGS "webengine-full-debug-info")
+qt_configure_add_summary_entry(ARGS "webengine-pepper-plugins")
+qt_configure_add_summary_entry(ARGS "webengine-printing-and-pdf")
+qt_configure_add_summary_entry(ARGS "webengine-proprietary-codecs")
+qt_configure_add_summary_entry(ARGS "webengine-spellchecker")
+qt_configure_add_summary_entry(ARGS "webengine-native-spellchecker")
+qt_configure_add_summary_entry(ARGS "webengine-webrtc")
+qt_configure_add_summary_entry(ARGS "webengine-webrtc-pipewire")
+qt_configure_add_summary_entry(ARGS "webengine-geolocation")
+qt_configure_add_summary_entry(ARGS "webengine-webchannel")
+qt_configure_add_summary_entry(ARGS "webengine-kerberos")
+qt_configure_add_summary_entry(ARGS "webengine-extensions")
+qt_configure_add_summary_entry(
+ ARGS "webengine-ozone-x11"
+ CONDITION UNIX
+)
+qt_configure_add_summary_entry(
+ ARGS "webengine-v8-snapshot-support"
+ CONDITION UNIX AND cross_compile
+)
+qt_configure_add_summary_entry(
+ ARGS "webengine-system-alsa"
+ CONDITION UNIX
+)
+qt_configure_add_summary_entry(
+ ARGS "webengine-system-pulseaudio"
+ CONDITION UNIX
+)
+qt_configure_end_summary_section() # end of "Qt WebEngineCore" section
+qt_configure_add_report_entry(
+ TYPE WARNING
+ MESSAGE "Thumb instruction set is required to build ffmpeg for QtWebEngine."
+ CONDITION LINUX AND QT_FEATURE_webengine_embedded_build AND NOT QT_FEATURE_webengine_system_ffmpeg AND ( TEST_architecture_arch STREQUAL arm ) AND NOT QT_FEATURE_webengine_arm_thumb
+)
+qt_configure_add_report_entry(
+ TYPE WARNING
+ MESSAGE "V8 snapshot cannot be built. Most likely, the 32-bit host compiler does not work. Please make sure you have 32-bit devel environment installed."
+ CONDITION UNIX AND cross_compile AND NOT QT_FEATURE_webengine_v8_snapshot_support
+)
diff --git a/src/core/configure/BUILD.root.gn.in b/src/core/configure/BUILD.root.gn.in
new file mode 100644
index 000000000..116c6bbeb
--- /dev/null
+++ b/src/core/configure/BUILD.root.gn.in
@@ -0,0 +1,516 @@
+import("//build/config/features.gni")
+import("//build/config/ui.gni")
+import("//chrome/common/features.gni")
+import("//components/spellcheck/spellcheck_build_features.gni")
+import("//pdf/features.gni")
+import("//ppapi/buildflags/buildflags.gni")
+import("//printing/buildflags/buildflags.gni")
+import("//extensions/buildflags/buildflags.gni")
+import("//tools/grit/repack.gni")
+import("//build/config/locales.gni")
+import("//chrome/chrome_repack_locales.gni")
+import("//extensions/buildflags/buildflags.gni")
+
+moc_source_h_files = exec_script("@WEBENGINE_ROOT_SOURCE_DIR@/tools/scripts/gn_find_mocables.py",
+ [
+ @GN_HEADERS@
+ ], "list lines", ["@WEBENGINE_ROOT_SOURCE_DIR@/src/core/CMakeLists.txt"]
+)
+moc_source_cpp_files = exec_script("@WEBENGINE_ROOT_SOURCE_DIR@/tools/scripts/gn_find_mocables.py",
+ [
+ @GN_SOURCES@
+ ], "list lines", ["@WEBENGINE_ROOT_SOURCE_DIR@/src/core/CMakeLists.txt"]
+)
+if (moc_source_h_files != []) {
+ action_foreach("generate_h_mocs") {
+ script = "@WEBENGINE_ROOT_SOURCE_DIR@/tools/scripts/gn_run_binary.py"
+ sources = moc_source_h_files
+ outputs = [ "${target_gen_dir}/.moc/moc_{{source_name_part}}.cpp" ]
+ inputs = [ "@WEBENGINE_ROOT_SOURCE_DIR@/CMakeLists.txt" ]
+ args = [
+ @GN_ARGS_MOC_BIN@,
+ @GN_ARGS_DEFINES@,
+ @GN_ARGS_INCLUDES@,
+ "{{source}}",
+ "-o",
+ rebase_path("${target_gen_dir}/.moc/moc_{{source_name_part}}.cpp")
+ ]
+ }
+}
+
+if (moc_source_cpp_files != []) {
+ action_foreach("generate_cpp_mocs") {
+ script = "@WEBENGINE_ROOT_SOURCE_DIR@/tools/scripts/gn_run_binary.py"
+ sources = moc_source_cpp_files
+ outputs = [ "${target_gen_dir}/.moc/{{source_name_part}}.moc" ]
+ inputs = [ "@WEBENGINE_ROOT_SOURCE_DIR@/src/core/CMakeLists.txt" ]
+ args = [
+ @GN_ARGS_MOC_BIN@,
+ @GN_ARGS_DEFINES@,
+ @GN_ARGS_INCLUDES@,
+ "{{source}}",
+ "-o",
+ rebase_path("${target_gen_dir}/.moc/{{source_name_part}}.moc")
+ ]
+ }
+}
+
+config("QtWebEngineCore_config") {
+ cflags = [
+ @GN_CFLAGS_C@,
+ ]
+ cflags_cc = [
+ @GN_CFLAGS_CC@,
+ ]
+ defines = [
+ @GN_DEFINES@,
+ ]
+ include_dirs = [
+ @GN_INCLUDE_DIRS@,
+ rebase_path("${target_gen_dir}/.moc/")
+ ]
+}
+
+config("cpp17_config") {
+ # static initialized constexpr expressions must be compiled always as c++14 or always as c++17
+ # and our qtwebengine core sources use them as c++17
+ if (is_win) {
+ cflags_cc = [ "/std:c++17" ]
+ } else {
+ cflags_cc = [ "-std=c++17" ]
+ }
+}
+
+shared_library("QtWebEngineCore") {
+ cmake_config = "@GN_CONFIG@"
+ import("@WEBENGINE_ROOT_SOURCE_DIR@/src/core/qtwebengine.gni")
+ configs += [
+ ":cpp17_config",
+ ":QtWebEngineCore_config",
+ "//build/config:precompiled_headers"
+ ]
+ sources = [
+ @GN_HEADERS@,
+ @GN_SOURCES@
+ ]
+ if (moc_source_h_files != []) {
+ deps += [
+ ":generate_h_mocs",
+ ]
+ sources += get_target_outputs(":generate_h_mocs")
+ }
+ if (moc_source_cpp_files != []) {
+ deps += [
+ ":generate_cpp_mocs",
+ ]
+ }
+}
+
+source_set("qtwebengine_spellcheck_sources") {
+ include_dirs = [ "@WEBENGINE_ROOT_SOURCE_DIR@/src/core/service" ]
+ configs += [ "//third_party/boringssl:external_config" ]
+ sources = [
+ "//chrome/browser/spellchecker/spell_check_host_chrome_impl.cc",
+ "//chrome/browser/spellchecker/spell_check_host_chrome_impl.h",
+ "//chrome/browser/spellchecker/spellcheck_custom_dictionary.cc",
+ "//chrome/browser/spellchecker/spellcheck_custom_dictionary.h",
+ "//chrome/browser/spellchecker/spellcheck_factory.cc",
+ "//chrome/browser/spellchecker/spellcheck_factory.h",
+ "//chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc",
+ "//chrome/browser/spellchecker/spellcheck_hunspell_dictionary.h",
+ "//chrome/browser/spellchecker/spellcheck_service.cc",
+ "//chrome/browser/spellchecker/spellcheck_service.h",
+ "//components/language/core/browser/pref_names.cc",
+ "//components/language/core/browser/pref_names.h",
+ ]
+ deps = [
+ "//components/spellcheck/browser",
+ "//components/spellcheck/renderer",
+ "//third_party/blink/public:blink",
+ "//third_party/hunspell",
+ ]
+ if (is_mac && use_browser_spellchecker) {
+ sources += [
+ "//chrome/browser/spellchecker/spell_check_host_chrome_impl_mac.cc",
+ ]
+ }
+}
+
+source_set("qtwebengine_sources") {
+ configs += [
+ ":cpp17_config",
+ "//skia:skia_config",
+ "//third_party/boringssl:external_config",
+ ]
+ deps = [
+ "//build:branding_buildflags",
+ "//chrome/browser/resources/quota_internals:quota_internals_resources",
+ "//chrome/common:buildflags",
+ "//components/nacl/common:buildflags",
+ "//components/performance_manager",
+ "//components/plugins/renderer/",
+ "//extensions/buildflags:buildflags",
+ "//rlz/buildflags:buildflags",
+ "//third_party/blink/public/mojom:mojom_platform",
+ ]
+ sources = [
+ "//chrome/browser/accessibility/accessibility_ui.cc",
+ "//chrome/browser/accessibility/accessibility_ui.h",
+ "//chrome/browser/custom_handlers/protocol_handler_registry.cc",
+ "//chrome/browser/custom_handlers/protocol_handler_registry.h",
+ "//chrome/browser/custom_handlers/protocol_handler_registry_factory.cc",
+ "//chrome/browser/custom_handlers/protocol_handler_registry_factory.h",
+ "//chrome/browser/devtools/devtools_eye_dropper.cc",
+ "//chrome/browser/devtools/devtools_eye_dropper.h",
+ "//chrome/browser/media/webrtc/desktop_media_list.h",
+ "//chrome/browser/net/chrome_mojo_proxy_resolver_factory.cc",
+ "//chrome/browser/net/chrome_mojo_proxy_resolver_factory.h",
+ "//chrome/browser/prefs/chrome_command_line_pref_store.cc",
+ "//chrome/browser/prefs/chrome_command_line_pref_store.h",
+ "//chrome/browser/profiles/profile.cc",
+ "//chrome/browser/profiles/profile.h",
+ "//chrome/browser/tab_contents/form_interaction_tab_helper.cc",
+ "//chrome/browser/tab_contents/form_interaction_tab_helper.h",
+ "//chrome/browser/ui/webui/devtools_ui.cc",
+ "//chrome/browser/ui/webui/devtools_ui.h",
+ "//chrome/browser/ui/webui/devtools_ui_data_source.cc",
+ "//chrome/browser/ui/webui/devtools_ui_data_source.h",
+ "//chrome/browser/ui/webui/net_internals/net_internals_ui.cc",
+ "//chrome/browser/ui/webui/net_internals/net_internals_ui.h",
+ "//chrome/browser/ui/webui/quota_internals/quota_internals_handler.cc",
+ "//chrome/browser/ui/webui/quota_internals/quota_internals_handler.h",
+ "//chrome/browser/ui/webui/quota_internals/quota_internals_proxy.cc",
+ "//chrome/browser/ui/webui/quota_internals/quota_internals_proxy.h",
+ "//chrome/browser/ui/webui/quota_internals/quota_internals_types.cc",
+ "//chrome/browser/ui/webui/quota_internals/quota_internals_types.h",
+ "//chrome/browser/ui/webui/quota_internals/quota_internals_ui.cc",
+ "//chrome/browser/ui/webui/quota_internals/quota_internals_ui.h",
+ "//chrome/browser/ui/webui/user_actions/user_actions_ui.cc",
+ "//chrome/browser/ui/webui/user_actions/user_actions_ui.h",
+ "//chrome/browser/ui/webui/user_actions/user_actions_ui_handler.cc",
+ "//chrome/browser/ui/webui/user_actions/user_actions_ui_handler.h",
+ "//chrome/common/custom_handlers/protocol_handler.cc",
+ "//chrome/common/custom_handlers/protocol_handler.h",
+ "//chrome/browser/ui/webui/webui_util.cc",
+ "//chrome/browser/ui/webui/webui_util.h",
+ "//chrome/common/chrome_switches.cc",
+ "//chrome/common/chrome_switches.h",
+ "//chrome/common/pref_names.cc",
+ "//chrome/common/pref_names.h",
+ "//chrome/common/url_constants.cc",
+ "//chrome/common/url_constants.h",
+ "//chrome/common/webui_url_constants.cc",
+ "//chrome/common/webui_url_constants.h",
+ ]
+ if (enable_extensions) {
+ deps += [
+ ":qtwebengine_extensions_features",
+ "//chrome/app:generated_resources",
+ "//chrome/browser/extensions/api:api_registration",
+ "//chrome/browser/resources:component_extension_resources_grit",
+ "//chrome/common/extensions/api",
+ "//chrome/common/extensions/api:api",
+ "//chrome/common/extensions/api:extensions_features",
+ "//components/crx_file",
+ "//components/crx_file:crx_creator",
+ "//components/spellcheck:buildflags",
+ "//extensions/buildflags:buildflags",
+ "//extensions/common",
+ "//extensions/common/api",
+ "//extensions/common:core_api_provider",
+ "//extensions/browser",
+ "//extensions/browser/api",
+ "//extensions/browser:core_api_provider",
+ "//extensions/renderer",
+ "//extensions:extensions_resources",
+ "//extensions/strings",
+ "//qtwebengine/browser/extensions/api:api_registration",
+ "//qtwebengine/common/extensions/api:api",
+ ]
+ sources += [
+ "//chrome/browser/extensions/api/streams_private/streams_private_api.cc",
+ "//chrome/browser/extensions/api/streams_private/streams_private_api.h",
+ "//chrome/browser/extensions/api/enterprise_hardware_platform/enterprise_hardware_platform_api.cc",
+ "//chrome/browser/extensions/api/enterprise_hardware_platform/enterprise_hardware_platform_api.h",
+ "//chrome/common/extensions/permissions/chrome_api_permissions.cc",
+ "//chrome/common/extensions/permissions/chrome_api_permissions.h",
+ "//chrome/common/extensions/permissions/chrome_permission_message_provider.cc",
+ "//chrome/common/extensions/permissions/chrome_permission_message_provider.h",
+ "//chrome/common/extensions/permissions/chrome_permission_message_rules.cc",
+ "//chrome/common/extensions/permissions/chrome_permission_message_rules.h",
+ ]
+ } else {
+ deps += [
+ "//extensions/common:common_constants",
+ ]
+ sources += [
+ "//extensions/common/url_pattern.cc",
+ "//extensions/common/url_pattern.h",
+ ]
+ }
+ if (is_linux) {
+ sources += [
+ "//chrome/browser/ui/webui/sandbox/sandbox_internals_ui.cc",
+ "//chrome/browser/ui/webui/sandbox/sandbox_internals_ui.h",
+ ]
+ }
+ if (enable_spellcheck) {
+ deps += [
+ ":qtwebengine_spellcheck_sources",
+ "//chrome/tools/convert_dict",
+ ]
+ }
+ if (enable_plugins) {
+ sources += [
+ "//chrome/renderer/pepper/pepper_flash_font_file_host.cc",
+ "//chrome/renderer/pepper/pepper_flash_font_file_host.h",
+ "//chrome/renderer/pepper/pepper_shared_memory_message_filter.cc",
+ "//chrome/renderer/pepper/pepper_shared_memory_message_filter.h",
+ ]
+ }
+ if (enable_basic_printing || enable_print_preview) {
+ sources += [
+ "//chrome/browser/printing/printer_query.cc",
+ "//chrome/browser/printing/printer_query.h",
+ "//chrome/browser/printing/print_job.cc",
+ "//chrome/browser/printing/print_job.h",
+ "//chrome/browser/printing/print_job_manager.cc",
+ "//chrome/browser/printing/print_job_manager.h",
+ "//chrome/browser/printing/print_job_worker.cc",
+ "//chrome/browser/printing/print_job_worker.h",
+ ]
+ deps += [
+ "//printing/buildflags:buildflags",
+ ]
+ }
+ if (enable_pdf) {
+ deps += [
+ "//pdf",
+ "//pdf:buildflags",
+ "//pdf:pdf_ppapi",
+ "//components/pdf/browser:browser",
+ "//components/pdf/renderer:renderer",
+ "//components/printing/browser",
+ "//components/printing/renderer",
+ ]
+ }
+
+ if (enable_webrtc && enable_extensions) {
+ deps += [
+ "//chrome/browser/resources/media:webrtc_logs_resources",
+ "//components/upload_list",
+ "//components/webrtc_logging/browser",
+ "//components/webrtc_logging/common",
+ ]
+
+ sources += [
+ "//chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc",
+ "//chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.h",
+ "//chrome/browser/media/webrtc/audio_debug_recordings_handler.cc",
+ "//chrome/browser/media/webrtc/audio_debug_recordings_handler.h",
+ "//chrome/browser/media/webrtc/webrtc_event_log_history.cc",
+ "//chrome/browser/media/webrtc/webrtc_event_log_history.h",
+ "//chrome/browser/media/webrtc/webrtc_event_log_manager.cc",
+ "//chrome/browser/media/webrtc/webrtc_event_log_manager.h",
+ "//chrome/browser/media/webrtc/webrtc_event_log_manager_common.cc",
+ "//chrome/browser/media/webrtc/webrtc_event_log_manager_common.h",
+ "//chrome/browser/media/webrtc/webrtc_event_log_manager_local.cc",
+ "//chrome/browser/media/webrtc/webrtc_event_log_manager_local.h",
+ "//chrome/browser/media/webrtc/webrtc_event_log_manager_remote.cc",
+ "//chrome/browser/media/webrtc/webrtc_event_log_manager_remote.h",
+ "//chrome/browser/media/webrtc/webrtc_event_log_uploader.cc",
+ "//chrome/browser/media/webrtc/webrtc_event_log_uploader.h",
+ "//chrome/browser/media/webrtc/webrtc_log_buffer.cc",
+ "//chrome/browser/media/webrtc/webrtc_log_buffer.h",
+ "//chrome/browser/media/webrtc/webrtc_log_uploader.cc",
+ "//chrome/browser/media/webrtc/webrtc_log_uploader.h",
+ "//chrome/browser/media/webrtc/webrtc_logging_controller.cc",
+ "//chrome/browser/media/webrtc/webrtc_logging_controller.h",
+ "//chrome/browser/media/webrtc/webrtc_rtp_dump_handler.cc",
+ "//chrome/browser/media/webrtc/webrtc_rtp_dump_handler.h",
+ "//chrome/browser/media/webrtc/webrtc_rtp_dump_writer.cc",
+ "//chrome/browser/media/webrtc/webrtc_rtp_dump_writer.h",
+ "//chrome/browser/media/webrtc/webrtc_text_log_handler.cc",
+ "//chrome/browser/media/webrtc/webrtc_text_log_handler.h",
+ "//chrome/browser/ui/webui/media/webrtc_logs_ui.cc",
+ "//chrome/browser/ui/webui/media/webrtc_logs_ui.h",
+ "//chrome/renderer/media/webrtc_logging_agent_impl.cc",
+ "//chrome/renderer/media/webrtc_logging_agent_impl.h",
+ ]
+ }
+}
+
+if (is_win) {
+ shared_library("qtwebengine_sandbox_win") {
+ cmake_config = "@GN_CONFIG@"
+ public_deps = [ "//sandbox/win:sandbox" ]
+ }
+}
+
+group("qtwebengine_resources") {
+ deps = [
+ "//chrome/app:generated_resources",
+ "//chrome/browser:resources",
+ "//chrome/browser/resources:component_extension_resources",
+ "//chrome/common:resources",
+ "//components/resources:components_resources",
+ ":qtwebengine_repack_resources",
+ ":qtwebengine_repack_resources_100",
+ ":qtwebengine_repack_resources_200",
+ ":qtwebengine_repack_resources_devtools",
+ ":qtwebengine_repack_locales_pack"
+ ]
+}
+
+repack("qtwebengine_repack_resources") {
+ sources = [
+ "$root_gen_dir/qtwebengine/qt_webengine_resources.pak",
+ "$root_gen_dir/chrome/common_resources.pak",
+ "$root_gen_dir/chrome/net_internals_resources.pak",
+ "$root_gen_dir/chrome/quota_internals_resources.pak",
+ "$root_gen_dir/components/components_resources.pak",
+ "$root_gen_dir/components/dev_ui_components_resources.pak",
+ "$root_gen_dir/content/browser/resources/media/media_internals_resources.pak",
+ "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
+ "$root_gen_dir/content/content_resources.pak",
+ "$root_gen_dir/content/dev_ui_content_resources.pak",
+ "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
+ "$root_gen_dir/net/net_resources.pak",
+ "$root_gen_dir/third_party/blink/public/resources/blink_resources.pak",
+ "$root_gen_dir/ui/resources/webui_resources.pak",
+ "$root_gen_dir/ui/resources/webui_generated_resources.pak",
+ ]
+ output = "$root_out_dir/qtwebengine_resources.pak"
+ deps = [
+ "//qtwebengine/browser:qt_webengine_resources",
+ "//chrome/browser/resources/net_internals:net_internals_resources",
+ "//chrome/browser/resources/quota_internals:quota_internals_resources",
+ "//chrome/common:resources_grit",
+ "//components/resources:components_resources_grit",
+ "//components/resources:dev_ui_components_resources_grit",
+ "//content/browser/resources/media:media_internals_resources",
+ "//content/browser/tracing:resources",
+ "//content:content_resources_grit",
+ "//content:dev_ui_content_resources_grit",
+ "//mojo/public/js:resources",
+ "//net:net_resources_grit",
+ "//third_party/blink/public:resources_grit",
+ "//ui/resources:webui_resources_grd_grit",
+ "//ui/resources:webui_generated_resources_grd",
+ ]
+ if (enable_extensions) {
+ sources += [
+ "$root_gen_dir/chrome/component_extension_resources.pak",
+ "$root_gen_dir/extensions/extensions_renderer_resources.pak",
+ "$root_gen_dir/extensions/extensions_resources.pak",
+ ]
+ deps += [
+ "//chrome/browser/resources:component_extension_resources_grit",
+ "//extensions:extensions_renderer_resources_grit",
+ "//extensions:extensions_resources_grd_grit",
+ ]
+ }
+ if (enable_webrtc) {
+ sources += [
+ "$root_gen_dir/content/browser/webrtc/resources/webrtc_internals_resources.pak",
+ ]
+ deps += [
+ "//content/browser/webrtc/resources",
+ ]
+ }
+}
+
+repack("qtwebengine_repack_resources_100") {
+ sources = [
+ "$root_gen_dir/chrome/renderer_resources_100_percent.pak",
+ "$root_gen_dir/components/components_resources_100_percent.pak",
+ "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
+ "$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak",
+ "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
+ ]
+ output = "$root_out_dir/qtwebengine_resources_100p.pak"
+ deps = [
+ "//chrome/renderer:resources_grit",
+ "//components/resources:components_scaled_resources_grit",
+ "//content/app/resources:resources_grit",
+ "//third_party/blink/public:scaled_resources_100_percent",
+ "//ui/resources:ui_resources_grd_grit"
+ ]
+ if (enable_extensions) {
+ sources += [
+ "$root_gen_dir/extensions/extensions_browser_resources_100_percent.pak"
+ ]
+ deps += [
+ "//extensions:extensions_browser_resources_grit"
+ ]
+ }
+}
+
+repack("qtwebengine_repack_resources_200") {
+ sources = [
+ "$root_gen_dir/chrome/renderer_resources_200_percent.pak",
+ "$root_gen_dir/components/components_resources_200_percent.pak",
+ "$root_gen_dir/content/app/resources/content_resources_200_percent.pak",
+ "$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_200_percent.pak",
+ "$root_gen_dir/ui/resources/ui_resources_200_percent.pak",
+ ]
+ output = "$root_out_dir/qtwebengine_resources_200p.pak"
+ deps = [
+ "//chrome/renderer:resources_grit",
+ "//components/resources:components_scaled_resources_grit",
+ "//content/app/resources:resources_grit",
+ "//third_party/blink/public:scaled_resources_200_percent",
+ "//ui/resources:ui_resources_grd_grit"
+ ]
+ if (enable_extensions) {
+ sources += [
+ "$root_gen_dir/extensions/extensions_browser_resources_200_percent.pak"
+ ]
+ deps += [
+ "//extensions:extensions_browser_resources_grit"
+ ]
+ }
+}
+
+repack("qtwebengine_repack_resources_devtools") {
+ sources = [
+ "$root_gen_dir/content/browser/devtools/devtools_resources.pak",
+ ]
+ output = "$root_out_dir/qtwebengine_devtools_resources.pak"
+ deps = [
+ "//content/browser/devtools:devtools_resources_grit",
+ ]
+}
+
+chrome_repack_locales("qtwebengine_repack_locales_pack") {
+ input_locales = locales
+ output_dir = "$root_out_dir/qtwebengine_locales"
+ output_locales = locales
+}
+
+if (enable_extensions) {
+ import("//tools/json_schema_compiler/json_features.gni")
+ json_features("qt_api_features") {
+ feature_type = "APIFeature"
+ method_name = "AddQtAPIFeatures"
+ sources = [
+ "//extensions/common/api/_webengine_api_features.json"
+ ]
+ }
+ json_features("qt_permission_features") {
+ feature_type = "PermissionFeature"
+ method_name = "AddQtPermissionFeatures"
+ sources = [
+ "//chrome/common/extensions/api/_permission_features.json",
+ "//extensions/common/api/_permission_features.json",
+ ]
+ }
+ group("qtwebengine_extensions_features") {
+ public_deps = [
+ ":qt_api_features",
+ ":qt_permission_features",
+ "//chrome/common/extensions/api:extensions_features",
+ "//extensions/common/api:extensions_features",
+ ]
+ }
+}
diff --git a/src/core/configure/BUILD.toolchain.gn.in b/src/core/configure/BUILD.toolchain.gn.in
new file mode 100644
index 000000000..e44fa42de
--- /dev/null
+++ b/src/core/configure/BUILD.toolchain.gn.in
@@ -0,0 +1,43 @@
+import("//build/config/sysroot.gni")
+import("//build/toolchain/gcc_toolchain.gni")
+gcc_toolchain("host") {
+ cc = "@CMAKE_C_COMPILER@"
+ cxx = "@CMAKE_CXX_COMPILER@"
+ ld = "@CMAKE_CXX_COMPILER@"
+ ar = "@CMAKE_AR@"
+ nm = "@CMAKE_NM@"
+ extra_cppflags = ""
+ toolchain_args = {
+ current_os = "linux"
+ current_cpu = "x64"
+ is_clang = false
+ use_gold = false
+ }
+}
+gcc_toolchain("v8_snapshot") {
+ cc = "@CMAKE_C_COMPILER@"
+ cxx = "@CMAKE_CXX_COMPILER@"
+ ld = "@CMAKE_CXX_COMPILER@"
+ ar = "@CMAKE_AR@"
+ nm = "@CMAKE_NM@"
+ toolchain_args = {
+ current_os = "linux"
+ current_cpu = "x64"
+ v8_current_cpu = "x64"
+ is_clang = false
+ use_gold = false
+ }
+ }
+gcc_toolchain("target") {
+ cc = "@CMAKE_C_COMPILER@"
+ cxx = "@CMAKE_CXX_COMPILER@"
+ ld = "@CMAKE_CXX_COMPILER@"
+ ar = "@CMAKE_AR@"
+ nm = "@CMAKE_NM@"
+ toolchain_args = {
+ current_os = "linux"
+ current_cpu = "x64"
+ is_clang = false
+ use_gold = false
+ }
+}
diff --git a/src/core/generator.cmake b/src/core/generator.cmake
new file mode 100644
index 000000000..60042fb97
--- /dev/null
+++ b/src/core/generator.cmake
@@ -0,0 +1,263 @@
+set(GN_DEFINES QT_NO_KEYWORDS
+ QT_USE_QSTRINGBUILDER
+ QTWEBENGINECORE_VERSION_STR=\\\"${QT_REPO_MODULE_VERSION}\\\"
+ QTWEBENGINEPROCESS_NAME=\\\"${QTWEBENGINEPROCESS_NAME}\\\"
+ BUILDING_CHROMIUM)
+
+set(GN_SOURCES_IN
+ accessibility_activation_observer.cpp
+ accessibility_tree_formatter_qt.cpp
+ authentication_dialog_controller.cpp
+ browser_accessibility_manager_qt.cpp
+ browser_accessibility_qt.cpp
+ browsing_data_remover_delegate_qt.cpp
+ browser_main_parts_qt.cpp
+ browser_message_filter_qt.cpp
+ certificate_error_controller.cpp
+ chromium_overrides.cpp
+ client_cert_select_controller.cpp
+ clipboard_qt.cpp
+ color_chooser_qt.cpp
+ color_chooser_controller.cpp
+ common/qt_ipc_logging.cpp
+ common/qt_messages.cpp
+ compositor/compositor.cpp
+ compositor/content_gpu_client_qt.cpp
+ compositor/display_overrides.cpp
+ compositor/display_software_output_surface.cpp
+ content_client_qt.cpp
+ content_browser_client_qt.cpp
+ content_main_delegate_qt.cpp
+ content_utility_client_qt.cpp
+ delegated_frame_host_client_qt.cpp
+ desktop_screen_qt.cpp
+ devtools_frontend_qt.cpp
+ devtools_manager_delegate_qt.cpp
+ download_manager_delegate_qt.cpp
+ favicon_manager.cpp
+ file_picker_controller.cpp
+ find_text_helper.cpp
+ javascript_dialog_controller.cpp
+ javascript_dialog_manager_qt.cpp
+ login_delegate_qt.cpp
+ media_capture_devices_dispatcher.cpp
+ native_web_keyboard_event_qt.cpp
+ net/client_cert_override.cpp
+ net/client_cert_store_data.cpp
+ net/cookie_monster_delegate_qt.cpp
+ net/custom_url_loader_factory.cpp
+ net/proxy_config_monitor.cpp
+ net/proxy_config_service_qt.cpp
+ net/proxying_url_loader_factory_qt.cpp
+ net/proxying_restricted_cookie_manager_qt.cpp
+ net/qrc_url_scheme_handler.cpp
+ net/ssl_host_state_delegate_qt.cpp
+ net/system_network_context_manager.cpp
+ net/url_request_custom_job_delegate.cpp
+ net/url_request_custom_job_proxy.cpp
+ net/webui_controller_factory_qt.cpp
+ ozone/gl_context_qt.cpp
+ ozone/gl_share_context_qt.cpp
+ ozone/gl_ozone_egl_qt.cpp
+ ozone/gl_surface_qt.cpp
+ ozone/gl_surface_egl_qt.cpp
+ ozone/gl_surface_wgl_qt.cpp
+ ozone/platform_window_qt.cpp
+ ozone/surface_factory_qt.cpp
+ permission_manager_qt.cpp
+ platform_notification_service_qt.cpp
+ process_main.cpp
+ profile_adapter.cpp
+ profile_adapter_client.cpp
+ profile_qt.cpp
+ profile_io_data_qt.cpp
+ quota_permission_context_qt.cpp
+ quota_request_controller_impl.cpp
+ pref_service_adapter.cpp
+ register_protocol_handler_request_controller_impl.cpp
+ render_view_context_menu_qt.cpp
+ render_widget_host_view_qt.cpp
+ render_widget_host_view_qt_delegate_client.cpp
+ renderer/content_renderer_client_qt.cpp
+ renderer/content_settings_observer_qt.cpp
+ renderer/render_frame_observer_qt.cpp
+ renderer/web_engine_page_render_frame.cpp
+ renderer/render_configuration.cpp
+ renderer/user_resource_controller.cpp
+ renderer/plugins/plugin_placeholder_qt.cpp
+ renderer_host/web_engine_page_host.cpp
+ renderer_host/user_resource_controller_host.cpp
+ resource_bundle_qt.cpp
+ resource_context_qt.cpp
+ touch_handle_drawable_qt.cpp
+ touch_selection_controller_client_qt.cpp
+ touch_selection_menu_controller.cpp
+ type_conversion.cpp
+ user_notification_controller.cpp
+ user_script.cpp
+ visited_links_manager_qt.cpp
+ web_contents_adapter.cpp
+ web_contents_delegate_qt.cpp
+ web_contents_view_qt.cpp
+ web_engine_context.cpp
+ web_engine_context_threads.cpp
+ web_engine_error.cpp
+ web_engine_library_info.cpp
+ web_engine_settings.cpp
+ web_event_factory.cpp
+ ozone/gl_surface_glx_qt.cpp
+ ozone/gl_ozone_glx_qt.cpp
+ compositor/compositor_resource_fence.cpp
+ compositor/display_gl_output_surface.cpp)
+
+set(GN_HEADERS_IN
+ accessibility_activation_observer.h
+ authentication_dialog_controller_p.h
+ authentication_dialog_controller.h
+ build_config_qt.h
+ browser_accessibility_manager_qt.h
+ browser_accessibility_qt.h
+ browsing_data_remover_delegate_qt.h
+ browser_main_parts_qt.h
+ browser_message_filter_qt.h
+ certificate_error_controller.h
+ client_cert_select_controller.h
+ clipboard_change_observer.h
+ clipboard_qt.h
+ color_chooser_qt.h
+ color_chooser_controller_p.h
+ color_chooser_controller.h
+ common/qt_messages.h
+ compositor/compositor.h
+ compositor/content_gpu_client_qt.h
+ compositor/display_software_output_surface.h
+ content_client_qt.h
+ content_browser_client_qt.h
+ content_main_delegate_qt.h
+ content_utility_client_qt.h
+ delegated_frame_host_client_qt.h
+ desktop_screen_qt.h
+ devtools_frontend_qt.h
+ devtools_manager_delegate_qt.h
+ download_manager_delegate_qt.h
+ favicon_manager.h
+ file_picker_controller.h
+ find_text_helper.h
+ global_descriptors_qt.h
+ javascript_dialog_controller_p.h
+ javascript_dialog_controller.h
+ javascript_dialog_manager_qt.h
+ login_delegate_qt.h
+ media_capture_devices_dispatcher.h
+ net/client_cert_override.h
+ net/client_cert_store_data.h
+ net/cookie_monster_delegate_qt.h
+ net/custom_url_loader_factory.h
+ net/proxying_url_loader_factory_qt.h
+ net/proxying_restricted_cookie_manager_qt.h
+ net/qrc_url_scheme_handler.h
+ net/ssl_host_state_delegate_qt.h
+ net/system_network_context_manager.h
+ net/url_request_custom_job_delegate.h
+ net/url_request_custom_job_proxy.h
+ net/webui_controller_factory_qt.h
+ ozone/gl_context_qt.h
+ ozone/gl_share_context_qt.h
+ ozone/gl_ozone_egl_qt.h
+ ozone/gl_surface_qt.h
+ ozone/gl_surface_egl_qt.h
+ ozone/gl_surface_wgl_qt.h
+ ozone/platform_window_qt.h
+ ozone/surface_factory_qt.h
+ permission_manager_qt.h
+ platform_notification_service_qt.h
+ pref_service_adapter.h
+ process_main.h
+ profile_adapter.h
+ profile_adapter_client.h
+ profile_qt.h
+ profile_io_data_qt.h
+ proxy_config_monitor.h
+ proxy_config_service_qt.h
+ quota_permission_context_qt.h
+ quota_request_controller.h
+ quota_request_controller_impl.h
+ register_protocol_handler_request_controller.h
+ register_protocol_handler_request_controller_impl.h
+ render_view_context_menu_qt.h
+ render_widget_host_view_qt.h
+ render_widget_host_view_qt_delegate.h
+ render_widget_host_view_qt_delegate_client.h
+ renderer/content_renderer_client_qt.h
+ renderer/content_settings_observer_qt.h
+ renderer/render_frame_observer_qt.h
+ renderer/web_engine_page_render_frame.h
+ renderer/render_configuration.h
+ renderer/user_resource_controller.h
+ renderer/plugins/plugin_placeholder_qt.h
+ renderer_host/web_engine_page_host.h
+ renderer_host/user_resource_controller_host.h
+ request_controller.h
+ resource_context_qt.h
+ touch_handle_drawable_client.h
+ touch_handle_drawable_qt.h
+ touch_selection_controller_client_qt.h
+ touch_selection_menu_controller.h
+ type_conversion.h
+ user_notification_controller.h
+ user_script.h
+ visited_links_manager_qt.h
+ web_contents_adapter.h
+ web_contents_adapter_client.h
+ web_contents_delegate_qt.h
+ web_contents_view_qt.h
+ web_engine_context.h
+ web_engine_error.h
+ web_engine_library_info.h
+ web_engine_settings.h
+ web_event_factory.h
+ ozone/gl_ozone_glx_qt.h
+ ozone/gl_surface_glx_qt.h
+ compositor/compositor_resource_fence.h
+ compositor/display_gl_output_surface.h)
+
+foreach(GN_HEADER_FILE ${GN_HEADERS_IN})
+ get_filename_component(GN_HEADER_PATH ${GN_HEADER_FILE} ABSOLUTE)
+ list(APPEND GN_HEADERS \"${GN_HEADER_PATH}\")
+endforeach()
+string(REPLACE ";" ",\n " GN_HEADERS "${GN_HEADERS}")
+foreach(GN_SOURCE_FILE ${GN_SOURCES_IN})
+ get_filename_component(GN_SOURCE_PATH ${GN_SOURCE_FILE} ABSOLUTE)
+ list(APPEND GN_SOURCES \"${GN_SOURCE_PATH}\")
+endforeach()
+string(REPLACE ";" ",\n " GN_SOURCES "${GN_SOURCES}")
+include(${CMAKE_WEBENGINE_ROOT_BUILD_PATH}/src/core/api/gn_config.cxx.cmake)
+include(${CMAKE_WEBENGINE_ROOT_BUILD_PATH}/src/core/api/gn_config.c.cmake)
+list(APPEND GN_DEFINES_IN ${GN_DEFINES})
+list(REMOVE_DUPLICATES GN_DEFINES_IN)
+unset(GN_DEFINES)
+foreach(GN_DEFINE ${GN_DEFINES_IN})
+ list(APPEND GN_ARGS_DEFINES \"-D${GN_DEFINE}\")
+ list(APPEND GN_DEFINES \"${GN_DEFINE}\")
+endforeach()
+string(REPLACE ";" ",\n " GN_ARGS_DEFINES "${GN_ARGS_DEFINES}")
+string(REPLACE ";" ",\n " GN_DEFINES "${GN_DEFINES}")
+list(REMOVE_DUPLICATES GN_INCLUDES_IN)
+foreach(GN_INCLUDE ${GN_INCLUDES_IN})
+ list(APPEND GN_ARGS_INCLUDES \"-I${GN_INCLUDE}\")
+ list(APPEND GN_INCLUDE_DIRS \"${GN_INCLUDE}\")
+endforeach()
+string(REPLACE ";" ",\n " GN_ARGS_INCLUDES "${GN_ARGS_INCLUDES}")
+string(REPLACE ";" ",\n " GN_INCLUDE_DIRS "${GN_INCLUDE_DIRS}")
+get_target_property(GN_MOC_BIN_IN Qt6::moc IMPORTED_LOCATION)
+set(GN_ARGS_MOC_BIN \"${GN_MOC_BIN_IN}\")
+foreach(GN_CXX_COMPILE_OPTION ${GN_CXX_COMPILE_OPTIONS_IN})
+ list(APPEND GN_CFLAGS_CC \"${GN_CXX_COMPILE_OPTION}\")
+endforeach()
+list(REMOVE_DUPLICATES GN_CFLAGS_CC)
+string(REPLACE ";" ",\n " GN_CFLAGS_CC "${GN_CFLAGS_CC}")
+foreach(GN_C_COMPILE_OPTION ${GN_C_COMPILE_OPTIONS_IN})
+ list(APPEND GN_CFLAGS_C \"${GN_C_COMPILE_OPTION}\")
+endforeach()
+list(REMOVE_DUPLICATES GN_CFLAGS_C)
+string(REPLACE ";" ",\n " GN_CFLAGS_C "${GN_CFLAGS_C}")
diff --git a/src/core/media_capture_devices_dispatcher.cpp b/src/core/media_capture_devices_dispatcher.cpp
index 3a1c20718..1b7cf5855 100644
--- a/src/core/media_capture_devices_dispatcher.cpp
+++ b/src/core/media_capture_devices_dispatcher.cpp
@@ -277,7 +277,8 @@ private:
}
void OnDeviceStopped(const std::string &label, const content::DesktopMediaID &media_id) override
{
- NOTIMPLEMENTED();
+ Q_UNUSED(label);
+ Q_UNUSED(media_id);
}
void SetStopCallback(base::OnceClosure stop) override
diff --git a/src/gn/CMakeLists.txt b/src/gn/CMakeLists.txt
new file mode 100644
index 000000000..9e98e152b
--- /dev/null
+++ b/src/gn/CMakeLists.txt
@@ -0,0 +1,36 @@
+
+cmake_minimum_required(VERSION 3.18.0)
+
+project(Gn
+ DESCRIPTION "Meta-build system"
+ HOMEPAGE_URL "https://gn.googlesource.com/gn/"
+ LANGUAGES CXX C
+)
+
+set(GN_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/gn)
+set(GN_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/gn)
+set(GN_EXECUTABLE ${GN_BINARY_DIR}/gn)
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake")
+
+find_package(Python2 REQUIRED)
+find_package(Ninja 1.7.2 REQUIRED)
+
+file(MAKE_DIRECTORY ${GN_BINARY_DIR})
+add_custom_command(
+ OUTPUT ${GN_EXECUTABLE}
+ WORKING_DIRECTORY ${GN_BINARY_DIR}
+ COMMAND ${Python2_EXECUTABLE} ${GN_SOURCE_DIR}/build/gen.py
+ --no-last-commit-position
+ --out-path .
+ --cc ${CMAKE_C_COMPILER}
+ --cxx ${CMAKE_CXX_COMPILER}
+ --ld ${CMAKE_CXX_COMPILER}
+ COMMAND Ninja::ninja gn
+ VERBATIM
+ USES_TERMINAL
+ COMMAND_EXPAND_LISTS
+)
+add_custom_target(gn ALL DEPENDS ${GN_EXECUTABLE})
+install(FILES ${GN_EXECUTABLE}
+ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
+ DESTINATION bin)
diff --git a/src/ninja/CMakeLists.txt b/src/ninja/CMakeLists.txt
new file mode 100644
index 000000000..1ac89df5a
--- /dev/null
+++ b/src/ninja/CMakeLists.txt
@@ -0,0 +1,37 @@
+
+cmake_minimum_required(VERSION 3.18.0)
+
+project(Ninja
+ DESCRIPTION "Ninja Build Tool"
+ HOMEPAGE_URL "https://ninja-build.org/"
+ LANGUAGES CXX C
+)
+
+set(NINJA_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/ninja)
+set(NINJA_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
+
+find_package(Python2 REQUIRED)
+
+if(WIN32)
+ set(NINJA_EXECUTABLE ninja.exe)
+else()
+ set(NINJA_EXECUTABLE ninja)
+endif()
+
+file(MAKE_DIRECTORY ${NINJA_BINARY_DIR})
+
+add_custom_command(
+ OUTPUT ${NINJA_EXECUTABLE}
+ WORKING_DIRECTORY ${NINJA_BINARY_DIR}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${NINJA_BINARY_DIR}/$<CONFIG>
+ COMMAND ${CMAKE_COMMAND} -E chdir ${NINJA_BINARY_DIR}/$<CONFIG>
+ ${Python2_EXECUTABLE} ${NINJA_SOURCE_DIR}/configure.py --bootstrap
+ USES_TERMINAL
+ VERBATIM
+)
+add_custom_target(Ninja ALL DEPENDS ${NINJA_EXECUTABLE})
+install(FILES ${NINJA_BINARY_DIR}/$<CONFIG>/${NINJA_EXECUTABLE}
+ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
+ DESTINATION bin
+)
+
diff --git a/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp b/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp
index 0d4e172ee..34ef111f2 100644
--- a/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp
+++ b/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp
@@ -536,12 +536,6 @@ void tst_QWebEngineUrlRequestInterceptor::firstPartyUrlHttp()
QList<RequestInfo> infos;
- // SubFrame
- QTRY_VERIFY(interceptor.hasUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeSubFrame));
- infos = interceptor.getUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeSubFrame);
- foreach (auto info, infos)
- QCOMPARE(info.firstPartyUrl, firstPartyUrl);
-
// Stylesheet
QTRY_VERIFY(interceptor.hasUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeStylesheet));
infos = interceptor.getUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeStylesheet);
@@ -659,12 +653,6 @@ void tst_QWebEngineUrlRequestInterceptor::initiator()
QList<RequestInfo> infos;
- // SubFrame
- QTRY_VERIFY(interceptor.hasUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeSubFrame));
- infos = interceptor.getUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeSubFrame);
- foreach (auto info, infos)
- QVERIFY(interceptor.requestInitiatorUrls[info.requestUrl].contains(info.initiator));
-
// Stylesheet
QTRY_VERIFY(interceptor.hasUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeStylesheet));
infos = interceptor.getUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeStylesheet);