diff options
Diffstat (limited to 'src/core/CMakeLists.txt')
-rw-r--r-- | src/core/CMakeLists.txt | 673 |
1 files changed, 673 insertions, 0 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt new file mode 100644 index 000000000..8ba77607b --- /dev/null +++ b/src/core/CMakeLists.txt @@ -0,0 +1,673 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + +cmake_minimum_required(VERSION 3.19) + +find_package(Ninja 1.7.2 REQUIRED) +find_package(Nodejs 14.19 REQUIRED) +find_package(Perl) +find_package(PkgConfig) +if(PkgConfig_FOUND) + create_pkg_config_host_wrapper(${CMAKE_CURRENT_BINARY_DIR}) +endif() + +set(buildDir "${CMAKE_CURRENT_BINARY_DIR}") + +add_subdirectory(api) +add_subdirectory(tools/webenginedriver) +add_subdirectory(tools/qwebengine_convert_dict) + +## +# TOOLCHAIN SETUP +## + +if(LINUX) + setup_toolchains() +endif() + +## +# GN BUILD SETUP +## + +addSyncTargets(core) + +get_configs(configs) +get_architectures(archs) + +foreach(arch ${archs}) + foreach(config ${configs}) + + ## + # BUILD.gn SETUP + ## + + set(buildGn core_${config}_${arch}) + add_gn_target(${buildGn} ${config} ${arch} + SOURCES DEFINES CXX_COMPILE_OPTIONS C_COMPILE_OPTIONS INCLUDES MOC_PATH + ) + resolve_target_includes(gnIncludes WebEngineCore) + get_forward_declaration_macro(forwardDeclarationMacro) + get_target_property(qtWebEngineProcessName WebEngineCore QTWEBENGINEPROCESS_NAME) + + if("${config}" STREQUAL "Debug") + set(qtWebEngineProcessName "${qtWebEngineProcessName}${CMAKE_DEBUG_POSTFIX}") + endif() + + set(gnCxxCompileOptions "") + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + # Silence warning in boringssl headers. + list(APPEND gnCxxCompileOptions -Wno-ignored-qualifiers) + + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "11.0.0" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "11.2.0") + # GCC 11.1 has a regression in the integrated preprocessor, so disable it as a workaround (QTBUG-93360) + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100796 + list(APPEND gnCxxCompileOptions -no-integrated-cpp) + endif() + endif() + + extend_gn_target(${buildGn} + INCLUDES + ${gnIncludes} + DEFINES + QT_NO_KEYWORDS + QT_USE_QSTRINGBUILDER + QTWEBENGINECORE_VERSION_STR=${QT_REPO_MODULE_VERSION} + QTWEBENGINEPROCESS_NAME=${qtWebEngineProcessName} + BUILDING_CHROMIUM + "${forwardDeclarationMacro}" + CXX_COMPILE_OPTIONS + ${gnCxxCompileOptions} + SOURCES + accessibility_tree_formatter_qt.cpp + browser_accessibility_qt.cpp browser_accessibility_qt.h + authentication_dialog_controller.cpp authentication_dialog_controller.h authentication_dialog_controller_p.h + autofill_client_qt.cpp autofill_client_qt.h + autofill_popup_controller.cpp autofill_popup_controller.h autofill_popup_controller_p.h + browser_accessibility_manager_qt.cpp browser_accessibility_manager_qt.h + browser_main_parts_qt.cpp browser_main_parts_qt.h + browser_message_filter_qt.cpp browser_message_filter_qt.h + browsing_data_remover_delegate_qt.cpp browsing_data_remover_delegate_qt.h + build_config_qt.h + certificate_error_controller.cpp certificate_error_controller.h + chromium_overrides.cpp + client_cert_select_controller.cpp client_cert_select_controller.h + client_hints.cpp client_hints.h + clipboard_change_observer.h + clipboard_qt.cpp clipboard_qt.h + color_chooser_controller.cpp color_chooser_controller.h color_chooser_controller_p.h + color_chooser_qt.cpp color_chooser_qt.h + common/qt_messages.cpp common/qt_messages.h + compositor/compositor.cpp compositor/compositor.h + compositor/content_gpu_client_qt.cpp compositor/content_gpu_client_qt.h + compositor/display_overrides.cpp + compositor/display_software_output_surface.cpp compositor/display_software_output_surface.h + compositor/native_skia_output_device.cpp compositor/native_skia_output_device.h + content_browser_client_qt.cpp content_browser_client_qt.h + content_client_qt.cpp content_client_qt.h + content_main_delegate_qt.cpp content_main_delegate_qt.h + content_utility_client_qt.cpp content_utility_client_qt.h + custom_handlers/protocol_handler_registry_delegate_qt.h custom_handlers/protocol_handler_registry_delegate_qt.cpp + custom_handlers/protocol_handler_registry_factory.h custom_handlers/protocol_handler_registry_factory.cpp + custom_handlers/register_protocol_handler_request_controller.h + custom_handlers/register_protocol_handler_request_controller_impl.cpp custom_handlers/register_protocol_handler_request_controller_impl.h + delegated_frame_host_client_qt.cpp delegated_frame_host_client_qt.h + desktop_media_controller.cpp desktop_media_controller.h desktop_media_controller_p.h + desktop_screen_qt.cpp desktop_screen_qt.h + devtools_frontend_qt.cpp devtools_frontend_qt.h + devtools_manager_delegate_qt.cpp devtools_manager_delegate_qt.h + download_manager_delegate_qt.cpp download_manager_delegate_qt.h + favicon_driver_qt.cpp favicon_driver_qt.h + favicon_service_factory_qt.cpp favicon_service_factory_qt.h + file_picker_controller.cpp file_picker_controller.h + file_system_access/file_system_access_permission_context_factory_qt.cpp file_system_access/file_system_access_permission_context_factory_qt.h + file_system_access/file_system_access_permission_context_qt.cpp file_system_access/file_system_access_permission_context_qt.h + file_system_access/file_system_access_permission_grant_qt.cpp file_system_access/file_system_access_permission_grant_qt.h + file_system_access/file_system_access_permission_request_controller.h + file_system_access/file_system_access_permission_request_controller_impl.cpp file_system_access/file_system_access_permission_request_controller_impl.h + file_system_access/file_system_access_permission_request_manager_qt.cpp file_system_access/file_system_access_permission_request_manager_qt.h + find_text_helper.cpp find_text_helper.h + global_descriptors_qt.h + javascript_dialog_controller.cpp javascript_dialog_controller.h javascript_dialog_controller_p.h + javascript_dialog_manager_qt.cpp javascript_dialog_manager_qt.h + login_delegate_qt.cpp login_delegate_qt.h + media_capture_devices_dispatcher.cpp media_capture_devices_dispatcher.h + native_web_keyboard_event_qt.cpp native_web_keyboard_event_qt.h + net/client_cert_qt.cpp net/client_cert_qt.h + net/client_cert_store_data.cpp net/client_cert_store_data.h + net/cookie_monster_delegate_qt.cpp net/cookie_monster_delegate_qt.h + net/custom_url_loader_factory.cpp net/custom_url_loader_factory.h + net/proxy_config_monitor.cpp net/proxy_config_monitor.h + net/proxy_config_service_qt.cpp net/proxy_config_service_qt.h + net/proxying_restricted_cookie_manager_qt.cpp net/proxying_restricted_cookie_manager_qt.h + net/proxying_url_loader_factory_qt.cpp net/proxying_url_loader_factory_qt.h + net/qrc_url_scheme_handler.cpp net/qrc_url_scheme_handler.h + net/resource_request_body_qt.cpp net/resource_request_body_qt.h + net/ssl_host_state_delegate_qt.cpp net/ssl_host_state_delegate_qt.h + net/system_network_context_manager.cpp net/system_network_context_manager.h + net/url_request_custom_job_delegate.cpp net/url_request_custom_job_delegate.h + net/url_request_custom_job_proxy.cpp net/url_request_custom_job_proxy.h + net/version_ui_qt.cpp net/version_ui_qt.h + net/webui_controller_factory_qt.cpp net/webui_controller_factory_qt.h + ozone/gl_context_qt.cpp ozone/gl_context_qt.h + ozone/gl_ozone_egl_qt.cpp ozone/gl_ozone_egl_qt.h + ozone/gl_share_context_qt.cpp ozone/gl_share_context_qt.h + ozone/gl_surface_egl_qt.cpp ozone/gl_surface_egl_qt.h + ozone/gl_surface_qt.cpp ozone/gl_surface_qt.h + ozone/gl_surface_wgl_qt.cpp ozone/gl_surface_wgl_qt.h + ozone/platform_window_qt.cpp ozone/platform_window_qt.h + ozone/surface_factory_qt.cpp ozone/surface_factory_qt.h + permission_manager_qt.cpp permission_manager_qt.h + pdf_util_qt.cpp pdf_util_qt.h + platform_notification_service_qt.cpp platform_notification_service_qt.h + pointer_device_qt.cpp + pref_service_adapter.cpp pref_service_adapter.h + process_main.cpp + profile_adapter.cpp profile_adapter.h + profile_adapter_client.cpp profile_adapter_client.h + profile_io_data_qt.cpp profile_io_data_qt.h + profile_qt.cpp profile_qt.h + render_view_context_menu_qt.cpp render_view_context_menu_qt.h + render_widget_host_view_qt.cpp render_widget_host_view_qt.h + render_widget_host_view_qt_delegate.h + render_widget_host_view_qt_delegate_client.cpp render_widget_host_view_qt_delegate_client.h + render_widget_host_view_qt_delegate_item.cpp render_widget_host_view_qt_delegate_item.h + renderer/content_renderer_client_qt.cpp renderer/content_renderer_client_qt.h + renderer/content_settings_observer_qt.cpp renderer/content_settings_observer_qt.h + renderer/render_configuration.cpp renderer/render_configuration.h + renderer/render_frame_observer_qt.cpp renderer/render_frame_observer_qt.h + renderer/user_resource_controller.cpp renderer/user_resource_controller.h + renderer/web_engine_page_render_frame.cpp renderer/web_engine_page_render_frame.h + renderer_host/user_resource_controller_host.cpp renderer_host/user_resource_controller_host.h + renderer_host/web_engine_page_host.cpp renderer_host/web_engine_page_host.h + request_controller.h + resource_bundle_qt.cpp + select_file_dialog_factory_qt.cpp select_file_dialog_factory_qt.h + touch_handle_drawable_client.h + touch_handle_drawable_qt.cpp touch_handle_drawable_qt.h + touch_selection_controller_client_qt.cpp touch_selection_controller_client_qt.h + touch_selection_menu_controller.cpp touch_selection_menu_controller.h + type_conversion.cpp type_conversion.h + user_notification_controller.cpp user_notification_controller.h + user_script.cpp user_script.h + visited_links_manager_qt.cpp visited_links_manager_qt.h + web_contents_adapter.cpp web_contents_adapter.h + web_contents_adapter_client.h + web_contents_delegate_qt.cpp web_contents_delegate_qt.h + web_contents_view_qt.cpp web_contents_view_qt.h + web_engine_context.cpp web_engine_context.h + web_engine_error.cpp web_engine_error.h + web_engine_library_info.cpp web_engine_library_info.h + web_engine_settings.cpp web_engine_settings.h + web_event_factory.cpp web_event_factory.h + web_usb_detector_qt.cpp web_usb_detector_qt.h + authenticator_request_client_delegate_qt.cpp authenticator_request_client_delegate_qt.h + authenticator_request_dialog_controller.cpp authenticator_request_dialog_controller.h authenticator_request_dialog_controller_p.h + ) + + extend_gn_target(${buildGn} CONDITION QT_FEATURE_accessibility + SOURCES + accessibility_activation_observer.cpp accessibility_activation_observer.h + ) + + extend_gn_target(${buildGn} CONDITION QT_FEATURE_webengine_ozone_x11 + SOURCES + ozone/gl_ozone_glx_qt.cpp ozone/gl_ozone_glx_qt.h + ozone/gl_surface_glx_qt.cpp ozone/gl_surface_glx_qt.h + ) + + extend_gn_target(${buildGn} CONDITION QT_FEATURE_webengine_vulkan + SOURCES + compositor/native_skia_output_device_vulkan.cpp compositor/native_skia_output_device_vulkan.h + compositor/vulkan_implementation_qt.cpp compositor/vulkan_implementation_qt.h + ) + + extend_gn_target(${buildGn} CONDITION QT_FEATURE_opengl + SOURCES + compositor/compositor_resource_fence.cpp compositor/compositor_resource_fence.h + compositor/display_skia_output_device.cpp compositor/display_skia_output_device.h + compositor/native_skia_output_device_opengl.cpp compositor/native_skia_output_device_opengl.h + ) + + extend_gn_target(${buildGn} CONDITION MACOS + SOURCES + native_web_keyboard_event_qt_mac.mm + compositor/native_skia_output_device_mac.mm + compositor/native_skia_output_device_metal.cpp compositor/native_skia_output_device_metal.h + ) + + extend_gn_target(${buildGn} CONDITION QT_FEATURE_webengine_pepper_plugins + SOURCES + renderer/pepper/pepper_renderer_host_factory_qt.cpp renderer/pepper/pepper_renderer_host_factory_qt.h + renderer/plugins/loadable_plugin_placeholder_qt.cpp renderer/plugins/loadable_plugin_placeholder_qt.h + ) + + extend_gn_target(${buildGn} CONDITION QT_FEATURE_webengine_printing_and_pdf + SOURCES + printing/pdfium_document_wrapper_qt.cpp printing/pdfium_document_wrapper_qt.h + printing/print_view_manager_base_qt.cpp printing/print_view_manager_base_qt.h + printing/print_view_manager_qt.cpp printing/print_view_manager_qt.h + printing/printer_worker.cpp printing/printer_worker.h + renderer/print_web_view_helper_delegate_qt.cpp renderer/print_web_view_helper_delegate_qt.h + ) + + extend_gn_target(${buildGn} CONDITION QT_FEATURE_webengine_geolocation + SOURCES + location_provider_qt.cpp location_provider_qt.h + ) + + extend_gn_target(${buildGn} CONDITION QT_FEATURE_webengine_webchannel + SOURCES + renderer/web_channel_ipc_transport.cpp renderer/web_channel_ipc_transport.h + renderer_host/web_channel_ipc_transport_host.cpp renderer_host/web_channel_ipc_transport_host.h + ) + + extend_gn_target(${buildGn} CONDITION QT_FEATURE_webengine_extensions + SOURCES + common/extensions/extensions_api_provider_qt.cpp common/extensions/extensions_api_provider_qt.h + common/extensions/extensions_client_qt.cpp common/extensions/extensions_client_qt.h + extensions/component_extension_resource_manager_qt.cpp extensions/component_extension_resource_manager_qt.h + extensions/extension_host_delegate_qt.cpp extensions/extension_host_delegate_qt.h + extensions/extension_system_factory_qt.cpp extensions/extension_system_factory_qt.h + extensions/extension_system_qt.cpp extensions/extension_system_qt.h + extensions/extension_web_contents_observer_qt.cpp extensions/extension_web_contents_observer_qt.h + extensions/extensions_api_client_qt.cpp extensions/extensions_api_client_qt.h + extensions/extensions_browser_client_qt.cpp extensions/extensions_browser_client_qt.h + extensions/file_system_delegate_qt.cpp extensions/file_system_delegate_qt.h + extensions/messaging_delegate_qt.cpp extensions/messaging_delegate_qt.h + extensions/mime_handler_view_guest_delegate_qt.cpp extensions/mime_handler_view_guest_delegate_qt.h + extensions/plugin_service_filter_qt.cpp extensions/plugin_service_filter_qt.h + net/plugin_response_interceptor_url_loader_throttle.cpp net/plugin_response_interceptor_url_loader_throttle.h + renderer/extensions/extensions_dispatcher_delegate_qt.cpp renderer/extensions/extensions_dispatcher_delegate_qt.h + renderer/extensions/extensions_renderer_client_qt.cpp renderer/extensions/extensions_renderer_client_qt.h + renderer/extensions/renderer_permissions_policy_delegate_qt.cpp renderer/extensions/renderer_permissions_policy_delegate_qt.h + renderer/extensions/resource_request_policy_qt.cpp renderer/extensions/resource_request_policy_qt.h + ) + + extend_gn_target(${buildGn} CONDITION QT_FEATURE_webengine_extensions AND QT_FEATURE_webengine_printing_and_pdf + SOURCES + extensions/pdf_iframe_navigation_throttle_qt.cpp extensions/pdf_iframe_navigation_throttle_qt.h + printing/pdf_stream_delegate_qt.cpp printing/pdf_stream_delegate_qt.h + printing/pdf_document_helper_client_qt.cpp printing/pdf_document_helper_client_qt.h + ) + + extend_gn_target(${buildGn} CONDITION WIN32 + SOURCES + clipboard_util_win.cpp + compositor/native_skia_output_device_direct3d11.cpp compositor/native_skia_output_device_direct3d11.h + ) + + ## + # GN PARAMETERS SETUP + ## + + unset(gnArgArg) + + append_build_type_setup(gnArgArg) + append_compiler_linker_sdk_setup(gnArgArg) + append_sanitizer_setup(gnArgArg) + append_toolchain_setup(gnArgArg) + append_pkg_config_setup(gnArgArg) + + list(APPEND gnArgArg + qtwebengine_target="${buildDir}/${config}/${arch}:QtWebEngineCore" + build_dawn_tests=false + build_with_tflite_lib=false + enable_background_contents=false + enable_background_mode=false + enable_ipc_fuzzer=false + enable_ipc_logging=false + enable_java_templates=false + enable_media_remoting=false + enable_message_center=false + enable_nacl=false + enable_oop_printing=false + enable_remoting=false + enable_reporting=false + enable_resource_allowlist_generation=false + enable_screen_ai_service=false + enable_session_service=false + enable_supervised_users=false + enable_swiftshader=false + enable_swiftshader_vulkan=false + angle_enable_swiftshader=false + dawn_use_swiftshader=false + enable_vr=false + enable_web_speech=false + enable_widevine=true + enable_library_cdms=true + fatal_linker_warnings=false + has_native_accessibility=false + safe_browsing_mode=0 + toolkit_views=false + chrome_pgo_phase=0 + optimize_webui=false + strip_absolute_paths_from_debug_symbols=false + pdf_use_skia=true + use_dawn=false + skia_use_dawn=false + devtools_fast_bundle=false + devtools_skip_typecheck=false + use_static_angle=true + use_perfetto_client_library=false + trial_comparison_cert_verifier_supported=false + ) + extend_gn_list(gnArgArg + ARGS use_v8_context_snapshot v8_use_external_startup_data + CONDITION QT_FEATURE_webengine_v8_context_snapshot + ) + extend_gn_list(gnArgArg + ARGS enable_printing enable_basic_printing enable_print_preview enable_pdf + CONDITION QT_FEATURE_webengine_printing_and_pdf + ) + extend_gn_list(gnArgArg + ARGS use_cups + CONDITION QT_FEATURE_webengine_printing_and_pdf AND NOT WIN32 + ) + extend_gn_list(gnArgArg + ARGS enable_plugins + CONDITION QT_FEATURE_webengine_printing_and_pdf OR + QT_FEATURE_webengine_pepper_plugins + ) + extend_gn_list(gnArgArg + ARGS enable_ppapi + CONDITION QT_FEATURE_webengine_pepper_plugins + ) + extend_gn_list(gnArgArg + ARGS enable_spellcheck + CONDITION QT_FEATURE_webengine_spellchecker + ) + extend_gn_list(gnArgArg + ARGS enable_webrtc + CONDITION QT_FEATURE_webengine_webrtc + ) + extend_gn_list(gnArgArg + ARGS enable_screen_capture + CONDITION QT_FEATURE_webengine_webrtc + ) + extend_gn_list(gnArgArg + ARGS enable_hangout_services_extension + CONDITION QT_FEATURE_webengine_webrtc AND QT_FEATURE_webengine_extensions + ) + extend_gn_list(gnArgArg + ARGS rtc_use_pipewire + CONDITION QT_FEATURE_webengine_webrtc_pipewire + ) + extend_gn_list(gnArgArg + ARGS enable_extensions + CONDITION QT_FEATURE_webengine_extensions + ) + extend_gn_list(gnArgArg + ARGS enable_vulkan + CONDITION QT_FEATURE_webengine_vulkan + ) + extend_gn_list(gnArgArg + ARGS use_kerberos + CONDITION QT_FEATURE_webengine_kerberos + ) + extend_gn_list(gnArgArg + ARGS proprietary_codecs + CONDITION QT_FEATURE_webengine_proprietary_codecs + ) + if(QT_FEATURE_webengine_proprietary_codecs) + list(APPEND gnArgArg ffmpeg_branding="Chrome") + endif() + extend_gn_list(gnArgArg + ARGS use_browser_spellchecker + CONDITION QT_FEATURE_webengine_native_spellchecker + ) + extend_gn_list(gnArgArg + ARGS use_embedded_config + CONDITION QT_FEATURE_webengine_embedded_build + ) + extend_gn_list(gnArgArg + ARGS enable_webenginedriver + CONDITION QT_FEATURE_webenginedriver + ) + + if(LINUX) + list(APPEND gnArgArg + use_gtk=false # GTK toolkit bindings + use_qt=false # Qt5 toolkit bindings + use_cups=false + use_gio=false + use_bundled_fontconfig=false + use_glib=false + use_bluez=false + use_udev=true + is_cfi=false + use_ozone=true + ozone_auto_platforms=false + ozone_platform_headless=false + ozone_platform_external=true + ozone_platform="qt" + ozone_extra_path="${CMAKE_CURRENT_LIST_DIR}/ozone/ozone_extra.gni" + ) + set(systemLibs libjpeg libpng freetype harfbuzz libevent libwebp libxml + opus snappy icu ffmpeg re2 lcms2 libopenjpeg2 libvpx + ) + foreach(slib ${systemLibs}) + extend_gn_list(gnArgArg + ARGS use_system_${slib} + CONDITION QT_FEATURE_webengine_system_${slib} + ) + endforeach() + if(NOT QT_FEATURE_webengine_system_opus) + extend_gn_list(gnArgArg + ARGS has_perl + CONDITION Perl_FOUND + ) + endif() + extend_gn_list(gnArgArg + ARGS use_system_libxslt + CONDITION QT_FEATURE_webengine_system_libxml + ) + extend_gn_list(gnArgArg + ARGS icu_use_data_file + CONDITION NOT QT_FEATURE_webengine_system_icu + ) + 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 use_libpci + CONDITION QT_FEATURE_webengine_system_libpci + ) + extend_gn_list(gnArgArg + ARGS use_alsa + CONDITION QT_FEATURE_webengine_system_alsa + ) + extend_gn_list(gnArgArg + ARGS use_pulseaudio + CONDITION QT_FEATURE_webengine_system_pulseaudio + ) + extend_gn_list(gnArgArg + ARGS use_system_minigbm + CONDITION QT_FEATURE_webengine_system_gbm + ) + extend_gn_list(gnArgArg + ARGS use_vaapi + CONDITION QT_FEATURE_webengine_vaapi + ) + extend_gn_list(gnArgArg + ARGS ozone_platform_x11 use_xkbcommon + CONDITION QT_FEATURE_webengine_ozone_x11 + ) + extend_gn_list(gnArgArg + ARGS rtc_use_x11 + CONDITION QT_FEATURE_webengine_ozone_x11 AND QT_FEATURE_webengine_webrtc + ) + extend_gn_list(gnArgArg + ARGS use_vaapi_x11 + CONDITION QT_FEATURE_webengine_ozone_x11 AND QT_FEATURE_webengine_vaapi + ) + + if(QT_FEATURE_webengine_kerberos) + list(APPEND gnArgArg + external_gssapi_include_dir="${GSSAPI_INCLUDE_DIRS}/gssapi" + ) + endif() + get_gn_arch(cpu ${TEST_architecture_arch}) + if(CMAKE_CROSSCOMPILING AND cpu STREQUAL "arm") + check_thumb(armThumb) + if(NOT armThumb AND NOT QT_FEATURE_webengine_system_ffmpeg) + list(APPEND gnArgArg media_use_ffmpeg=false use_webaudio_ffmpeg=false) + endif() + endif() + + if(CMAKE_CROSSCOMPILING AND cpu STREQUAL "arm64") + # This is a workaround to avoid auto test timeouts on the QEMU arm64 CI. + if ("$ENV{TARGET_OSVERSION_COIN}" STREQUAL "qemu") + list(APPEND gnArgArg + v8_enable_sandbox=false + arm_control_flow_integrity="none" + ) + endif() + endif() + unset(cpu) + endif() + + if(MACOS) + list(APPEND gnArgArg + use_external_popup_menu=false + skia_use_metal=false + ) + endif() + + if(WIN32) + list(APPEND gnArgArg + ninja_use_custom_environment_files=false + com_init_check_hook_disabled=true + heterogeneous_executables=true + ) + endif() + + add_gn_command( + CMAKE_TARGET WebEngineCore + NINJA_TARGETS QtWebEngineCore convert_dict + GN_TARGET ${buildGn} + GN_ARGS ${gnArgArg} + BUILDDIR ${buildDir}/${config}/${arch} + MODULE core + ) + + endforeach() + create_cxx_configs(WebEngineCore ${arch}) +endforeach() + + +## +# WEBENGINECORE SETUP +## + +list(GET archs 0 arch) +target_include_directories(WebEngineCore PRIVATE + ${buildDir}/$<CONFIG>/${arch}/gen + ${buildDir}/$<CONFIG>/${arch}/gen/third_party/perfetto + ${buildDir}/$<CONFIG>/${arch}/gen/third_party/perfetto/build_config +) + +set(stamps QtWebEngineCore.stamp) +if(QT_FEATURE_webengine_v8_context_snapshot) + set(dataStamp obj/tools/v8_context_snapshot/v8_context_snapshot.stamp) +endif() + +add_gn_build_artifacts_to_target( + CMAKE_TARGET WebEngineCore + NINJA_TARGET QtWebEngineCore + MODULE core + BUILDDIR ${buildDir} + COMPLETE_STATIC FALSE + NINJA_STAMP QtWebEngineCore.stamp + NINJA_DATA_STAMP ${dataStamp} +) +add_dependencies(WebEngineCore run_core_NinjaDone) +if(COIN_BUG_699) + set_property(TARGET WebEngineCore PROPERTY CXX_LINKER_LAUNCHER ${PROJECT_BINARY_DIR}/linker_ulimit.sh) +endif() + +## +# SANDBOX +## + +if(WIN32) + add_library(WebEngineCoreSandbox STATIC IMPORTED GLOBAL) + foreach(config ${configs}) + string(TOUPPER ${config} cfg) + add_ninja_command( + TARGET QtWebEngineCoreSandbox + OUTPUT QtWebEngineCoreSandbox.lib + BUILDDIR ${buildDir}/${config}/${arch} + MODULE core + ) + set(sandboxLibraryPath ${buildDir}/${config}/${arch}/QtWebEngineCoreSandbox.lib) + set_property(TARGET WebEngineCoreSandbox + PROPERTY IMPORTED_LOCATION_${cfg} ${sandboxLibraryPath} + ) + add_custom_target(sandboxLibrary_${config} + DEPENDS ${buildDir}/${config}/${arch}/QtWebEngineCoreSandbox.lib) + add_dependencies(run_core_NinjaDone sandboxLibrary_${config}) + add_dependencies(WebEngineCoreSandbox WebEngineCore) + endforeach() +endif() + +## +# WEBENGINECORE DICT TOOL SETUP +## + +if(QT_FEATURE_webengine_spellchecker AND NOT CMAKE_CROSSCOMPILING) + qt_get_tool_target_name(dict_target_name qwebengine_convert_dict) + target_include_directories(${dict_target_name} PRIVATE + ../3rdparty/chromium + ../3rdparty/chromium/third_party/boringssl/src/include + ${buildDir}/$<CONFIG>/${arch}/gen + ) + add_gn_build_artifacts_to_target( + CMAKE_TARGET ${dict_target_name} + NINJA_TARGET convert_dict + MODULE core + BUILDDIR ${buildDir} + COMPLETE_STATIC FALSE + NINJA_STAMP convert_dict.stamp + ) + add_dependencies(${dict_target_name} run_core_NinjaDone) + add_dependencies(${dict_target_name} WebEngineCore) +endif() + +## +# WEBENGINEDRIVER +## + +if(QT_FEATURE_webenginedriver) + add_ninja_command( + TARGET webenginedriver_group + OUTPUT ${WEBENGINEDRIVER_EXECUTABLE} + BUILDDIR ${buildDir}/$<CONFIG>/${arch} + MODULE core + ) + add_custom_target(webenginedriver + DEPENDS + ${buildDir}/$<CONFIG>/${arch}/${WEBENGINEDRIVER_EXECUTABLE}) + add_dependencies(run_core_NinjaDone webenginedriver) +endif() + +## +# CHROMIUM UPDATE +## + +add_custom_target(update-chromium + COMMAND ${CMAKE_COMMAND} -P ${WEBENGINE_ROOT_SOURCE_DIR}/cmake/SubmoduleUpdate.cmake + DEPENDS ${WEBENGINE_ROOT_SOURCE_DIR}/cmake/SubmoduleUpdate.cmake +) |