import("//build/buildflag_header.gni") import("//chrome/common/features.gni") import("//electron/build/templated_file.gni") import("//electron/buildflags/buildflags.gni") import("//electron/filenames.auto.gni") import("//electron/filenames.gni") import("//extensions/buildflags/buildflags.gni") import("//mojo/public/tools/bindings/mojom.gni") import("//ppapi/buildflags/buildflags.gni") import("//tizen_src/chromium_impl/components/components.gni") import("//tools/grit/grit_rule.gni") import("//tools/grit/repack.gni") import("build/wrt.gni") import("filenames.gni") electron_version = "28.1.0" declare_args() { if (tizen_product_tv) { lib_dir_path = "" } enable_chrome_extensions = false } buildflag_header("buildflags") { header = "buildflags.h" header_dir = "wrt/electron/buildflags" flags = [ "ENABLE_VIEWS_API=false", "ENABLE_PDF_VIEWER=false", "ENABLE_ELECTRON_EXTENSIONS=$enable_chrome_extensions", "ENABLE_BUILTIN_SPELLCHECKER=false", "OVERRIDE_LOCATION_PROVIDER=false", ] } webpack_build("electron_asar_bundle") { inputs = rebase_path( auto_filenames.asar_bundle_deps, ".", "//electron") config_file = "//electron/build/webpack/webpack.config.asar.js" out_file = "$root_gen_dir/electron/js2c/asar_bundle.js" } webpack_build("electron_browser_bundle") { inputs = rebase_path( auto_filenames.browser_bundle_deps, ".", "//electron") config_file = "//electron/build/webpack/webpack.config.browser.js" out_file = "$root_gen_dir/electron/js2c/browser_init.js" } webpack_build("electron_renderer_bundle") { inputs = rebase_path( auto_filenames.renderer_bundle_deps, ".", "//electron") config_file = "//electron/build/webpack/webpack.config.renderer.js" out_file = "$root_gen_dir/electron/js2c/renderer_init.js" } webpack_build("electron_worker_bundle") { inputs = rebase_path( auto_filenames.worker_bundle_deps, ".", "//electron") config_file = "//electron/build/webpack/webpack.config.worker.js" out_file = "$root_gen_dir/electron/js2c/worker_init.js" } webpack_build("electron_sandboxed_renderer_bundle") { inputs = rebase_path( auto_filenames.sandbox_bundle_deps, ".", "//electron") config_file = "//electron/build/webpack/webpack.config.sandboxed_renderer.js" out_file = "$root_gen_dir/electron/js2c/sandbox_bundle.js" } webpack_build("electron_isolated_renderer_bundle") { inputs = rebase_path( auto_filenames.isolated_bundle_deps, ".", "//electron") config_file = "//electron/build/webpack/webpack.config.isolated_renderer.js" out_file = "$root_gen_dir/electron/js2c/isolated_bundle.js" } webpack_build("electron_utility_bundle") { inputs = rebase_path( auto_filenames.utility_bundle_deps, ".", "//electron") config_file = "//electron/build/webpack/webpack.config.utility.js" out_file = "$root_gen_dir/electron/js2c/utility_init.js" } action("electron_js2c") { deps = [ ":electron_asar_bundle", ":electron_browser_bundle", ":electron_isolated_renderer_bundle", ":electron_renderer_bundle", ":electron_sandboxed_renderer_bundle", ":electron_utility_bundle", ":electron_worker_bundle", ] sources = [ "$root_gen_dir/electron/js2c/asar_bundle.js", "$root_gen_dir/electron/js2c/browser_init.js", "$root_gen_dir/electron/js2c/isolated_bundle.js", "$root_gen_dir/electron/js2c/renderer_init.js", "$root_gen_dir/electron/js2c/sandbox_bundle.js", "$root_gen_dir/electron/js2c/utility_init.js", "$root_gen_dir/electron/js2c/worker_init.js", ] inputs = sources + [ "//third_party/electron_node/tools/js2c.py" ] outputs = [ "$root_gen_dir/electron/electron_natives.cc" ] script = "//electron/build/js2c.py" args = [ rebase_path("//third_party/electron_node") ] + rebase_path(outputs, root_build_dir) + rebase_path(sources, root_build_dir) } action("generate_config_gypi") { outputs = [ "$root_gen_dir/config.gypi" ] script = "build/generate-config-gypi.py" inputs = [ "//third_party/electron_node/configure.py" ] args = rebase_path(outputs) + [ target_cpu ] } grit("electron_resources") { source = "//electron/electron_resources.grd" outputs = [ "grit/electron_resources.h", "electron_resources.pak", ] # Mojo manifest overlays are generated. grit_flags = [ "-E", "target_gen_dir=" + rebase_path(target_gen_dir, root_build_dir), ] deps = [ ":copy_shell_devtools_discovery_page" ] output_dir = "$root_gen_dir/electron" } copy("copy_shell_devtools_discovery_page") { sources = [ "//content/shell/resources/shell_devtools_discovery_page.html" ] outputs = [ "$target_gen_dir/shell_devtools_discovery_page.html" ] } npm_action("electron_version_args") { script = "generate-version-json" outputs = [ "$root_gen_dir/electron/electron_version.args" ] args = rebase_path(outputs) + [ "$electron_version" ] inputs = [ "//electron/script/generate-version-json.js" ] } templated_file("electron_version_header") { deps = [ ":electron_version_args" ] template = "//electron/build/templates/electron_version.tmpl" output = "$root_gen_dir/electron/electron_version.h" args_files = get_target_outputs(":electron_version_args") } action("electron_fuses") { script = "//electron/build/fuses/build.py" inputs = [ "//electron/build/fuses/fuses.json5" ] outputs = [ "$root_gen_dir/electron/fuses.h", "$root_gen_dir/electron/fuses.cc", ] args = rebase_path(outputs) } action("electron_generate_node_defines") { script = "//electron/build/generate_node_defines.py" inputs = [ "//third_party/electron_node/src/tracing/trace_event_common.h", "//third_party/electron_node/src/tracing/trace_event.h", "//third_party/electron_node/src/util.h", ] outputs = [ "$root_gen_dir/electron/push_and_undef_node_defines.h", "$root_gen_dir/electron/pop_node_defines.h", ] args = [ rebase_path("$root_gen_dir/electron") ] + rebase_path(inputs) } grit("wrt_resources") { source = "//wrt/wrt_resources.grd" defines = [ "enable_extensions=$enable_chrome_extensions", ] outputs = [ "grit/wrt_resources.h", "wrt_resources.pak", ] output_dir = "$target_gen_dir" } repack("wrt_packed_resources") { sources = [ "$root_gen_dir/electron/electron_resources.pak", "$root_gen_dir/wrt/wrt_resources.pak", ] deps = [ "//wrt:electron_resources_grit", "//wrt:wrt_resources", ] if (enable_chrome_extensions) { sources += [ "$root_gen_dir/chrome/component_extension_resources.pak", "$root_gen_dir/extensions/extensions_browser_resources_100_percent.pak", "$root_gen_dir/extensions/extensions_renderer_resources.pak", "$root_gen_dir/extensions/extensions_resources.pak", ] deps += [ "//chrome/browser/resources:component_extension_resources", "//extensions:extensions_resources", ] } output = "$root_out_dir/wrt_resources.pak" } mojom("mojo_bindings") { cpp_only = true sources = [ "src/common/wrt.mojom", ] public_deps = [ "//mojo/public/mojom/base", "//ui/gfx/geometry/mojom", ] } config("wrt_config") { configs = [ "//tizen_src/build:appsvc", "//tizen_src/build:aul", "//tizen_src/build:cynara-client", "//tizen_src/build:capi-appfw-package-manager", "//tizen_src/build:capi-appfw-service-application", "//tizen_src/build:libefl-extension", "//tizen_src/build:launchpad", "//tizen_src/build:libcapi-appfw-app-manager", "//tizen_src/build:libcapi-appfw-application", "//tizen_src/build:libcapi-media-player", "//tizen_src/build:libcapi-system-system-settings", "//tizen_src/build:libecore-wayland", "//tizen_src/build:libnotification", "//tizen_src/build:libwebappenc", "//tizen_src/build:pkgmgr-info", "//tizen_src/build:tizen-extension-client", "//tizen_src/build:uuid", "//tizen_src/build:wayland-client", "//tizen_src/build:wgt-manifest-handlers", ] if (!ewk_bringup && tizen_atk_support) { configs += [ "//tizen_src/build:libatk" ] } if (tizen_product_tv) { configs += [ "//tizen_src/build:autoinput", "//tizen_src/build:libcapi-media-camera", "//tizen_src/build:capi-screensaver", "//tizen_src/build:capi-system-display-rotator", "//tizen_src/build:libcapi-system-info", "//tizen_src/build:libcapi-system-sensor", "//tizen_src/build:message-port", "//tizen_src/build:settings-api", "//tizen_src/build:sqlite3", "//tizen_src/build:tvs-api", "//tizen_src/build:ui-gadget-1", "//tizen_src/build:vd-win-util", ] if (tizen_version >= 70) { configs += [ "//tizen_src/build:capi-boost-tv" ] } } else { configs += [ "//tizen_src/build:capi-appfw-watch-application", "//tizen_src/build:capi-ui-inputmethod", ] } if (use_lto) { ldflags += [ "-lm" ] } } static_library("wrt_lib") { deps = [ ":buildflags", ":electron_fuses", ":electron_generate_node_defines", ":electron_js2c", ":electron_resources", ":electron_version_header", ":mojo_bindings", ":wrt_packed_resources", "resources", "//chrome/browser:resource_prefetch_predictor_proto", "//chrome/common:buildflags", "//components/crash/core/app", "//components/navigation_interception", "//components/net_log", "//components/network_hints/browser", "//components/network_hints/common:mojo_bindings", "//components/network_hints/renderer", "//components/os_crypt/async/browser", "//components/paint_preview/buildflags", "//components/security_state/content", "//components/services/language_detection/public/mojom", "//components/upload_list", "//electron/shell/common/api:mojo", "//electron/shell/services/node/public/mojom", "//services/proxy_resolver:lib", "//third_party/electron_node:node_lib", "//third_party/webrtc_overrides:webrtc_component", "//tizen_src/chromium_impl/components/xwalk_extensions:mojo_bindings", ] public_deps = [ "//chrome/common", "//components/embedder_support:browser_util", "//components/proxy_config", "//components/webrtc", ] data_deps = [ "//tizen_src/chromium_impl/components/xwalk_extensions:offload_js_plugin", "//tizen_src/chromium_impl/components/xwalk_extensions:splash_screen_plugin", "//tizen_src/chromium_impl/components/xwalk_extensions:widget_plugin", ] configs += [ "//skia:skia_config", "//third_party/electron_node:node_internals", "//third_party/jsoncpp:jsoncpp_config", "//third_party/leveldatabase:leveldb_config", "//third_party/protobuf:protobuf_config", "//tizen_src/chromium_impl/components/xwalk_extensions:xwalk_extension_config", "//v8:external_startup_data", ] public_configs = [ ":wrt_config" ] include_dirs = [ "overrides", "overrides/electron", "//electron", "//tizen_src/ewk/efl_integration", "$target_gen_dir", "$root_gen_dir/electron", ] defines = [ "ELECTRON_PRODUCT_NAME=\"WRT\"", "ELECTRON_PROJECT_NAME=\"WRT\"", "ENABLE_CHROME_EXTENSIONS=$enable_chrome_extensions", "IS_MAS_BUILD()=0", ] if (tizen_product_tv) { defines += [ "CHROMIUM_RO_ROOT_DIR=\"$lib_ro_root_dir\"", "CHROMIUM_UPGRADED_LIB=\"$lib_upgrade_root_dir/lib/$chromium_impl_lib_name\"", "LIB_PATH=\"$lib_dir_path\"", ] } if (tizen_thread_booster_service) { defines += [ "THREAD_BOOSTER_SERVICE" ] } sources = wrt_lib_sources + [ "//electron/shell/browser/certificate_manager_model.cc", "//electron/shell/browser/certificate_manager_model.h", "//electron/shell/browser/lib/power_observer_linux.cc", "//electron/shell/browser/relauncher_linux.cc", "//electron/shell/common/node_bindings_linux.cc", ] sources += rebase_path(electron_override_sources, ".", "overrides/electron") if (!build_chrome) { sources += [ "//chrome/browser/app_mode/app_mode_utils.cc", "//chrome/browser/app_mode/app_mode_utils.h", "//chrome/browser/browser_features.cc", "//chrome/browser/browser_features.h", "//chrome/browser/browser_process.cc", "//chrome/browser/browser_process.h", "//chrome/browser/devtools/devtools_contents_resizing_strategy.cc", "//chrome/browser/devtools/devtools_contents_resizing_strategy.h", "//chrome/browser/devtools/devtools_embedder_message_dispatcher.cc", "//chrome/browser/devtools/devtools_embedder_message_dispatcher.h", "//chrome/browser/devtools/devtools_file_system_indexer.cc", "//chrome/browser/devtools/devtools_file_system_indexer.h", "//chrome/browser/icon_loader.cc", "//chrome/browser/icon_loader.h", "//chrome/browser/icon_loader_auralinux.cc", "//chrome/browser/icon_manager.cc", "//chrome/browser/icon_manager.h", "//chrome/browser/net/chrome_mojo_proxy_resolver_factory.cc", "//chrome/browser/net/chrome_mojo_proxy_resolver_factory.h", "//chrome/browser/net/proxy_config_monitor.cc", "//chrome/browser/net/proxy_config_monitor.h", "//chrome/browser/net/proxy_service_factory.cc", "//chrome/browser/net/proxy_service_factory.h", "//chrome/browser/process_singleton.h", "//chrome/browser/process_singleton_posix.cc", "//chrome/browser/ui/exclusive_access/exclusive_access_controller_base.cc", "//chrome/browser/ui/exclusive_access/exclusive_access_controller_base.h", "//chrome/browser/ui/exclusive_access/exclusive_access_manager.cc", "//chrome/browser/ui/exclusive_access/exclusive_access_manager.h", "//chrome/browser/ui/exclusive_access/fullscreen_controller.cc", "//chrome/browser/ui/exclusive_access/fullscreen_controller.h", "//chrome/browser/ui/exclusive_access/fullscreen_within_tab_helper.cc", "//chrome/browser/ui/exclusive_access/fullscreen_within_tab_helper.h", "//chrome/browser/ui/exclusive_access/keyboard_lock_controller.cc", "//chrome/browser/ui/exclusive_access/keyboard_lock_controller.h", "//chrome/browser/ui/exclusive_access/mouse_lock_controller.cc", "//chrome/browser/ui/exclusive_access/mouse_lock_controller.h", ] } if (tizen_product_tv) { sources += wrt_lib_sources_tv } else { sources += wrt_lib_sources_unified } if (tizen_product_da) { sources += wrt_lib_sources_da } if (!ewk_bringup && enable_meerkat) { sources += wrt_lib_sources_edge } sources += wrt_lib_sources_mde sources += get_target_outputs(":electron_fuses") sources += xwalk_extensions_sources if (enable_plugins) { sources += [ "//electron/shell/common/plugin_info.cc", "//electron/shell/common/plugin_info.h", ] if (enable_ppapi) { sources += [ "//electron/shell/renderer/electron_renderer_pepper_host_factory.cc", "//electron/shell/renderer/electron_renderer_pepper_host_factory.h", "//electron/shell/renderer/pepper_helper.cc", "//electron/shell/renderer/pepper_helper.h", ] } } if (enable_chrome_extensions) { deps += [ "//chrome/browser/resources:component_extension_resources", "//electron/shell/browser/extensions/api:api_registration", "//electron/shell/common/extensions/api", "//electron/shell/common/extensions/api:extensions_features", "//extensions/browser", "//extensions/browser:core_api_provider", "//extensions/common", "//extensions/common:core_api_provider", "//extensions/renderer", "//pdf:buildflags", "//wrt/src/browser/extensions/api:api_registration", "//wrt/src/common/extensions/api", "//wrt/src/common/extensions/api:extensions_features", ] sources += wrt_lib_sources_chrome_extensions } else { if (!build_chrome) { sources += wrt_lib_sources_without_chrome_extensions } } if (enable_printing && !build_chrome) { deps += [ "//chrome/services/printing:lib", "//chrome/services/printing/public/mojom", "//components/printing/browser", "//components/printing/common:mojo_interfaces", "//components/printing/renderer", "//components/services/print_compositor", ] sources += [ "//chrome/browser/bad_message.cc", "//chrome/browser/bad_message.h", "//chrome/browser/printing/print_error_dialog.cc", "//chrome/browser/printing/print_error_dialog.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", "//chrome/browser/printing/print_view_manager_base.cc", "//chrome/browser/printing/print_view_manager_base.h", "//chrome/browser/printing/printer_query.cc", "//chrome/browser/printing/printer_query.h", "//components/printing/browser/print_to_pdf/pdf_print_job.cc", "//components/printing/browser/print_to_pdf/pdf_print_job.h", "//components/printing/browser/print_to_pdf/pdf_print_result.cc", "//components/printing/browser/print_to_pdf/pdf_print_result.h", "//components/printing/browser/print_to_pdf/pdf_print_utils.cc", "//components/printing/browser/print_to_pdf/pdf_print_utils.h", "//electron/shell/browser/printing/print_view_manager_electron.cc", "//electron/shell/browser/printing/print_view_manager_electron.h", "//electron/shell/renderer/printing/print_render_frame_helper_delegate.cc", "//electron/shell/renderer/printing/print_render_frame_helper_delegate.h", ] if (enable_oop_printing) { sources += [ "//chrome/browser/printing/print_backend_service_manager.cc", "//chrome/browser/printing/print_backend_service_manager.h", "//chrome/browser/printing/print_job_worker_oop.cc", "//chrome/browser/printing/print_job_worker_oop.h", ] } if (enable_print_preview) { sources += [ "//chrome/browser/printing/printing_service.cc", "//chrome/browser/printing/printing_service.h", ] } } else { sources += [ "//electron/shell/browser/printing/print_view_manager_electron.cc", "//electron/shell/browser/printing/print_view_manager_electron.h", "//electron/shell/renderer/printing/print_render_frame_helper_delegate.cc", "//electron/shell/renderer/printing/print_render_frame_helper_delegate.h", ] } unused_electron_sources = [ "shell/browser/api/electron_api_desktop_capturer.cc", "shell/browser/api/electron_api_global_shortcut.cc", "shell/browser/api/electron_api_native_theme.cc", "shell/browser/api/electron_api_safe_storage.cc", "shell/browser/electron_autofill_driver.cc", "shell/browser/electron_autofill_driver_factory.cc", "shell/browser/osr/osr_host_display_client.cc", "shell/browser/osr/osr_render_widget_host_view.cc", "shell/browser/osr/osr_video_consumer.cc", "shell/browser/osr/osr_view_proxy.cc", "shell/browser/osr/osr_web_contents_view.cc", "shell/browser/plugins/plugin_utils.cc", "shell/browser/ui/autofill_popup.cc", "shell/browser/ui/webui/accessibility_ui.cc", "shell/renderer/api/electron_api_spell_check_client.cc", "shell/renderer/electron_autofill_agent.cc", ] + electron_override_sources electron_sources = filenames.lib_sources + filenames.lib_sources_posix if (enable_chrome_extensions) { electron_sources += filenames.lib_sources_extensions } if (toolkit_views) { deps += [ "//ui/views", "//ui/views/controls/webview", ] electron_sources += filenames.lib_sources_views unused_electron_sources += [ "shell/browser/api/electron_api_menu_views.cc", "shell/browser/native_browser_view_views.cc", "shell/browser/native_window_views.cc", "shell/browser/ui/drag_util_views.cc", "shell/browser/ui/views/autofill_popup_view.cc", "shell/browser/ui/views/inspectable_web_contents_view_views.cc", ] } electron_sources -= unused_electron_sources sources += rebase_path(electron_sources, ".", "//electron") } executable("wrt") { testonly = true deps = [ "//tizen_src/ewk/efl_integration:libchromium-ewk", ] sources = [ "src/app/wrt_main.cc" ] ldflags = [ "-pie", "-Wl,--export-dynamic" ] cflags = [ "-fPIC" ] if (is_tizen) { configs += [ "//tizen_src/build/config/tizen:executable_config" ] } } shared_library("wrt-service-override") { sources = [ "src/common/wrt_service_override.cc" ] libs = [ "dlog" ] ldflags = [ "-Wl,--export-dynamic" ] cflags = [ "-fPIC" ] } executable("wrt-service") { testonly = true deps = [ ":wrt-service-override", "//tizen_src/ewk/efl_integration:libchromium-ewk" ] sources = [ "src/app/service_main.cc", "src/browser/wrt_ipc.cc", "src/browser/wrt_ipc.h", ] if (is_tizen) { configs += [ "//tizen_src/build:appcore-agent", "//tizen_src/build:dbus-1", "//tizen_src/build:dlog", "//tizen_src/build/config/tizen:executable_config", "//tizen_src/chromium_impl/components/xwalk_extensions:xwalk_extension_service_config", ] } } executable("wrt-service-launcher") { testonly = true sources = [ "src/app/service_launcher_main.cc", "src/browser/wrt_ipc.cc", "src/browser/wrt_ipc.h", "src/service/wrt_service_launcher.cc", "src/service/wrt_service_launcher.h", ] configs += [ "//tizen_src/build:bundle", "//tizen_src/build:appcore-agent", "//tizen_src/build:capi-appfw-app-control", "//tizen_src/build:dbus-1", "//tizen_src/build:dlog", "//tizen_src/build:message-port", "//tizen_src/build/config/tizen:executable_config", ] }