# Copyright 2016 The Chromium Embedded Framework Authors. Portions copyright # 2014 the Chromium Authors. All rights reserved. Use of this source code is # governed by a BSD-style license that can be found in the LICENSE file. # # This file provides the GN configuration for the CEF project. This is not a # stand-alone configuration -- it must be built from inside the Chromium source # tree. See https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding # for complete CEF build instructions. See below for links to additional GN # documentation. # # GN Setup: # # Optionally configure GN by setting the `GN_DEFINES` and/or `GN_ARGUMENTS` # environment variables. # # Example A: Create an official build on Windows: # # > set GN_DEFINES=is_official_build=true # # Example B: Generate VS2017 project files in addition to the default Ninja # build files on Windows: # # > set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/* # # After completing the "GN Automated Build" or "GN Manual Build" section # open "out\\cef.sln" for editing and debugging. Building must # still be performed using the Ninja command-line. # # GN Automated Build: # # Run the `automate-git.py` script as described on the BranchesAndBuilding # Wiki page. GN, unlike GYP, supports parallel build configurations. The # following command-line flags have special meaning with GN builds: # # --x64-build Perform an x64 build if specified (requires out/*_GN_x64 # directories), otherwise perform an x86 build (requires # out/*_GN_x86 directories). # # Directories are created subject to your platform and `GN_DEFINES` settings. # See Step 1B in the "GN Manual Build" section below for details. # # GN Manual Build: # # 1. Run the `cef_create_projects.[bin|sh]` script. Upon successful completion # proceed to Step 2. # # The `cef_create_projects.[bin|sh]` script will automatically do all of the # following: # # A. Apply patch files to the Chromium source tree. This includes # `patch/patches/gn_config.patch` which is required for GN integration. # # B. Create multiple build output directories appropriate to your platform # and `GN_DEFINES` settings. For example: # # x86 debug build -> out/Debug_GN_x86 # x86 release build -> out/Release_GN_x86 # x64 debug build -> out/Debug_GN_x64 # x64 release build -> out/Release_GN_x64 # # Build output directories will be created subject to the following rules # (defined in `tools/gn_args.py` GetAllPlatformConfigs): # # - Debug and Release directories will be created on all platforms by # default. Debug directories will not be created when `is_asan=true`. # - x64 directories will always be created on all platforms. # - x86 directories will always be created on Windows. # - x86 directories will be created on Linux when `use_sysroot=true`. # # C. Write the `args.gn` file for each build output directory using the # `tools/gn_args.py` script to determine the GN arguments. Some arguments # are required and some are optional. See script output for details in # case of conflicts or recommendations. # # D. Run `gn gen` for each build output directory to generate project files. # Ninja files will be generated by default. Additional command-line # arguments (including other project formats) can be specified via the # `GN_ARGUMENTS` environment variable. Run `gn gen --help` for a list of # supported arguments. # # 2. Run Ninja from the command-line to build. If the build configuration has # changed it will automatically re-run `gn gen` with the same arguments. # # > ninja -C out/ cefclient cefsimple ceftests # # GN Manual Packaging: # # Run the `make_distrib.[bat|sh]` script as described on the # BranchesAndBuilding Wiki page. # # Additional GN documentation: # http://www.chromium.org/developers/gn-build-configuration # https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/language.md # import("//base/allocator/allocator.gni") import("//build/config/features.gni") import("//build/config/locales.gni") import("//build/config/ozone.gni") import("//build/config/sanitizers/sanitizers.gni") import("//build/config/ui.gni") import("//cef/libcef/features/features.gni") import("//chrome/common/features.gni") import("//content/public/app/mac_helpers.gni") import("//extensions/buildflags/buildflags.gni") import("//media/media_options.gni") import("//mojo/public/tools/bindings/mojom.gni") import("//ppapi/buildflags/buildflags.gni") import("//printing/buildflags/buildflags.gni") import("//rlz/buildflags/buildflags.gni") import("//testing/test.gni") import("//third_party/icu/config.gni") import("//third_party/widevine/cdm/widevine.gni") import("//tools/grit/repack.gni") import("//tools/grit/grit_rule.gni") import("//tools/v8_context_snapshot/v8_context_snapshot.gni") import("//ui/gl/features.gni") import("//v8/gni/v8.gni") if (is_clang) { import("//build/config/clang/clang.gni") } if (is_linux) { import("//build/config/linux/pkg_config.gni") import("//third_party/fontconfig/fontconfig.gni") } if (is_mac) { import("//build/apple/tweak_info_plist.gni") import("//build/config/mac/rules.gni") import("//chrome/version.gni") import("//media/cdm/library_cdm/cdm_paths.gni") # Template to compile .xib and .storyboard files. # # Arguments # # sources: # list of string, sources to compile # # ibtool_flags: # (optional) list of string, additional flags to pass to the ibtool template("compile_ib_files") { action_foreach(target_name) { forward_variables_from(invoker, [ "testonly", "visibility", ]) assert(defined(invoker.sources), "sources must be specified for $target_name") assert(defined(invoker.output_extension), "output_extension must be specified for $target_name") ibtool_flags = [] if (defined(invoker.ibtool_flags)) { ibtool_flags = invoker.ibtool_flags } _output_extension = invoker.output_extension script = "//cef/tools/compile_ib_files.py" sources = invoker.sources outputs = [ "$target_gen_dir/$target_name/{{source_name_part}}.$_output_extension", ] args = [ "--input", "{{source}}", "--output", rebase_path( "$target_gen_dir/$target_name/{{source_name_part}}.$_output_extension", root_build_dir), ] if (!use_system_xcode) { args += [ "--developer_dir", hermetic_xcode_path, ] } args += ibtool_flags } } # Template to compile and package Mac XIB files as bundle data. # # Arguments # # sources: # list of string, sources to comiple # # output_path: # (optional) string, the path to use for the outputs list in the # bundle_data step. If unspecified, defaults to bundle_resources_dir. template("mac_xib_bundle_data") { _target_name = target_name _compile_target_name = _target_name + "_compile_ibtool" compile_ib_files(_compile_target_name) { forward_variables_from(invoker, [ "testonly" ]) visibility = [ ":$_target_name" ] sources = invoker.sources output_extension = "nib" ibtool_flags = [ "--minimum-deployment-target", mac_deployment_target, # TODO(rsesek): Enable this once all the bots are on Xcode 7+. # "--target-device", # "mac", ] } bundle_data(_target_name) { forward_variables_from(invoker, [ "testonly", "visibility", ]) public_deps = [ ":$_compile_target_name", ] sources = get_target_outputs(":$_compile_target_name") _output_path = "{{bundle_resources_dir}}" if (defined(invoker.output_path)) { _output_path = invoker.output_path } outputs = [ "$_output_path/{{source_file_part}}", ] } } } if (is_win) { import("//build/config/win/console_app.gni") import("//build/config/win/manifest.gni") } if (is_linux) { declare_args() { # The cefclient target depends on GTK packages that are not available in the # default sysroot environment. So we should only use them when we are not # using the sysroot. Alternatively, the developer might not want to use the # GTK dependencies at all, in which case they can set `cef_use_gtk=false`. cef_use_gtk = !use_sysroot } } # # Verify required global arguments configured via `gn args`. # Set by GetRequiredArgs() in //cef/tools/gn_args.py. # # Enable support for Print Preview. assert(enable_print_preview) # Enable support for Widevine CDM. assert(enable_widevine) if (is_mac || is_win) { # Enable Widevine CDM host verification and storage ID. assert(enable_cdm_host_verification) assert(enable_cdm_storage_id) assert(alternate_cdm_storage_id_key != "") assert(enable_rlz) } # Enable Views UI framework. assert(toolkit_views) if (is_clang) { # Don't use the chrome style plugin. assert(!clang_use_chrome_plugins) } # # Local variables. # if (is_mac) { # The tweak_info_plist.py script requires a version number with 4 parts. CEF # uses a version number with 3 parts so just set the last part to 0. cef_plist_version = exec_script( "//cef/tools/cef_version.py", [ "plist" ], "trim string", []) # Need to be creative to match dylib version formatting requirements. cef_dylib_version = exec_script( "//cef/tools/cef_version.py", [ "dylib" ], "trim string", []) } # Read file lists from gypi files. The gypi_to_gn.py script does not support # variable references so all required variables must be explicitly specified in # the below configurations. gypi_paths = exec_script("//cef/tools/gypi_to_gn.py", [ rebase_path("cef_paths.gypi") ], "scope", [ "cef_paths.gypi" ]) gypi_paths2 = exec_script("//cef/tools/gypi_to_gn.py", [ rebase_path("cef_paths2.gypi") ], "scope", [ "cef_paths2.gypi" ]) includes_common = gypi_paths2.includes_common + gypi_paths2.includes_common_capi includes_mac = gypi_paths2.includes_mac + gypi_paths2.includes_mac_capi includes_linux = gypi_paths2.includes_linux + gypi_paths2.includes_linux_capi includes_win = gypi_paths2.includes_win + gypi_paths2.includes_win_capi # # Targets that will be built when depending on "//cef". # group("cef") { testonly = true deps = [ ":cefsimple", ":ceftests", ":libcef_static_unittests", ] if (!is_linux || ozone_platform_x11) { deps += [ ":cefclient" ] } } if (is_win) { # Target for building code that accesses chrome_elf internals. Included from # the //chrome_elf:crash target. Defined as a static_library instead of a # source_set because (a) the source files don't export any symbols and (b) # *_switches.cc duplication otherwise causes linker errors. static_library("chrome_elf_set") { sources = [ "libcef/common/crash_reporter_client.cc", "libcef/common/crash_reporter_client.h", # Required for crash_keys::GetChromeCrashKeys. # Otherwise we need to copy this array into CEF, which would be difficult # to maintain. "//chrome/common/crash_keys.cc", "//chrome/common/chrome_switches.cc", "//components/flags_ui/flags_ui_switches.cc", "//content/public/common/content_switches.cc", ] configs += [ "libcef/features:config", "//build/config:precompiled_headers", ] public_configs = [ "libcef/features:config", ] if (is_component_build) { # Avoid linker errors with content_switches.cc in component build by not # defining CONTENT_EXPORT. defines = ["COMPILE_CONTENT_STATICALLY"] } deps = [ "//components/crash/core/common", # crash_keys # Required by chrome_switches.cc "//chrome/common:buildflags", "//ppapi/buildflags:buildflags", "//printing/buildflags:buildflags", "//ui/base:buildflags", # Required by content_switches.cc "//media:media_buildflags", # Required by crash_keys.cc (from base/stl_util.h) "//third_party/abseil-cpp:absl", ] } } # # Test support targets. # # Source files that are linked into libcef and cef_framework and tested by # libcef_static_unittests. These sources provide libcef-internal functionality # that is limited in scope (e.g. utility classes/methods). source_set("libcef_static_unittested") { sources = [ "libcef/browser/devtools/devtools_util.cc", "libcef/browser/devtools/devtools_util.h", "libcef/browser/geometry_util.h", "libcef/browser/geometry_util.cc", ] deps = [ "//ui/gfx/geometry", ] public_deps = [ # Support relative include paths. "//base", ] configs += [ "libcef/features:config", "//build/config:precompiled_headers", ] } # Executable target that provides test coverage for libcef_static_unittested # source files. test("libcef_static_unittests") { testonly = true sources = [ "libcef/browser/devtools/devtools_util_unittest.cc", "libcef/browser/geometry_util_unittest.cc", ] deps = [ ":libcef_static_unittested", "//base/test:run_all_unittests", "//testing/gtest", ] configs += [ "libcef/features:config", "//build/config:precompiled_headers", ] } # Source files that are linked into libcef and cef_framework and implement # interfaces exposed to ceftests via the include/test directory. These sources # may access Chromium/CEF internals. This is defined as a separate target from # libcef_static to avoid introducing testonly dependencies there. source_set("libcef_test_support") { testonly = true sources = [ "libcef/browser/test/test_helpers_impl.cc", "libcef/browser/test/test_server_impl.cc", "libcef/browser/test/test_server_impl.h", "libcef/common/test/translator_test_impl.cc", ] deps = [ ":libcef_static", "//net:test_support", # Support for UI input events. "//ui/views:test_support", ] } # # libcef_static target. # source_set("libcef_static") { sources = includes_common + gypi_paths.autogen_cpp_includes + [ "libcef/browser/alloy/alloy_browser_host_impl.cc", "libcef/browser/alloy/alloy_browser_host_impl.h", "libcef/browser/alloy/browser_platform_delegate_alloy.cc", "libcef/browser/alloy/browser_platform_delegate_alloy.h", "libcef/browser/alloy/dialogs/alloy_constrained_window_views_client.cc", "libcef/browser/alloy/dialogs/alloy_constrained_window_views_client.h", "libcef/browser/alloy/dialogs/alloy_web_contents_dialog_helper.cc", "libcef/browser/alloy/dialogs/alloy_web_contents_dialog_helper.h", "libcef/browser/audio_capturer.cc", "libcef/browser/audio_capturer.h", "libcef/browser/audio_loopback_stream_creator.cc", "libcef/browser/audio_loopback_stream_creator.h", "libcef/browser/browser_contents_delegate.cc", "libcef/browser/browser_contents_delegate.h", "libcef/browser/browser_context.cc", "libcef/browser/browser_context.h", "libcef/browser/browser_event_util.cc", "libcef/browser/browser_event_util.h", "libcef/browser/browser_frame.cc", "libcef/browser/browser_frame.h", "libcef/browser/browser_guest_util.cc", "libcef/browser/browser_guest_util.h", "libcef/browser/browser_host_base.cc", "libcef/browser/browser_host_base.h", "libcef/browser/browser_host_create.cc", "libcef/browser/browser_info.cc", "libcef/browser/browser_info.h", "libcef/browser/browser_info_manager.cc", "libcef/browser/browser_info_manager.h", "libcef/browser/browser_manager.cc", "libcef/browser/browser_manager.h", "libcef/browser/browser_message_loop.cc", "libcef/browser/browser_message_loop.h", "libcef/browser/browser_platform_delegate.cc", "libcef/browser/browser_platform_delegate.h", "libcef/browser/browser_platform_delegate_create.cc", "libcef/browser/certificate_query.cc", "libcef/browser/certificate_query.h", "libcef/browser/chrome/browser_delegate.h", "libcef/browser/chrome/browser_platform_delegate_chrome.cc", "libcef/browser/chrome/browser_platform_delegate_chrome.h", "libcef/browser/chrome/chrome_browser_context.cc", "libcef/browser/chrome/chrome_browser_context.h", "libcef/browser/chrome/chrome_browser_delegate.cc", "libcef/browser/chrome/chrome_browser_delegate.h", "libcef/browser/chrome/chrome_browser_host_impl.cc", "libcef/browser/chrome/chrome_browser_host_impl.h", "libcef/browser/chrome/chrome_browser_main_extra_parts_cef.cc", "libcef/browser/chrome/chrome_browser_main_extra_parts_cef.h", "libcef/browser/chrome/chrome_content_browser_client_cef.cc", "libcef/browser/chrome/chrome_content_browser_client_cef.h", "libcef/browser/chrome/chrome_context_menu_handler.cc", "libcef/browser/chrome/chrome_context_menu_handler.h", "libcef/browser/chrome/chrome_startup_browser_creator.cc", "libcef/browser/chrome/chrome_startup_browser_creator.h", "libcef/browser/chrome/chrome_web_contents_view_delegate_cef.h", "libcef/browser/chrome/extensions/chrome_extension_util.cc", "libcef/browser/chrome/extensions/chrome_extension_util.h", "libcef/browser/chrome/extensions/chrome_mime_handler_view_guest_delegate_cef.cc", "libcef/browser/chrome/extensions/chrome_mime_handler_view_guest_delegate_cef.h", "libcef/browser/chrome/views/browser_platform_delegate_chrome_child_window.cc", "libcef/browser/chrome/views/browser_platform_delegate_chrome_child_window.h", "libcef/browser/chrome/views/browser_platform_delegate_chrome_views.cc", "libcef/browser/chrome/views/browser_platform_delegate_chrome_views.h", "libcef/browser/chrome/views/chrome_browser_frame.cc", "libcef/browser/chrome/views/chrome_browser_frame.h", "libcef/browser/chrome/views/chrome_browser_view.cc", "libcef/browser/chrome/views/chrome_browser_view.h", "libcef/browser/chrome/views/chrome_child_window.cc", "libcef/browser/chrome/views/chrome_child_window.h", "libcef/browser/chrome/views/chrome_views_util.cc", "libcef/browser/chrome/views/chrome_views_util.h", "libcef/browser/chrome/views/toolbar_view_impl.cc", "libcef/browser/chrome/views/toolbar_view_impl.h", "libcef/browser/chrome/views/toolbar_view_view.cc", "libcef/browser/chrome/views/toolbar_view_view.h", "libcef/browser/context.cc", "libcef/browser/context.h", "libcef/browser/context_menu_params_impl.cc", "libcef/browser/context_menu_params_impl.h", "libcef/browser/devtools/devtools_controller.cc", "libcef/browser/devtools/devtools_controller.h", "libcef/browser/devtools/devtools_protocol_manager.cc", "libcef/browser/devtools/devtools_protocol_manager.h", "libcef/browser/devtools/devtools_window_runner.cc", "libcef/browser/devtools/devtools_window_runner.h", "libcef/browser/download_item_impl.cc", "libcef/browser/download_item_impl.h", "libcef/browser/download_manager_delegate.cc", "libcef/browser/download_manager_delegate.h", "libcef/browser/download_manager_delegate_impl.cc", "libcef/browser/download_manager_delegate_impl.h", "libcef/browser/file_dialog_manager.cc", "libcef/browser/file_dialog_manager.h", "libcef/browser/file_dialog_runner.cc", "libcef/browser/file_dialog_runner.h", "libcef/browser/frame_host_impl.cc", "libcef/browser/frame_host_impl.h", "libcef/browser/frame_service_base.h", "libcef/browser/global_preference_manager_impl.cc", "libcef/browser/global_preference_manager_impl.h", "libcef/browser/hang_monitor.cc", "libcef/browser/hang_monitor.h", "libcef/browser/image_impl.cc", "libcef/browser/image_impl.h", "libcef/browser/iothread_state.cc", "libcef/browser/iothread_state.h", "libcef/browser/javascript_dialog_runner.h", "libcef/browser/javascript_dialog_manager.cc", "libcef/browser/javascript_dialog_manager.h", "libcef/browser/main_runner.cc", "libcef/browser/main_runner.h", "libcef/browser/media_access_query.cc", "libcef/browser/media_access_query.h", "libcef/browser/media_router/media_route_impl.cc", "libcef/browser/media_router/media_route_impl.h", "libcef/browser/media_router/media_router_impl.cc", "libcef/browser/media_router/media_router_impl.h", "libcef/browser/media_router/media_router_manager.cc", "libcef/browser/media_router/media_router_manager.h", "libcef/browser/media_router/media_sink_impl.cc", "libcef/browser/media_router/media_sink_impl.h", "libcef/browser/media_router/media_source_impl.cc", "libcef/browser/media_router/media_source_impl.h", "libcef/browser/media_stream_registrar.cc", "libcef/browser/media_stream_registrar.h", "libcef/browser/menu_manager.cc", "libcef/browser/menu_manager.h", "libcef/browser/menu_model_impl.cc", "libcef/browser/menu_model_impl.h", "libcef/browser/menu_runner.h", "libcef/browser/native/browser_platform_delegate_native.cc", "libcef/browser/native/browser_platform_delegate_native.h", "libcef/browser/native/cursor_util.h", "libcef/browser/native/cursor_util.cc", "libcef/browser/native/window_delegate_view.cc", "libcef/browser/native/window_delegate_view.h", "libcef/browser/navigation_entry_impl.cc", "libcef/browser/navigation_entry_impl.h", "libcef/browser/net/crlset_file_util_impl.cc", "libcef/browser/net/throttle_handler.cc", "libcef/browser/net/throttle_handler.h", "libcef/browser/net_service/browser_urlrequest_impl.cc", "libcef/browser/net_service/browser_urlrequest_impl.h", "libcef/browser/net_service/cookie_helper.cc", "libcef/browser/net_service/cookie_helper.h", "libcef/browser/net_service/cookie_manager_impl.cc", "libcef/browser/net_service/cookie_manager_impl.h", "libcef/browser/net_service/login_delegate.cc", "libcef/browser/net_service/login_delegate.h", "libcef/browser/net_service/proxy_url_loader_factory.cc", "libcef/browser/net_service/proxy_url_loader_factory.h", "libcef/browser/net_service/resource_handler_wrapper.cc", "libcef/browser/net_service/resource_handler_wrapper.h", "libcef/browser/net_service/resource_request_handler_wrapper.cc", "libcef/browser/net_service/resource_request_handler_wrapper.h", "libcef/browser/net_service/response_filter_wrapper.cc", "libcef/browser/net_service/response_filter_wrapper.h", "libcef/browser/net_service/stream_reader_url_loader.cc", "libcef/browser/net_service/stream_reader_url_loader.h", "libcef/browser/net_service/url_loader_factory_getter.cc", "libcef/browser/net_service/url_loader_factory_getter.h", "libcef/browser/origin_whitelist_impl.cc", "libcef/browser/origin_whitelist_impl.h", "libcef/browser/osr/browser_platform_delegate_osr.cc", "libcef/browser/osr/browser_platform_delegate_osr.h", "libcef/browser/osr/host_display_client_osr.cc", "libcef/browser/osr/host_display_client_osr.h", "libcef/browser/osr/motion_event_osr.cc", "libcef/browser/osr/motion_event_osr.h", "libcef/browser/osr/osr_accessibility_util.cc", "libcef/browser/osr/osr_accessibility_util.h", "libcef/browser/osr/osr_util.cc", "libcef/browser/osr/osr_util.h", "libcef/browser/osr/render_widget_host_view_osr.cc", "libcef/browser/osr/render_widget_host_view_osr.h", "libcef/browser/osr/synthetic_gesture_target_osr.cc", "libcef/browser/osr/synthetic_gesture_target_osr.h", "libcef/browser/osr/touch_handle_drawable_osr.cc", "libcef/browser/osr/touch_handle_drawable_osr.h", "libcef/browser/osr/touch_selection_controller_client_osr.cc", "libcef/browser/osr/touch_selection_controller_client_osr.h", "libcef/browser/osr/video_consumer_osr.cc", "libcef/browser/osr/video_consumer_osr.h", "libcef/browser/osr/web_contents_view_osr.cc", "libcef/browser/osr/web_contents_view_osr.h", "libcef/browser/path_util_impl.cc", "libcef/browser/permission_prompt.cc", "libcef/browser/permission_prompt.h", "libcef/browser/prefs/browser_prefs.cc", "libcef/browser/prefs/browser_prefs.h", "libcef/browser/prefs/pref_helper.cc", "libcef/browser/prefs/pref_helper.h", "libcef/browser/prefs/pref_registrar.cc", "libcef/browser/prefs/pref_registrar.h", "libcef/browser/prefs/renderer_prefs.cc", "libcef/browser/prefs/renderer_prefs.h", "libcef/browser/print_settings_impl.cc", "libcef/browser/print_settings_impl.h", "libcef/browser/printing/print_util.cc", "libcef/browser/printing/print_util.h", "libcef/browser/process_util_impl.cc", "libcef/browser/request_context_handler_map.cc", "libcef/browser/request_context_handler_map.h", "libcef/browser/request_context_impl.cc", "libcef/browser/request_context_impl.h", "libcef/browser/scheme_impl.cc", "libcef/browser/server_impl.cc", "libcef/browser/server_impl.h", "libcef/browser/simple_menu_model_impl.cc", "libcef/browser/simple_menu_model_impl.h", "libcef/browser/ssl_info_impl.cc", "libcef/browser/ssl_info_impl.h", "libcef/browser/ssl_status_impl.cc", "libcef/browser/ssl_status_impl.h", "libcef/browser/stream_impl.cc", "libcef/browser/stream_impl.h", "libcef/browser/task_manager_impl.cc", "libcef/browser/task_manager_impl.h", "libcef/browser/trace_impl.cc", "libcef/browser/trace_subscriber.cc", "libcef/browser/trace_subscriber.h", "libcef/browser/thread_util.h", "libcef/browser/ui_thread.cc", "libcef/browser/ui_thread.h", "libcef/browser/views/basic_label_button_impl.cc", "libcef/browser/views/basic_label_button_impl.h", "libcef/browser/views/basic_label_button_view.cc", "libcef/browser/views/basic_label_button_view.h", "libcef/browser/views/basic_panel_impl.cc", "libcef/browser/views/basic_panel_impl.h", "libcef/browser/views/basic_panel_view.cc", "libcef/browser/views/basic_panel_view.h", "libcef/browser/views/box_layout_impl.cc", "libcef/browser/views/box_layout_impl.h", "libcef/browser/views/browser_platform_delegate_views.cc", "libcef/browser/views/browser_platform_delegate_views.h", "libcef/browser/views/browser_view_impl.cc", "libcef/browser/views/browser_view_impl.h", "libcef/browser/views/browser_view_view.cc", "libcef/browser/views/browser_view_view.h", "libcef/browser/views/button_impl.h", "libcef/browser/views/button_view.h", "libcef/browser/views/color_provider_tracker.cc", "libcef/browser/views/color_provider_tracker.h", "libcef/browser/views/display_impl.cc", "libcef/browser/views/display_impl.h", "libcef/browser/views/fill_layout_impl.cc", "libcef/browser/views/fill_layout_impl.h", "libcef/browser/views/label_button_impl.h", "libcef/browser/views/label_button_view.h", "libcef/browser/views/layout_impl.h", "libcef/browser/views/layout_adapter.cc", "libcef/browser/views/layout_adapter.h", "libcef/browser/views/layout_util.cc", "libcef/browser/views/layout_util.h", "libcef/browser/views/menu_button_impl.cc", "libcef/browser/views/menu_button_impl.h", "libcef/browser/views/menu_button_view.cc", "libcef/browser/views/menu_button_view.h", "libcef/browser/views/menu_runner_views.cc", "libcef/browser/views/menu_runner_views.h", "libcef/browser/views/overlay_view_host.cc", "libcef/browser/views/overlay_view_host.h", "libcef/browser/views/panel_impl.h", "libcef/browser/views/panel_view.h", "libcef/browser/views/scroll_view_impl.cc", "libcef/browser/views/scroll_view_impl.h", "libcef/browser/views/scroll_view_view.cc", "libcef/browser/views/scroll_view_view.h", "libcef/browser/views/textfield_impl.cc", "libcef/browser/views/textfield_impl.h", "libcef/browser/views/textfield_view.cc", "libcef/browser/views/textfield_view.h", "libcef/browser/views/view_adapter.cc", "libcef/browser/views/view_adapter.h", "libcef/browser/views/view_impl.h", "libcef/browser/views/view_util.cc", "libcef/browser/views/view_util.h", "libcef/browser/views/view_view.h", "libcef/browser/views/widget.cc", "libcef/browser/views/widget.h", "libcef/browser/views/widget_destruction_observer.h", "libcef/browser/views/widget_impl.cc", "libcef/browser/views/widget_impl.h", "libcef/browser/views/window_impl.cc", "libcef/browser/views/window_impl.h", "libcef/browser/views/window_view.cc", "libcef/browser/views/window_view.h", "libcef/browser/x509_certificate_impl.cc", "libcef/browser/x509_certificate_impl.h", "libcef/browser/x509_cert_principal_impl.cc", "libcef/browser/x509_cert_principal_impl.h", "libcef/browser/xml_reader_impl.cc", "libcef/browser/xml_reader_impl.h", "libcef/browser/zip_reader_impl.cc", "libcef/browser/zip_reader_impl.h", "libcef/common/app_manager.cc", "libcef/common/app_manager.h", "libcef/common/base_impl.cc", "libcef/common/cef_switches.cc", "libcef/common/cef_switches.h", "libcef/common/chrome/chrome_content_client_cef.cc", "libcef/common/chrome/chrome_content_client_cef.h", "libcef/common/chrome/chrome_main_delegate_cef.cc", "libcef/common/chrome/chrome_main_delegate_cef.h", "libcef/common/command_line_impl.cc", "libcef/common/command_line_impl.h", "libcef/common/crash_reporter_client.cc", "libcef/common/crash_reporter_client.h", "libcef/common/crash_reporting.cc", "libcef/common/crash_reporting.h", "libcef/common/drag_data_impl.cc", "libcef/common/drag_data_impl.h", "libcef/common/file_util_impl.cc", "libcef/common/frame_util.cc", "libcef/common/frame_util.h", "libcef/common/i18n_util_impl.cc", "libcef/common/json_impl.cc", "libcef/common/net/http_header_utils.cc", "libcef/common/net/http_header_utils.h", "libcef/common/net/scheme_registration.cc", "libcef/common/net/scheme_registration.h", "libcef/common/net/url_util.cc", "libcef/common/net/url_util.h", "libcef/common/net_service/net_service_util.cc", "libcef/common/net_service/net_service_util.h", "libcef/common/parser_impl.cc", "libcef/common/process_message_impl.cc", "libcef/common/process_message_impl.h", "libcef/common/process_message_smr_impl.cc", "libcef/common/process_message_smr_impl.h", "libcef/common/request_impl.cc", "libcef/common/request_impl.h", "libcef/common/resource_bundle_delegate.cc", "libcef/common/resource_bundle_delegate.h", "libcef/common/resource_bundle_impl.cc", "libcef/common/resource_bundle_impl.h", "libcef/common/resource_util.cc", "libcef/common/resource_util.h", "libcef/common/response_impl.cc", "libcef/common/response_impl.h", "libcef/common/scheme_registrar_impl.cc", "libcef/common/scheme_registrar_impl.h", "libcef/common/string_list_impl.cc", "libcef/common/string_map_impl.cc", "libcef/common/string_multimap_impl.cc", "libcef/common/string_types_impl.cc", "libcef/common/string_util.cc", "libcef/common/string_util.h", "libcef/common/task_impl.cc", "libcef/common/task_runner_impl.cc", "libcef/common/task_runner_impl.h", "libcef/common/task_runner_manager.cc", "libcef/common/task_runner_manager.h", "libcef/common/thread_impl.cc", "libcef/common/thread_impl.h", "libcef/common/time_impl.cc", "libcef/common/time_util.h", "libcef/common/tracker.cc", "libcef/common/tracker.h", "libcef/common/urlrequest_impl.cc", "libcef/common/value_base.cc", "libcef/common/value_base.h", "libcef/common/values_impl.cc", "libcef/common/values_impl.h", "libcef/common/waitable_event_impl.cc", "libcef/common/waitable_event_impl.h", "libcef/renderer/browser_impl.cc", "libcef/renderer/browser_impl.h", "libcef/renderer/chrome/chrome_content_renderer_client_cef.cc", "libcef/renderer/chrome/chrome_content_renderer_client_cef.h", "libcef/renderer/dom_document_impl.cc", "libcef/renderer/dom_document_impl.h", "libcef/renderer/dom_node_impl.cc", "libcef/renderer/dom_node_impl.h", "libcef/renderer/frame_impl.cc", "libcef/renderer/frame_impl.h", "libcef/renderer/render_frame_observer.cc", "libcef/renderer/render_frame_observer.h", "libcef/renderer/render_frame_util.cc", "libcef/renderer/render_frame_util.h", "libcef/renderer/render_manager.cc", "libcef/renderer/render_manager.h", "libcef/renderer/thread_util.h", "libcef/renderer/v8_impl.cc", "libcef/renderer/v8_impl.h", # For Chrome runtime support. "//chrome/app/chrome_main_delegate.cc", "//chrome/app/chrome_main_delegate.h", ] configs += [ "libcef/features:config", "//build/config:precompiled_headers", ] public_configs = [ "libcef/features:config", ] include_dirs = [ # Crashpad code uses paths relative to this directory. "//third_party/crashpad/crashpad", ] public_deps = [ # Bring in feature flag defines. "//cef/libcef/features", # Support relative include paths. "//base", "//third_party/abseil-cpp:absl", ] deps = [ ":cef_make_headers", "libcef/common/mojom", ":libcef_static_unittested", # Normal build dependencies. Should be sorted alphabetically. "//base:base_static", "//cc", "//chrome:dependencies", "//chrome:packed_resources", "//chrome:resources", "//chrome:strings", "//chrome/common:buildflags", "//chrome/services/printing:lib", "//components/cdm/renderer", "//components/certificate_transparency", "//components/component_updater", "//components/content_settings/core/browser", "//components/content_settings/core/common", "//components/crx_file", "//components/google/core/common", "//components/keyed_service/content:content", "//components/keyed_service/core:core", "//components/media_router/common/mojom:media_router", "//components/navigation_interception", "//components/network_session_configurator/common", "//components/pdf/browser", "//components/pdf/renderer", "//components/plugins/renderer", "//components/pref_registry", "//components/printing/browser", "//components/printing/common", "//components/printing/renderer", "//components/proxy_config", "//components/services/print_compositor/public/cpp", "//components/services/print_compositor/public/mojom", "//components/update_client", "//components/url_formatter", "//components/user_prefs", "//components/version_info", "//components/visitedlink/browser", "//components/visitedlink/common", "//components/visitedlink/renderer", "//components/viz/service", "//components/web_cache/renderer", "//content/public/app", "//content/public/browser", "//content/public/child", "//content/public/common", "//content/public/gpu", "//content/public/renderer", "//content/public/utility", "//crypto", "//device/base", "//extensions/browser", "//extensions/buildflags", "//extensions/common/api", "//extensions/common:core_api_provider", "//extensions/renderer", "//gpu", "//ipc", "//media", "//net", "//pdf", "//ppapi/buildflags", "//printing/buildflags", "//services/network:network_service", "//services/network/public/cpp", "//services/service_manager/public/cpp", "//skia", "//storage/browser", "//third_party/blink/public:blink", "//third_party/brotli:dec", "//third_party/cld_3/src/src:cld_3", "//third_party/crashpad/crashpad/handler", "//third_party/hunspell", "//third_party/leveldatabase", "//third_party/libxml:libxml", "//third_party/widevine/cdm:headers", "//third_party/widevine/cdm", "//third_party/icu", "//third_party/zlib:minizip", "//ui/base", "//ui/base/ime", "//ui/events", "//ui/events:events_base", "//ui/gfx", "//ui/gfx/geometry", "//ui/gfx/ipc", "//ui/gfx/ipc/geometry", "//ui/gfx/ipc/skia", "//ui/gl", "//ui/strings", "//ui/views", "//ui/views/controls/webview", "//url", "//v8", ] if (is_win) { sources += includes_win + [ "libcef/browser/native/browser_platform_delegate_native_win.cc", "libcef/browser/native/browser_platform_delegate_native_win.h", "libcef/browser/osr/browser_platform_delegate_osr_win.cc", "libcef/browser/osr/browser_platform_delegate_osr_win.h", ] deps += [ "//chrome/install_static:secondary_module", "//chrome/chrome_elf", ] if (is_component_build) { deps += [ "//content:sandbox_helper_win" ] } data_deps = [ "//chrome/elevation_service", ] } if (is_linux) { sources += includes_linux + [ "libcef/browser/native/browser_platform_delegate_native_linux.cc", "libcef/browser/native/browser_platform_delegate_native_linux.h", "libcef/browser/osr/browser_platform_delegate_osr_linux.cc", "libcef/browser/osr/browser_platform_delegate_osr_linux.h", "libcef/browser/printing/print_dialog_linux.cc", "libcef/browser/printing/print_dialog_linux.h", "libcef/common/util_linux.h", "libcef/common/util_linux.cc", ] deps += [ "//build/config/freetype", "//third_party/fontconfig", ] if (ozone_platform_x11) { sources += [ "libcef/browser/native/window_x11.cc", "libcef/browser/native/window_x11.h", ] } else { deps += [ "//third_party/angle:libEGL" ] } if (use_dbus) { deps += [ "//dbus" ] defines = [ "USE_DBUS" ] } } if (is_mac) { sources += includes_mac + [ "libcef/browser/chrome/chrome_content_browser_client_cef_mac.mm", "libcef/browser/chrome/chrome_web_contents_view_delegate_cef_mac.mm", "libcef/browser/native/browser_platform_delegate_native_mac.h", "libcef/browser/native/browser_platform_delegate_native_mac.mm", "libcef/browser/native/cursor_util_mac.mm", "libcef/browser/native/javascript_dialog_runner_mac.h", "libcef/browser/native/javascript_dialog_runner_mac.mm", "libcef/browser/native/menu_runner_mac.h", "libcef/browser/native/menu_runner_mac.mm", "libcef/browser/osr/browser_platform_delegate_osr_mac.h", "libcef/browser/osr/browser_platform_delegate_osr_mac.mm", "libcef/browser/views/native_widget_mac.h", "libcef/browser/views/native_widget_mac.mm", "libcef/browser/views/ns_window.h", "libcef/browser/views/ns_window.mm", "libcef/browser/views/view_util_mac.mm", "libcef/common/util_mac.h", "libcef/common/util_mac.mm", # For Chrome runtime support. "//chrome/app/chrome_main_mac.h", "//chrome/app/chrome_main_mac.mm", ] } else { sources += [ "libcef/browser/chrome/chrome_web_contents_view_delegate_cef.cc", ] } if (ozone_platform_x11) { deps += [ "//ui/events/devices/x11" ] } if (v8_use_external_startup_data && use_v8_context_snapshot) { deps += [ "//tools/v8_context_snapshot" ] } if (use_aura) { sources += [ "libcef/browser/native/browser_platform_delegate_native_aura.cc", "libcef/browser/native/browser_platform_delegate_native_aura.h", "libcef/browser/native/cursor_util_aura.cc", "libcef/browser/native/menu_runner_views_aura.cc", "libcef/browser/native/menu_runner_views_aura.h", "libcef/browser/views/view_util_aura.cc", ] deps += [ "//ui/aura", "//ui/wm", "//ui/wm/public", ] } if (enable_cdm_host_verification) { sources += [ "libcef/common/cdm_host_file_path.cc", "libcef/common/cdm_host_file_path.h", ] } } # # libcef_dll_wrapper static targets. # # Configuration that will be applied to all targets that build autogen files. config("libcef_autogen_config") { if (is_clang) { cflags = [ # Disable clang warnings related to CEF's translation layer templates. "-Wno-undefined-var-template", ] } } # Configuration that supports #include paths relative to src/cef/ for CEF # client-side code. CEF library-side code (Chromium code and cef/libcef/ # directory) uses #include paths relative to src/. See libcef/features:config # for CEF library-side configuration. config("libcef_includes_config") { include_dirs = [ # cef/include/ directory and CEF client-side code use #includes relative to # the cef/ directory. ".", # CEF generated header files that also need to be discoverable. # These #includes from client-side code will not be prefixed with cef/. # They will be copied to the include/ directory in the binary distribution. "$root_out_dir/includes/cef", ] } # Configuration that will be applied to all targets that depend on # libcef_dll_wrapper. config("libcef_dll_wrapper_config") { configs = [ ":libcef_autogen_config", ":libcef_includes_config", ] if (is_win) { if (current_cpu == "x86") { # Set the initial stack size to 0.5MiB, instead of the 1.5MiB minimum # needed by CEF's main thread. This saves significant memory on threads # (like those in the Windows thread pool, and others) whose stack size we # can only control through this setting. The main thread (in 32-bit builds # only) uses fibers to switch to a 4MiB stack at runtime via # CefRunWinMainWithPreferredStackSize(). ldflags = [ "/STACK:0x80000" ] } else { # Increase the initial stack size to 8MiB from the default 1MiB. ldflags = [ "/STACK:0x800000" ] } } } # libcef_dll_wrapper target. static_library("libcef_dll_wrapper") { sources = includes_common + gypi_paths.autogen_cpp_includes + gypi_paths2.includes_capi + gypi_paths.autogen_capi_includes + gypi_paths2.includes_wrapper + gypi_paths2.libcef_dll_wrapper_sources_base + gypi_paths2.libcef_dll_wrapper_sources_common + gypi_paths.autogen_client_side if (is_mac) { sources += gypi_paths2.libcef_dll_wrapper_sources_mac } defines = [ "WRAPPING_CEF_SHARED" ] configs += [ ":libcef_dll_wrapper_config" ] public_configs = [ ":libcef_dll_wrapper_config" ] deps = [ ":cef_make_headers" ] } # # cef_sandbox target. # if (is_win) { static_library("cef_sandbox") { sources = [ "libcef_dll/sandbox/sandbox_win.cc" ] configs += [ ":libcef_includes_config" ] deps = [ ":make_config_header", "libcef/features", "//sandbox", ] } } if (is_mac) { static_library("cef_sandbox") { sources = [ "libcef_dll/sandbox/sandbox_mac.mm" ] configs += [ ":libcef_includes_config" ] deps = [ ":make_config_header", "//build/config:executable_deps", "//sandbox/mac:seatbelt", ] } } # # Resource grit/pack targets. # # Included in locales/*.pak via //chrome/chrome_repack_locales.gni. grit("cef_strings") { source = "libcef/resources/cef_strings.grd" outputs = [ "grit/cef_strings.h", ] all_locales = platform_pak_locales + [ "fake-bidi" ] foreach(locale, all_locales) { outputs += [ "cef_strings_${locale}.pak" ] } } # Included in resources.pak via //chrome/chrome_paks.gni. grit("cef_resources") { source = "libcef/resources/cef_resources.grd" outputs = [ "grit/cef_resources.h", "cef_resources.pak", ] grit_flags = [ "-E", "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir), ] } # Helper for generating pack header files. template("make_pack_header") { assert(defined(invoker.header)) assert(defined(invoker.inputs)) action("make_pack_header_${target_name}") { script = "tools/make_pack_header.py" inputs = invoker.inputs outputs = [ invoker.header ] args = rebase_path(outputs, root_build_dir) + rebase_path(inputs, root_build_dir) if (defined(invoker.deps)) { deps = invoker.deps } } } # Generate cef_pack_resources.h. make_pack_header("resources") { header = "$root_out_dir/includes/cef/include/cef_pack_resources.h" inputs = [ "$root_gen_dir/base/tracing/protos/grit/tracing_proto_resources.h", "$root_gen_dir/cef/grit/cef_resources.h", "$root_gen_dir/chrome/grit/browser_resources.h", "$root_gen_dir/chrome/grit/common_resources.h", "$root_gen_dir/chrome/grit/component_extension_resources.h", "$root_gen_dir/chrome/grit/dev_ui_browser_resources.h", "$root_gen_dir/chrome/grit/pdf_resources.h", "$root_gen_dir/chrome/grit/renderer_resources.h", "$root_gen_dir/components/grit/components_resources.h", "$root_gen_dir/components/grit/dev_ui_components_resources.h", "$root_gen_dir/content/browser/devtools/grit/devtools_resources.h", "$root_gen_dir/content/browser/tracing/grit/tracing_resources.h", "$root_gen_dir/content/browser/webrtc/resources/grit/webrtc_internals_resources.h", "$root_gen_dir/content/grit/content_resources.h", "$root_gen_dir/content/grit/gpu_resources.h", "$root_gen_dir/content/grit/histograms_resources.h", "$root_gen_dir/content/grit/process_resources.h", "$root_gen_dir/content/grit/service_worker_resources.h", "$root_gen_dir/extensions/grit/extensions_browser_resources.h", "$root_gen_dir/extensions/grit/extensions_renderer_resources.h", "$root_gen_dir/extensions/grit/extensions_resources.h", "$root_gen_dir/mojo/public/js/grit/mojo_bindings_resources.h", "$root_gen_dir/net/grit/net_resources.h", "$root_gen_dir/third_party/blink/public/resources/grit/blink_image_resources.h", "$root_gen_dir/third_party/blink/public/resources/grit/blink_resources.h", "$root_gen_dir/ui/resources/grit/ui_resources.h", "$root_gen_dir/ui/resources/grit/webui_resources.h", "$root_gen_dir/ui/views/resources/grit/views_resources.h", ] deps = [ ":cef_resources", "//base/tracing/protos:chrome_track_event_resources", "//chrome/browser:dev_ui_browser_resources", "//chrome/browser:resources", "//chrome/browser/resources:component_extension_resources", "//chrome/browser/resources/pdf:resources", "//chrome/common:resources", "//chrome/renderer:resources", "//components/resources:components_resources", "//components/resources:dev_ui_components_resources", "//content/browser/devtools:devtools_resources", "//content/browser/resources/gpu:resources", "//content/browser/resources/histograms:resources", "//content/browser/resources/process:resources", "//content/browser/resources/service_worker:resources", "//content/browser/tracing:resources", "//content/browser/webrtc/resources", "//content:content_resources", "//extensions:extensions_browser_resources", "//extensions:extensions_renderer_resources", "//extensions:extensions_resources_grd", "//mojo/public/js:resources", "//net:net_resources", "//third_party/blink/public:image_resources", "//third_party/blink/public:resources", "//ui/resources:ui_resources_grd", "//ui/resources:webui_resources_grd", "//ui/views/resources:resources_grd", ] } # Generate cef_pack_strings.h. make_pack_header("strings") { header = "$root_out_dir/includes/cef/include/cef_pack_strings.h" inputs = [ "$root_gen_dir/cef/grit/cef_strings.h", "$root_gen_dir/chrome/grit/branded_strings.h", "$root_gen_dir/chrome/grit/generated_resources.h", "$root_gen_dir/chrome/grit/locale_settings.h", "$root_gen_dir/chrome/grit/platform_locale_settings.h", "$root_gen_dir/components/omnibox/resources/grit/omnibox_pedal_synonyms.h", "$root_gen_dir/components/strings/grit/components_branded_strings.h", "$root_gen_dir/components/strings/grit/components_strings.h", "$root_gen_dir/extensions/strings/grit/extensions_strings.h", "$root_gen_dir/services/strings/grit/services_strings.h", "$root_gen_dir/third_party/blink/public/strings/grit/blink_strings.h", "$root_gen_dir/third_party/blink/public/strings/grit/permission_element_strings.h", "$root_gen_dir/ui/strings/grit/app_locale_settings.h", "$root_gen_dir/ui/strings/grit/auto_image_annotation_strings.h", "$root_gen_dir/ui/strings/grit/ui_strings.h", ] deps = [ ":cef_strings", "//chrome/app:branded_strings", "//chrome/app:generated_resources", "//chrome/app/resources:locale_settings", "//chrome/app/resources:platform_locale_settings", "//components/omnibox/resources:omnibox_pedal_synonyms", "//components/strings:components_branded_strings", "//components/strings:components_locale_settings", "//components/strings:components_strings", "//extensions/strings", "//services/strings", "//third_party/blink/public/strings", "//third_party/blink/public/strings:permission_element_strings", "//ui/strings:app_locale_settings", "//ui/strings:auto_image_annotation_strings", "//ui/strings:ui_strings", ] } # Generate cef_command_ids.h. make_pack_header("command_ids") { header = "$root_out_dir/includes/cef/include/cef_command_ids.h" inputs = [ "//chrome/app/chrome_command_ids.h", ] } # Generate cef_api_hash.h. action("make_api_hash_header") { script = "tools/make_api_hash_header.py" # List of all C API files that will be checked for changes by cef_api_hash.py. inputs = gypi_paths2.includes_common_capi + gypi_paths2.includes_linux_capi + gypi_paths2.includes_mac_capi + gypi_paths2.includes_win_capi + gypi_paths2.includes_capi + gypi_paths.autogen_capi_includes include_dir = [ "include" ] outputs = [ "$root_out_dir/includes/cef/include/cef_api_hash.h" ] args = rebase_path(outputs + include_dir, root_build_dir) } # This no-op action lists args.gn as an output, allowing it to be referenced as # an input (trigger) for other actions. Otherwise, GN will complain that no # target generates the args.gn file because it’s below the $root_out_dir. action("args_gn_source") { script = "//build/noop.py" outputs = [ "$root_out_dir/args.gn" ] } # Generate cef_config.h. action("make_config_header") { script = "tools/make_config_header.py" deps = [ ":args_gn_source" ] inputs = [ "$root_out_dir/args.gn" ] outputs = [ "$root_out_dir/includes/cef/include/cef_config.h" ] args = rebase_path(outputs + inputs, root_build_dir) } # Generate cef_color_ids.h. action("make_colorids_header") { script = "tools/make_colorids_header.py" inputs = [ "//ui/color/color_id.h", "//components/color/color_id.h", "//chrome/browser/ui/color/chrome_color_id.h", ] outputs = [ "$root_out_dir/includes/cef/include/cef_color_ids.h" ] args = rebase_path(outputs + inputs, root_build_dir) } # Generate pack files and associated CEF header files. group("cef_make_headers") { deps = [ ":make_pack_header_resources", ":make_pack_header_strings", ":make_pack_header_command_ids", ":make_api_hash_header", ":make_config_header", ":make_colorids_header", ] } # # libcef dll/framework target. # if (is_mac) { cef_framework_name = "Chromium Embedded Framework" tweak_info_plist("cef_framework_plist") { info_plist = "libcef/resources/framework-Info.plist" args = [ "--breakpad=0", "--keystone=0", "--scm=1", "--version", cef_plist_version, "--branding", cef_framework_name, ] } bundle_data("cef_framework_resources") { sources = [] public_deps = [] if (icu_use_data_file) { sources += [ "$root_out_dir/icudtl.dat" ] public_deps += [ "//third_party/icu:icudata", ] } sources += [ "//ui/gl/resources/angle-metal/gpu_shader_cache.bin" ] if (v8_use_external_startup_data) { sources += [ "$root_out_dir/snapshot_blob.bin", ] public_deps += [ "//v8" ] if (use_v8_context_snapshot) { sources += [ "$root_out_dir/$v8_context_snapshot_filename" ] public_deps += [ "//tools/v8_context_snapshot" ] } } outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}", ] } # Add the ANGLE .dylibs in the MODULE_DIR of the Framework app bundle. bundle_data("cef_framework_angle_binaries") { sources = [ "$root_out_dir/egl_intermediates/libEGL.dylib", "$root_out_dir/egl_intermediates/libGLESv2.dylib", ] outputs = [ "{{bundle_contents_dir}}/Libraries/{{source_file_part}}", ] public_deps = [ "//ui/gl:angle_library_copy", ] } # Add the SwiftShader .dylibs in the MODULE_DIR of the Framework app bundle. bundle_data("cef_framework_swiftshader_binaries") { sources = [ "$root_out_dir/vk_intermediates/libvk_swiftshader.dylib", "$root_out_dir/vk_intermediates/vk_swiftshader_icd.json", ] outputs = [ "{{bundle_contents_dir}}/Libraries/{{source_file_part}}", ] public_deps = [ "//ui/gl:swiftshader_vk_library_copy", ] } mac_framework_bundle("cef_framework") { # Necessary because the libcef_test_support target is testonly. testonly = true output_name = cef_framework_name framework_version = "A" framework_contents = [ "Libraries", "Resources", ] sources = includes_common + includes_mac + gypi_paths.autogen_cpp_includes + gypi_paths2.includes_capi + gypi_paths.autogen_capi_includes + gypi_paths2.libcef_sources_common + gypi_paths.autogen_library_side deps = [ ":cef_framework_angle_binaries", ":cef_framework_resources", ":cef_framework_swiftshader_binaries", ":libcef_static", ":libcef_test_support", ] configs += [ ":libcef_autogen_config", ] # We don't link the framework so just use the path from the main executable. ldflags = [ "-Wl,-install_name,@executable_path/../Frameworks/$output_name.framework/$output_name", "-compatibility_version", cef_dylib_version, "-current_version", cef_dylib_version, ] if (is_component_build) { # Set up the rpath for the framework so that it can find dylibs in the # root output directory. The framework is at # $app_name.app/Contents/Frameworks/$output_name.framework/Versions/A/$output_name # so use loader_path to go back to the root output directory. ldflags += [ "-rpath", "@loader_path/../../../../../..", ] } info_plist_target = ":cef_framework_plist" } } else { config("pdb_larger_than_4gb") { if (is_win && symbol_level == 2) { # These binaries create PDBs larger than 4 GiB. Increasing the PDB page # size allows larger PDBs, but not all tools can handle such large PDBs # yet. ldflags = [ "/pdbpagesize:8192" ] } } shared_library("libcef") { # Necessary because the libcef_test_support target is testonly. testonly = true sources = includes_common + gypi_paths.autogen_cpp_includes + gypi_paths2.includes_capi + gypi_paths.autogen_capi_includes + gypi_paths2.libcef_sources_common + gypi_paths.autogen_library_side deps = [ ":libcef_static", ":libcef_test_support", ] configs += [ ":libcef_autogen_config", ":pdb_larger_than_4gb", ] if (is_win) { sources += includes_win + [ "libcef_dll/libcef_dll.rc", ] deps += [ # Bring in ui_unscaled_resources.rc which contains custom cursors. # TODO(cef): Remove this once custom cursors can be loaded via # ResourceBundle. See crbug.com/147663. "//ui/resources:ui_unscaled_resources_grd", ] # Delay-load as many DLLs as possible for sandbox and startup perf # improvements. configs += [ "//build/config/win:delayloads" ] libs = [ "comctl32.lib", # For D3D11_DECODER_PROFILE_H264_VLD_NOFGT. "dxguid.lib", ] } if (is_linux) { # Disable 'duplicate symbol' linker errors. ldflags = [ "-Wl,--allow-multiple-definition" ] if (!is_debug && !use_partition_alloc_as_malloc) { # Only export necessary symbols from libcef.so. # Don't do this in Debug builds because it causes the resulting # application to crash. # Also need to do this for ASAN builds to work around # https://crbug.com/832808. ldflags += [ "-Wl,--version-script=" + rebase_path("//cef/libcef_dll/libcef.lst") ] } } } } # # Executable/app targets. # # Source files for TeamCity GTest integration. # See tests/gtest/teamcity/README.cef for details. source_set("gtest_teamcity") { testonly = true sources = [ "tests/gtest/teamcity/include/teamcity_gtest.h", "tests/gtest/teamcity/src/teamcity_gtest.cpp", "tests/gtest/teamcity/src/teamcity_gtest.h", "tests/gtest/teamcity/src/teamcity_messages.cpp", "tests/gtest/teamcity/src/teamcity_messages.h", ] deps = [ "//testing/gtest", ] configs += [ "libcef/features:config", "//build/config:precompiled_headers", ] } if (is_mac) { # Helper for generating the CEF app bundle. template("cef_app") { assert(defined(invoker.helper_info_plist)) assert(defined(invoker.helper_sources)) assert(defined(invoker.info_plist)) assert(defined(invoker.sources)) app_name = target_name app_helper_name = "$app_name Helper" app_testonly = defined(invoker.testonly) && invoker.testonly tweak_info_plist("${app_name}_helper_plist") { testonly = app_testonly info_plist = invoker.helper_info_plist args = [ "--breakpad=0", "--keystone=0", "--scm=0", "--version", cef_plist_version, ] } template("cef_helper_app") { mac_app_bundle(target_name) { assert(defined(invoker.helper_sources)) assert(defined(invoker.helper_name_suffix)) assert(defined(invoker.helper_bundle_id_suffix)) testonly = app_testonly output_name = app_helper_name + invoker.helper_name_suffix sources = invoker.helper_sources extra_substitutions = [ "BUNDLE_ID_SUFFIX=${invoker.helper_bundle_id_suffix}", ] deps = [ ":cef_make_headers", ":cef_sandbox", ":libcef_dll_wrapper", ] if (defined(invoker.helper_deps)) { deps += invoker.helper_deps } ldflags = [ # The helper is in $app_name.app/Contents/Frameworks/$app_name Helper.app/Contents/MacOS/ # so set rpath up to the base. "-rpath", "@executable_path/../../../../../..", ] info_plist_target = ":${app_name}_helper_plist" if (defined(invoker.helper_frameworks)) { frameworks = invoker.helper_frameworks } if (defined(invoker.helper_defines)) { defines = invoker.helper_defines } } } # From //chrome/BUILD.gn: # Helper app to display alert notifications. This is necessary as an app can # only display either banner or alert style notifications and the main app # will display banners. alert_helper_params = [ "alerts", ".alerts", " (Alerts)", ] # Merge all helper apps needed by //content and //chrome. chrome_mac_helpers = content_mac_helpers + [ alert_helper_params ] foreach(helper_params, chrome_mac_helpers) { _helper_target = helper_params[0] _helper_bundle_id = helper_params[1] _helper_suffix = helper_params[2] cef_helper_app("${app_name}_helper_app_${_helper_target}") { helper_sources = invoker.helper_sources if (defined(invoker.helper_deps)) { helper_deps = invoker.helper_deps } if (defined(invoker.helper_frameworks)) { helper_frameworks = invoker.helper_frameworks } if (defined(invoker.helper_defines)) { helper_defines = invoker.helper_defines } helper_name_suffix = _helper_suffix helper_bundle_id_suffix = _helper_bundle_id } } bundle_data("${app_name}_framework_bundle_data") { testonly = app_testonly sources = [ "$root_out_dir/$cef_framework_name.framework", ] public_deps = [ ":cef_framework", ] foreach(helper_params, chrome_mac_helpers) { sources += [ "$root_out_dir/${app_helper_name}${helper_params[2]}.app", ] public_deps += [ ":${app_name}_helper_app_${helper_params[0]}" ] } outputs = [ "{{bundle_contents_dir}}/Frameworks/{{source_file_part}}", ] } tweak_info_plist("${app_name}_plist") { testonly = app_testonly info_plist = invoker.info_plist args = [ "--scm=1", "--version", cef_plist_version, ] } mac_app_bundle(app_name) { testonly = app_testonly output_name = app_name sources = invoker.sources public_deps = [ ":libcef_dll_wrapper" ] deps = [ ":cef_make_headers", ":libcef_dll_wrapper", ":${app_name}_framework_bundle_data", ] if (defined(invoker.deps)) { deps += invoker.deps } if (defined(invoker.frameworks)) { frameworks = invoker.frameworks } if (defined(invoker.defines)) { defines = invoker.defines } info_plist_target = ":${app_name}_plist" } } # # cefclient app targets. # bundle_data("cefclient_resources_bundle_data") { sources = gypi_paths2.shared_sources_resources + gypi_paths2.cefclient_sources_resources + [ "tests/cefclient/mac/cefclient.icns", ] outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}", ] } bundle_data("cefclient_resources_bundle_data_english") { sources = [ "tests/cefclient/mac/English.lproj/InfoPlist.strings", ] outputs = [ "{{bundle_resources_dir}}/English.lproj/{{source_file_part}}", ] } mac_xib_bundle_data("cefclient_xibs") { sources = [ "tests/cefclient/mac/English.lproj/MainMenu.xib", ] output_path = "{{bundle_resources_dir}}/English.lproj" } cef_app("cefclient") { # Necessary because the cef_framework target is testonly. testonly = true helper_info_plist = "tests/cefclient/mac/helper-Info.plist.in" helper_sources = includes_common + includes_mac + gypi_paths2.includes_wrapper + gypi_paths2.includes_wrapper_mac + gypi_paths2.shared_sources_common + gypi_paths2.shared_sources_renderer + gypi_paths2.shared_sources_mac_helper + gypi_paths2.cefclient_sources_common + gypi_paths2.cefclient_sources_renderer helper_defines = [ "CEF_USE_SANDBOX", ] info_plist = "tests/cefclient/mac/Info.plist.in" sources = includes_common + includes_mac + gypi_paths2.includes_wrapper + gypi_paths2.includes_wrapper_mac + gypi_paths2.shared_sources_browser + gypi_paths2.shared_sources_common + gypi_paths2.shared_sources_mac + gypi_paths2.cefclient_sources_browser + gypi_paths2.cefclient_sources_common + gypi_paths2.cefclient_sources_mac deps = [ ":cefclient_resources_bundle_data", ":cefclient_resources_bundle_data_english", ":cefclient_xibs", ] frameworks = [ "AppKit.framework", "IOSurface.framework", "OpenGL.framework", ] defines = [ "CEF_USE_SANDBOX", ] } # # cefsimple app targets. # bundle_data("cefsimple_resources_bundle_data") { sources = [ "tests/cefsimple/mac/cefsimple.icns", ] outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}", ] } bundle_data("cefsimple_resources_bundle_data_english") { sources = [ "tests/cefsimple/mac/English.lproj/InfoPlist.strings", ] outputs = [ "{{bundle_resources_dir}}/English.lproj/{{source_file_part}}", ] } mac_xib_bundle_data("cefsimple_xibs") { sources = [ "tests/cefsimple/mac/English.lproj/MainMenu.xib", ] output_path = "{{bundle_resources_dir}}/English.lproj" } cef_app("cefsimple") { # Necessary because the cef_framework target is testonly. testonly = true helper_info_plist = "tests/cefsimple/mac/helper-Info.plist.in" helper_sources = includes_common + includes_mac + gypi_paths2.includes_wrapper + gypi_paths2.includes_wrapper_mac + gypi_paths2.cefsimple_sources_mac_helper helper_defines = [ "CEF_USE_SANDBOX", ] info_plist = "tests/cefsimple/mac/Info.plist.in" sources = includes_common + includes_mac + gypi_paths2.includes_wrapper + gypi_paths2.includes_wrapper_mac + gypi_paths2.cefsimple_sources_common + gypi_paths2.cefsimple_sources_mac deps = [ ":cefsimple_resources_bundle_data", ":cefsimple_resources_bundle_data_english", ":cefsimple_xibs", ] frameworks = [ "AppKit.framework", ] defines = [ "CEF_USE_SANDBOX", ] } # # ceftests app targets. # bundle_data("ceftests_resources_bundle_data") { sources = gypi_paths2.shared_sources_resources + [ "tests/ceftests/mac/ceftests.icns", ] outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}", ] } bundle_data("ceftests_resources_bundle_data_english") { sources = [ "tests/ceftests/mac/English.lproj/InfoPlist.strings", ] outputs = [ "{{bundle_resources_dir}}/English.lproj/{{source_file_part}}", ] } mac_xib_bundle_data("ceftests_xibs") { sources = [ "tests/ceftests/mac/English.lproj/MainMenu.xib", ] output_path = "{{bundle_resources_dir}}/English.lproj" } cef_app("ceftests") { testonly = true helper_info_plist = "tests/ceftests/mac/helper-Info.plist.in" helper_sources = gypi_paths2.shared_sources_common + gypi_paths2.shared_sources_renderer + gypi_paths2.shared_sources_mac_helper + gypi_paths2.ceftests_sources_mac_helper + gypi_paths2.ceftests_sources_mac_helper_shared helper_deps = [ ":gtest_teamcity", "//testing/gtest", ] helper_frameworks = [ "AppKit.framework", ] helper_defines = [ "CEF_USE_SANDBOX", "CEF_TESTS_IN_SRC_DIRECTORY", ] info_plist = "tests/ceftests/mac/Info.plist.in" sources = includes_common + includes_mac + gypi_paths2.includes_wrapper + gypi_paths2.includes_wrapper_mac + gypi_paths2.shared_sources_browser + gypi_paths2.shared_sources_common + gypi_paths2.shared_sources_mac + gypi_paths2.ceftests_sources_common + gypi_paths2.ceftests_sources_mac deps = [ ":ceftests_resources_bundle_data", ":ceftests_resources_bundle_data_english", ":ceftests_xibs", ":gtest_teamcity", "//testing/gtest", ] frameworks = [ "AppKit.framework", ] defines = [ "CEF_USE_SANDBOX", "CEF_TESTS_IN_SRC_DIRECTORY", ] } } else { # # cefclient targets. # # The cefclient target depends on packages that are not available in the # default sysroot environment. if (is_linux && !use_sysroot) { pkg_config("glib") { packages = [ "glib-2.0", ] } } if (is_linux && cef_use_gtk) { pkg_config("gtk") { packages = [ "gmodule-2.0", "gtk+-3.0", "gthread-2.0", "gtk+-unix-print-3.0", "xi", ] } } if (is_linux) { copy("copy_cefclient_files") { sources = gypi_paths2.shared_sources_resources + gypi_paths2.cefclient_sources_resources outputs = [ "${root_out_dir}/cefclient_files/{{source_file_part}}" ] } } executable("cefclient") { # Necessary because the libcef target is testonly. testonly = true sources = includes_common + gypi_paths2.includes_wrapper + gypi_paths2.shared_sources_browser + gypi_paths2.shared_sources_common + gypi_paths2.shared_sources_renderer + gypi_paths2.cefclient_sources_browser + gypi_paths2.cefclient_sources_common + gypi_paths2.cefclient_sources_renderer deps = [ ":libcef", ":libcef_dll_wrapper", ] defines = [ "CEF_USE_SANDBOX", ] if (is_win) { sources += includes_win + gypi_paths2.shared_sources_win + gypi_paths2.cefclient_sources_win + gypi_paths2.cefclient_sources_resources_win_rc # Set /SUBSYSTEM:WINDOWS. configs -= [ "//build/config/win:console" ] configs += [ "//build/config/win:windowed" ] # Delay-load as many DLLs as possible for sandbox and startup perf # improvements. configs += [ "//build/config/win:delayloads" ] defines += [ "CEF_USE_ATL", ] deps += [ ":cef_sandbox", "//build/win:default_exe_manifest", ] libs = [ "comctl32.lib", "d3d11.lib", "imm32.lib", "oleacc.lib", "rpcrt4.lib", "shlwapi.lib", ] if (target_cpu != "arm64") { libs += [ "glu32.lib", "opengl32.lib", ] ldflags = [ "/DELAYLOAD:glu32.dll", "/DELAYLOAD:oleaut32.dll", "/DELAYLOAD:opengl32.dll", ] } } if (is_linux) { sources += includes_linux + gypi_paths2.shared_sources_linux + gypi_paths2.cefclient_sources_linux deps += [ ":copy_cefclient_files", ] libs = [ "GL", "X11", ] if (cef_use_gtk) { configs += [ ":gtk", ] cflags = [ # Don't warn about deprecated GDK/GTK functions. "-Wno-deprecated-declarations", ] } if (!is_component_build) { # Set rpath to find our own libfreetype even in a non-component build. configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] } } } # # cefsimple targets. # executable("cefsimple") { # Necessary because the libcef target is testonly. testonly = true sources = includes_common + gypi_paths2.includes_wrapper + gypi_paths2.cefsimple_sources_common deps = [ ":libcef", ":libcef_dll_wrapper", ] defines = [ "CEF_USE_SANDBOX", ] if (is_win) { sources += includes_win + gypi_paths2.cefsimple_sources_win + gypi_paths2.cefsimple_sources_resources_win_rc # Set /SUBSYSTEM:WINDOWS. configs -= [ "//build/config/win:console" ] configs += [ "//build/config/win:windowed" ] # Delay-load as many DLLs as possible for sandbox and startup perf # improvements. configs += [ "//build/config/win:delayloads" ] deps += [ ":cef_sandbox", "//build/win:default_exe_manifest", ] libs = [ "comctl32.lib", "shlwapi.lib", "rpcrt4.lib", ] } if (is_linux) { sources += includes_linux + gypi_paths2.cefsimple_sources_linux if (ozone_platform_x11) { libs = [ "X11", ] } if (!is_component_build) { # Set rpath to find our own libfreetype even in a non-component build. configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] } } } # # ceftests targets. # if (is_linux) { copy("copy_ceftests_files") { sources = gypi_paths2.shared_sources_resources outputs = [ "${root_out_dir}/ceftests_files/{{source_file_part}}" ] } } executable("ceftests") { testonly = true sources = includes_common + gypi_paths2.includes_wrapper + gypi_paths2.shared_sources_browser + gypi_paths2.shared_sources_common + gypi_paths2.shared_sources_renderer + gypi_paths2.ceftests_sources_common deps = [ ":libcef", ":libcef_dll_wrapper", ":gtest_teamcity", "//testing/gtest", ] defines = [ "CEF_USE_SANDBOX", "CEF_TESTS_IN_SRC_DIRECTORY", ] if (is_win) { sources += gypi_paths2.shared_sources_win + gypi_paths2.ceftests_sources_win + gypi_paths2.ceftests_sources_resources_win_rc # Delay-load as many DLLs as possible for sandbox and startup perf # improvements. configs += [ "//build/config/win:delayloads" ] deps += [ ":cef_sandbox", "//build/win:default_exe_manifest", ] } if (is_linux) { sources += gypi_paths2.shared_sources_linux + gypi_paths2.ceftests_sources_linux if (ozone_platform_x11) { libs = [ "X11", ] } else { if (!use_sysroot) { configs += [ ":glib" ] } } deps += [ ":copy_ceftests_files", ] } if (is_linux && !is_component_build) { # Set rpath to find our own libfreetype even in a non-component build. configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] } } }