blob: 566950882a9612b15cd469227231c62047271dc2 [file] [log] [blame]
# Copyright 2015 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.
import("//build/config/ios/rules.gni")
import("//build/config/mac/base_rules.gni")
import("//build/mac/tweak_info_plist.gni")
import("//ios/build/chrome_build.gni")
import("//ios/public/provider/chrome/browser/build_config.gni")
source_set("app") {
configs += [ "//build/config/compiler:enable_arc" ]
sources = [
"deferred_initialization_runner.h",
"deferred_initialization_runner.mm",
"safe_mode_crashing_modules_config.h",
"safe_mode_crashing_modules_config.mm",
"safe_mode_util.cc",
"safe_mode_util.h",
]
deps = [
":resources",
"//base",
ios_packed_resources_target,
]
libs = [ "Foundation.framework" ]
}
source_set("unit_tests") {
testonly = true
sources = [
"chrome_app_startup_parameters_unittest.mm",
"chrome_overlay_window_testing.h",
"deferred_initialization_runner_unittest.mm",
"main_application_delegate_unittest.mm",
"main_controller_unittest.mm",
"safe_mode_util_unittest.cc",
]
deps = [
":app",
":app_internal",
"//base",
"//base/test:test_support",
"//ios/chrome/app/application_delegate:application_delegate_internal",
"//ios/chrome/browser",
"//ios/chrome/browser/tabs",
"//ios/chrome/common/app_group",
"//ios/chrome/test/base",
"//ios/public/provider/chrome/browser",
"//ios/public/provider/chrome/browser/distribution",
"//testing/gtest",
"//third_party/ocmock",
"//url",
]
}
source_set("tests_hook") {
# This target is intentionally not test-only, as the main app depends on it.
sources = [
"tests_hook.h",
]
}
source_set("tests_fake_hook") {
# This target is intentionally not test-only, as the main app depends on it.
sources = [
"tests_fake_hook.mm",
]
deps = [
":tests_hook",
]
}
bundle_data("resources") {
visibility = [ ":app" ]
sources = [
"resources/SafeModeCrashingModules.plist",
]
outputs = [
"{{bundle_resources_dir}}/{{source_file_part}}",
]
}
tweak_info_plist("info_plist") {
info_plists = [
"resources/Info.plist",
"resources/ChromeAddition+Info.plist",
]
if (ios_chrome_info_plist_additions != []) {
info_plists += ios_chrome_info_plist_additions
}
if (ios_encryption_export_compliance_code != "") {
info_plists += [ "resources/EncryptionExportCompliance+Info.plist" ]
}
args = [
"--breakpad=$breakpad_enabled_as_int",
"--branding=$chromium_short_name",
]
}
compile_plist("entitlements") {
format = "xml1"
plist_templates = [ "resources/Chrome.entitlements" ]
if (ios_chrome_entitlements_additions != []) {
plist_templates += ios_chrome_entitlements_additions
}
if (!ios_automatically_manage_certs) {
plist_templates += [ "resources/AssociatedDomains.entitlements" ]
}
substitutions = [ "IOS_BUNDLE_ID_PREFIX=$ios_app_bundle_id_prefix" ]
output_name = "$target_gen_dir/$chromium_short_name.entitlements"
}
source_set("app_internal") {
sources = [
"application_mode.h",
"chrome_app_startup_parameters.h",
"chrome_app_startup_parameters.mm",
"chrome_overlay_window.h",
"chrome_overlay_window.mm",
"main_application_delegate.h",
"main_application_delegate.mm",
"main_application_delegate_testing.h",
"main_controller.h",
"main_controller.mm",
"main_controller_private.h",
"memory_monitor.h",
"memory_monitor.mm",
"startup_tasks.h",
"startup_tasks.mm",
]
deps = [
":app",
":tests_hook",
"//base",
"//components/bookmarks/browser",
"//components/browser_sync",
"//components/browsing_data/core",
"//components/component_updater",
"//components/content_settings/core/browser",
"//components/crash/core/common",
"//components/favicon/core",
"//components/favicon_base",
"//components/handoff",
"//components/history/core/browser",
"//components/infobars/core",
"//components/keyed_service/core",
"//components/keyed_service/ios",
"//components/metrics",
"//components/prefs",
"//components/proxy_config",
"//components/reading_list/core",
"//components/signin/core/browser",
"//components/suggestions",
"//components/sync",
"//components/url_formatter",
"//components/web_resource",
"//ios/chrome/app/application_delegate",
"//ios/chrome/app/application_delegate:application_delegate_internal",
"//ios/chrome/app/safe_mode",
"//ios/chrome/app/spotlight",
"//ios/chrome/app/startup",
"//ios/chrome/app/strings",
"//ios/chrome/browser",
"//ios/chrome/browser:browser_internal",
"//ios/chrome/browser/bookmarks",
"//ios/chrome/browser/browser_state",
"//ios/chrome/browser/browser_state:browser_state_impl",
"//ios/chrome/browser/browsing_data",
"//ios/chrome/browser/browsing_data:browsing_data_internal",
"//ios/chrome/browser/content_settings",
"//ios/chrome/browser/crash_report",
"//ios/chrome/browser/crash_report:crash_report_internal",
"//ios/chrome/browser/favicon",
"//ios/chrome/browser/first_run",
"//ios/chrome/browser/geolocation",
"//ios/chrome/browser/geolocation:geolocation_internal",
"//ios/chrome/browser/history",
"//ios/chrome/browser/memory",
"//ios/chrome/browser/metrics",
"//ios/chrome/browser/metrics:metrics_internal",
"//ios/chrome/browser/native_app_launcher:native_app_launcher_internal",
"//ios/chrome/browser/net",
"//ios/chrome/browser/omaha",
"//ios/chrome/browser/prefs",
"//ios/chrome/browser/reading_list",
"//ios/chrome/browser/search_engines",
"//ios/chrome/browser/share_extension",
"//ios/chrome/browser/signin",
"//ios/chrome/browser/snapshots",
"//ios/chrome/browser/suggestions",
"//ios/chrome/browser/sync",
"//ios/chrome/browser/tabs",
"//ios/chrome/browser/ui",
"//ios/chrome/browser/ui:ui_internal",
"//ios/chrome/browser/ui/authentication",
"//ios/chrome/browser/ui/commands",
"//ios/chrome/browser/ui/contextual_search",
"//ios/chrome/browser/ui/downloads",
"//ios/chrome/browser/ui/first_run",
"//ios/chrome/browser/ui/history",
"//ios/chrome/browser/ui/main",
"//ios/chrome/browser/ui/promos",
"//ios/chrome/browser/ui/settings",
"//ios/chrome/browser/ui/stack_view",
"//ios/chrome/browser/ui/tab_switcher",
"//ios/chrome/browser/ui/tabs",
"//ios/chrome/browser/ui/util",
"//ios/chrome/browser/ui/webui:webui_internal",
"//ios/chrome/browser/upgrade",
"//ios/chrome/browser/variations:ios_chrome_ui_string_overrider_factory",
"//ios/chrome/browser/voice",
"//ios/chrome/browser/web:web_internal",
"//ios/chrome/common",
"//ios/chrome/common/app_group",
"//ios/chrome/common/app_group:main_app",
"//ios/net",
"//ios/public/provider/chrome/browser",
"//ios/public/provider/chrome/browser/distribution",
"//ios/public/provider/chrome/browser/native_app_launcher",
"//ios/public/provider/chrome/browser/signin",
"//ios/public/provider/chrome/browser/user_feedback",
"//ios/third_party/material_roboto_font_loader_ios",
"//ios/web",
"//ios/web/public/app",
"//mojo/edk/system",
"//net",
"//skia",
"//ui/base",
"//ui/gfx",
"//ui/resources",
"//ui/strings:ui_strings",
]
libs = [
"CoreSpotlight.framework",
"MediaPlayer.framework",
]
allow_circular_includes_from =
[ "//ios/chrome/app/application_delegate:application_delegate_internal" ]
}
source_set("main") {
sources = [
"chrome_exe_main.mm",
]
deps = [
":app_internal",
"//base",
"//components/crash/core/common",
"//ios/chrome/app/startup",
"//ios/chrome/browser:browser_internal",
"//ios/chrome/browser/crash_report",
"//ios/chrome/common",
"//third_party/google_toolbox_for_mac",
]
}
ios_app_bundle("chrome") {
output_name = chromium_short_name
entitlements_target = ":entitlements"
info_plist_target = ":info_plist"
deps = [
":main",
":tests_fake_hook",
]
bundle_deps = [ "//ios/chrome/app/resources" ]
if (current_toolchain == default_toolchain) {
if (ios_enable_today_extension) {
deps += [ ":today_extension_bundle" ]
}
if (ios_enable_widget_extension) {
deps += [ ":widget_extension_bundle" ]
}
if (ios_enable_share_extension) {
deps += [ ":share_extension_bundle" ]
}
}
extra_substitutions = [
"CHROMIUM_BUNDLE_ID=$chromium_bundle_id",
"CHROMIUM_HANDOFF_ID=$chromium_handoff_id",
"CHROMIUM_SHORT_NAME=$chromium_short_name",
"CHROMIUM_URL_SCHEME_1=$url_unsecure_scheme",
"CHROMIUM_URL_SCHEME_2=$url_secure_scheme",
"CHROMIUM_URL_SCHEME_3=$url_x_callback_scheme",
"CHROMIUM_URL_SCHEME_4=$url_channel_scheme",
"SSOAUTH_URL_SCHEME=$url_ssoauth_scheme",
]
if (ios_encryption_export_compliance_code != "") {
extra_substitutions += [ "ENCRYPTION_EXPORT_COMPLIANCE_CODE=" +
ios_encryption_export_compliance_code ]
}
}
if (current_toolchain == default_toolchain) {
if (ios_enable_today_extension) {
bundle_data("today_extension_bundle") {
public_deps = [
"//ios/chrome/today_extension",
]
sources = [
"$root_out_dir/today_extension.appex",
]
outputs = [
"{{bundle_plugins_dir}}/{{source_file_part}}",
]
}
}
if (ios_enable_widget_extension) {
bundle_data("widget_extension_bundle") {
public_deps = [
"//ios/chrome/widget_extension",
]
sources = [
"$root_out_dir/widget_extension.appex",
]
# The output is renamed today_extension.appex so that signing in canary
# works and clobbering is not necessary when switching between this
# extension and the today extension.
# TODO(crbug.com/682230) : Rename this when widget gets its own
# mobileprovision.
outputs = [
"{{bundle_plugins_dir}}/today_extension.appex",
]
}
}
if (ios_enable_share_extension) {
bundle_data("share_extension_bundle") {
public_deps = [
"//ios/chrome/share_extension",
]
sources = [
"$root_out_dir/share_extension.appex",
]
outputs = [
"{{bundle_plugins_dir}}/{{source_file_part}}",
]
}
}
}