This migrates and deprecates the current GPC pref we have in the Swift side and exposes a way to fetch the profile pref from the pref service
328 lines
15 KiB
Plaintext
328 lines
15 KiB
Plaintext
# Copyright (c) 2019 The Brave Authors. All rights reserved.
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
import("//brave/build/config.gni")
|
|
import("//brave/build/ios/config.gni")
|
|
import("//brave/build/ios/create_xcframework.gni")
|
|
import("//brave/build/mac/tweak_info_plist.gni")
|
|
import("//brave/components/ai_chat/ios/browser/headers.gni")
|
|
import("//brave/components/brave_shields/ios/browser/headers.gni")
|
|
import("//brave/components/brave_talk/buildflags/buildflags.gni")
|
|
import("//brave/components/brave_user_agent/ios/common/headers.gni")
|
|
import("//brave/components/debounce/ios/browser/headers.gni")
|
|
import("//brave/components/url_sanitizer/ios/browser/headers.gni")
|
|
import("//brave/ios/browser/api/ads/headers.gni")
|
|
import("//brave/ios/browser/api/brave_domains/headers.gni")
|
|
import("//brave/ios/browser/api/brave_rewards/headers.gni")
|
|
import("//brave/ios/browser/api/brave_services_key/headers.gni")
|
|
import("//brave/ios/browser/api/brave_shields/headers.gni")
|
|
import("//brave/ios/browser/api/brave_stats/headers.gni")
|
|
import("//brave/ios/browser/api/brave_user_agent/headers.gni")
|
|
import("//brave/ios/browser/api/brave_wallet/headers.gni")
|
|
import("//brave/ios/browser/api/certificate/headers.gni")
|
|
import("//brave/ios/browser/api/content_settings/headers.gni")
|
|
import("//brave/ios/browser/api/credential_provider/headers.gni")
|
|
import("//brave/ios/browser/api/de_amp/headers.gni")
|
|
import("//brave/ios/browser/api/developer_options_code/headers.gni")
|
|
import("//brave/ios/browser/api/favicon/headers.gni")
|
|
import("//brave/ios/browser/api/features/headers.gni")
|
|
import("//brave/ios/browser/api/https_upgrade_exceptions/headers.gni")
|
|
import("//brave/ios/browser/api/https_upgrades/headers.gni")
|
|
import("//brave/ios/browser/api/ipfs/headers.gni")
|
|
import("//brave/ios/browser/api/ntp_background_images/headers.gni")
|
|
import("//brave/ios/browser/api/omnibox/headers.gni")
|
|
import("//brave/ios/browser/api/opentabs/headers.gni")
|
|
import("//brave/ios/browser/api/p3a/headers.gni")
|
|
import("//brave/ios/browser/api/profile/headers.gni")
|
|
import("//brave/ios/browser/api/qr_code/headers.gni")
|
|
import("//brave/ios/browser/api/query_filter/headers.gni")
|
|
import("//brave/ios/browser/api/session_restore/headers.gni")
|
|
import("//brave/ios/browser/api/skus/headers.gni")
|
|
import("//brave/ios/browser/api/storekit_receipt/headers.gni")
|
|
import("//brave/ios/browser/api/translate/headers.gni")
|
|
import("//brave/ios/browser/api/unicode/headers.gni")
|
|
import("//brave/ios/browser/api/unzip/headers.gni")
|
|
import("//brave/ios/browser/api/url/headers.gni")
|
|
import("//brave/ios/browser/api/web/web_state/headers.gni")
|
|
import("//brave/ios/browser/api/web_view/headers.gni")
|
|
import("//brave/ios/browser/api/webcompat_reporter/headers.gni")
|
|
import("//brave/ios/browser/brave_shields/headers.gni")
|
|
import("//brave/ios/browser/content_settings/headers.gni")
|
|
import("//brave/ios/browser/debounce/headers.gni")
|
|
import("//brave/ios/browser/url_sanitizer/headers.gni")
|
|
import("//brave/ios/web_view/headers.gni")
|
|
import("//build/apple/tweak_info_plist.gni")
|
|
import("//build/config/compiler/compiler.gni")
|
|
import("//build/config/ios/rules.gni")
|
|
import("//ios/features.gni")
|
|
import("//ios/web_view/framework/sources.gni")
|
|
|
|
# lld is required when building arm64 with optimization in order to avoid
|
|
# runtime crashes
|
|
assert(is_debug || current_cpu != "arm64" || use_lld,
|
|
"Optimized arm64 iOS builds require lld")
|
|
|
|
config("internal_config") {
|
|
visibility = [ ":*" ]
|
|
ldflags =
|
|
[ "-Wl,-rpath,/usr/lib/swift,-rpath,@executable_path/../Frameworks" ]
|
|
}
|
|
|
|
group("brave_ios") {
|
|
public_deps = [
|
|
":brave_core_xcframework",
|
|
":early_partition_alloc_xcframework",
|
|
":generated_xcconfig",
|
|
":nala_assets_xcframework",
|
|
]
|
|
}
|
|
|
|
brave_core_public_headers = [
|
|
"//brave/base/apple/base_value_bridge.h",
|
|
"//brave/components/ai_chat/ios/browser/ai_chat_associated_content_page_fetcher.h",
|
|
"//brave/components/brave_wallet/ios/browser/wallet_page_handler_bridge.h",
|
|
"//brave/ios/app/brave_core_main.h",
|
|
"//brave/ios/app/brave_profile_controller.h",
|
|
"//brave/ios/app/brave_core_switches.h",
|
|
"//brave/ios/browser/ai_chat/ai_chat_utils.h",
|
|
"//brave/ios/browser/ai_chat/ai_chat_settings_helper.h",
|
|
"//brave/ios/browser/ai_chat/ai_chat_ui_handler_bridge.h",
|
|
"//brave/ios/browser/brave_account/brave_account_authentication_provider.h",
|
|
"//brave/ios/browser/brave_account/brave_account_constants_bridge.h",
|
|
"//brave/ios/browser/brave_account/brave_account_feature_bridge.h",
|
|
"//brave/ios/browser/brave_origin/brave_origin_service_bridge.h",
|
|
"//brave/ios/browser/brave_origin/brave_origin_service_factory_bridge.h",
|
|
"//brave/ios/browser/brave_news/brave_news_pref_names_bridge.h",
|
|
"//brave/ios/browser/brave_vpn/brave_vpn_pref_names_bridge.h",
|
|
"//brave/ios/browser/brave_wallet/brave_wallet_factory_wrappers.h",
|
|
"//brave/ios/browser/skus/skus_sdk_factory_wrappers.h",
|
|
"//brave/ios/browser/api/bookmarks/brave_bookmarks_api.h",
|
|
"//brave/ios/browser/api/bookmarks/brave_bookmarks_observer.h",
|
|
"//brave/ios/browser/api/bookmarks/importer/brave_bookmarks_importer.h",
|
|
"//brave/ios/browser/api/bookmarks/exporter/brave_bookmarks_exporter.h",
|
|
"//brave/ios/browser/api/history/importer/brave_history_importer.h",
|
|
"//brave/ios/browser/api/password/importer/brave_password_importer.h",
|
|
"//brave/ios/browser/api/history/brave_history_api.h",
|
|
"//brave/ios/browser/api/history/brave_history_observer.h",
|
|
"//brave/ios/browser/api/net/certificate_utility.h",
|
|
"//brave/ios/browser/api/password/brave_password_api.h",
|
|
"//brave/ios/browser/api/password/brave_password_observer.h",
|
|
"//brave/ios/browser/api/sync/brave_sync_api.h",
|
|
"//brave/ios/browser/api/sync/driver/brave_sync_profile_service.h",
|
|
"//brave/ios/browser/api/web_image/web_image.h",
|
|
"//brave/ios/browser/keyed_service/keyed_service_factory_wrapper.h",
|
|
"//brave/ios/browser/api/version_info/version_info_ios.h",
|
|
"//brave/ios/components/prefs/pref_service_bridge.h",
|
|
"//brave/ios/components/prefs/pref_change_registrar_bridge.h",
|
|
"//brave/ios/components/constants/pref_names_bridge.h",
|
|
"//brave/ios/browser/safari_data_import/safari_data_import_client_delegate.h",
|
|
"//brave/ios/browser/safari_data_import/safari_data_importer_bridge.h",
|
|
"//brave/ios/browser/safari_data_import/safari_data_importer_coordinator.h",
|
|
"//brave/ios/browser/serp_metrics/serp_metrics_bridge.h",
|
|
"//brave/ios/browser/serp_metrics/serp_metrics_service_factory_bridge.h",
|
|
"//brave/ios/browser/playlist/playlist_pref_names_bridge.h",
|
|
"//brave/ios/browser/ui/l10n_utils_typed_bridge.h",
|
|
"//ui/base/l10n/l10n_util_mac_bridge.h",
|
|
"$root_gen_dir/brave/components/brave_account/mojom/brave_account.mojom.objc.h",
|
|
"$root_gen_dir/components/grit/brave_components_swift_strings.h",
|
|
"//brave/ios/browser/web/logins/logins_tab_helper_bridge.h",
|
|
"//brave/ios/browser/brave_talk/brave_talk_tab_helper_bridge.h",
|
|
"//brave/ios/browser/brave_search/brave_search_make_default_tab_helper_bridge.h",
|
|
"//ios/chrome/browser/web/model/print/print_handler.h",
|
|
"//brave/ios/browser/youtube/youtube_pref_names_bridge.h",
|
|
"//brave/ios/browser/global_privacy_control/gpc_pref_names_bridge.h",
|
|
]
|
|
|
|
brave_core_public_headers += ads_public_headers
|
|
brave_core_public_headers += ai_chat_component_public_headers
|
|
brave_core_public_headers += brave_domains_public_headers
|
|
brave_core_public_headers += brave_shields_public_headers
|
|
brave_core_public_headers += brave_shields_api_public_headers
|
|
brave_core_public_headers += brave_shields_component_public_headers
|
|
brave_core_public_headers += brave_user_agent_component_public_headers
|
|
brave_core_public_headers += content_settings_component_public_headers
|
|
brave_core_public_headers += url_sanitizer_component_public_headers
|
|
brave_core_public_headers += browser_url_sanitizer_public_headers
|
|
brave_core_public_headers += browser_api_de_amp_public_headers
|
|
brave_core_public_headers += debounce_component_public_headers
|
|
brave_core_public_headers +=
|
|
browser_api_https_upgrade_exceptions_service_public_headers
|
|
brave_core_public_headers +=
|
|
browser_api_brave_user_agent_exceptions_ios_public_headers
|
|
brave_core_public_headers += browser_api_https_upgrades_public_headers
|
|
brave_core_public_headers += browser_debounce_public_headers
|
|
brave_core_public_headers += brave_stats_public_headers
|
|
brave_core_public_headers += brave_wallet_public_headers
|
|
brave_core_public_headers += browser_api_certificate_public_headers
|
|
brave_core_public_headers += browser_api_favicon_public_headers
|
|
brave_core_public_headers += rewards_public_headers
|
|
brave_core_public_headers += browser_api_omnibox_public_headers
|
|
brave_core_public_headers += browser_api_opentabs_public_headers
|
|
brave_core_public_headers += browser_api_qr_code_public_headers
|
|
brave_core_public_headers += browser_api_session_restore_public_headers
|
|
brave_core_public_headers += browser_api_query_filter_public_headers
|
|
brave_core_public_headers += skus_public_headers
|
|
brave_core_public_headers += browser_api_url_public_headers
|
|
brave_core_public_headers += brave_p3a_public_headers
|
|
brave_core_public_headers += browser_api_web_webstate_public_headers
|
|
brave_core_public_headers += ipfs_public_headers
|
|
brave_core_public_headers += ntp_background_images_public_headers
|
|
brave_core_public_headers += brave_services_key_public_headers
|
|
brave_core_public_headers += browser_api_features_public_headers
|
|
brave_core_public_headers += credential_provider_public_headers
|
|
brave_core_public_headers += developer_options_code_public_headers
|
|
brave_core_public_headers += browser_api_storekit_receipt_public_headers
|
|
brave_core_public_headers += content_settings_public_headers
|
|
brave_core_public_headers += webcompat_reporter_public_headers
|
|
brave_core_public_headers += browser_api_translate_public_headers
|
|
brave_core_public_headers += browser_api_unicode_public_headers
|
|
brave_core_public_headers += browser_api_unzip_public_headers
|
|
brave_core_public_headers += brave_web_view_public_headers
|
|
brave_core_public_headers += browser_api_profile_public_headers
|
|
brave_core_public_headers += brave_ios_web_view_public_headers
|
|
|
|
if (enable_brave_talk) {
|
|
brave_core_public_headers +=
|
|
[ "//brave/ios/browser/brave_talk/brave_talk_pref_names_bridge.h" ]
|
|
}
|
|
|
|
action("brave_core_umbrella_header") {
|
|
script = "//build/config/ios/generate_umbrella_header.py"
|
|
|
|
full_header_path = target_gen_dir + "/BraveCore.h"
|
|
outputs = [ full_header_path ]
|
|
|
|
args = [
|
|
"--output-path",
|
|
rebase_path(full_header_path, root_build_dir),
|
|
]
|
|
|
|
args += rebase_path(brave_core_public_headers, root_build_dir)
|
|
args += rebase_path(ios_web_view_public_headers, root_build_dir)
|
|
}
|
|
|
|
tweak_info_plist("info_plist") {
|
|
info_plists = [ "Info.plist" ]
|
|
}
|
|
|
|
brave_tweak_info_plist("brave_core_plist") {
|
|
info_plist = "$root_gen_dir/brave/ios/info_plist_tweaked.plist"
|
|
|
|
args = [
|
|
"--brave_channel=" + brave_channel,
|
|
"--brave_version=" + brave_version,
|
|
"--skip_signing",
|
|
]
|
|
|
|
deps = [ ":info_plist" ]
|
|
}
|
|
|
|
ios_framework_bundle("brave_core_ios_framework") {
|
|
output_name = "BraveCore"
|
|
output_dir = root_out_dir
|
|
|
|
info_plist_target = ":brave_core_plist"
|
|
|
|
configs += [ ":internal_config" ]
|
|
|
|
deps = [
|
|
":brave_core_plist",
|
|
":brave_core_umbrella_header",
|
|
"//brave/components/brave_account/mojom:mojom_objc",
|
|
"//brave/components/resources:strings",
|
|
"//brave/ios/app",
|
|
"//brave/ios/browser/ui",
|
|
"//brave/ios/components/constants",
|
|
"//brave/ios/web_view",
|
|
"//ui/base",
|
|
]
|
|
|
|
deps += ads_public_deps
|
|
deps += ai_chat_component_public_deps
|
|
deps += brave_wallet_public_deps
|
|
deps += brave_shields_component_public_deps
|
|
deps += rewards_public_deps
|
|
deps += skus_public_deps
|
|
deps += credential_provider_public_deps
|
|
deps += webcompat_reporter_public_deps
|
|
|
|
sources = brave_core_public_headers
|
|
sources += ios_web_view_public_headers
|
|
sources +=
|
|
[ "$root_gen_dir/components/grit/brave_components_swift_strings.mm" ]
|
|
|
|
public_headers = get_target_outputs(":brave_core_umbrella_header")
|
|
public_headers += brave_core_public_headers
|
|
public_headers += ios_web_view_public_headers
|
|
}
|
|
|
|
ios_framework_bundle("early_partition_alloc_framework") {
|
|
output_name = "PartitionAllocSupport"
|
|
sources = [ "//ios/chrome/app/early_pa_registration.cc" ]
|
|
info_plist = "//ios/chrome/app/resources/EarlyPAFrameworkInfo.plist"
|
|
extra_substitutions = [ "BUNDLE_IDENTIFIER=com.brave.ios.$output_name" ]
|
|
|
|
deps = [
|
|
"//base/allocator:early_zone_registration_apple",
|
|
"//base/allocator/partition_allocator:buildflags",
|
|
]
|
|
}
|
|
|
|
ios_create_xcframework("early_partition_alloc_xcframework") {
|
|
framework_dir = "$root_build_dir/PartitionAllocSupport.framework"
|
|
deps = [ ":early_partition_alloc_framework" ]
|
|
}
|
|
|
|
ios_create_xcframework("brave_core_xcframework") {
|
|
framework_dir = "$root_build_dir/BraveCore.framework"
|
|
remove_asset_catalogs = true
|
|
deps = [ ":brave_core_ios_framework" ]
|
|
}
|
|
|
|
ios_create_xcframework("nala_assets_xcframework") {
|
|
framework_dir = "$root_build_dir/NalaAssets.framework"
|
|
deps = [ "//brave/ios/nala:nala_assets_framework" ]
|
|
}
|
|
|
|
# Generates an xcconfig based on GN args that are needed in the Xcode app build
|
|
# process such as Info.plist or build setting subsititions.
|
|
generated_file("generated_xcconfig") {
|
|
outputs = [ "$root_build_dir/args.xcconfig" ]
|
|
|
|
# Some special logic to avoid .0 patch versions in marketing versions
|
|
ios_marketing_version = "$brave_version_major.$brave_version_minor"
|
|
if (brave_ios_marketing_version_patch != 0) {
|
|
ios_marketing_version += ".$brave_ios_marketing_version_patch"
|
|
}
|
|
|
|
contents = [
|
|
"brave_version_major = $brave_version_major",
|
|
"brave_version_minor = $brave_version_minor",
|
|
"brave_version_build = $brave_version_build",
|
|
"brave_ios_marketing_version = $ios_marketing_version",
|
|
"brave_ios_marketing_version_patch = $brave_ios_marketing_version_patch",
|
|
"brave_channel = $brave_channel",
|
|
]
|
|
|
|
# If absolute paths are stripped from debug symbols ensure that SPM/Xcode
|
|
# also maps debug symbols the same way to allow proper debugging with LLDB
|
|
if (strip_absolute_paths_from_debug_symbols) {
|
|
ios_dir = rebase_path("//brave/ios/brave-ios")
|
|
ios_dir_build_relative =
|
|
rebase_path("//brave/ios/brave-ios", root_build_dir)
|
|
contents += [ "brave_ios_debug_prefix_map_flag = -debug-prefix-map $ios_dir=$ios_dir_build_relative" ]
|
|
}
|
|
|
|
# Set up any active compilation conditions that may be used in Swift for
|
|
# example conditionally compiling based on `#if OFFICIAL_BUILD`
|
|
swift_active_compliation_conditions = []
|
|
if (is_official_build) {
|
|
swift_active_compliation_conditions += [ "OFFICIAL_BUILD" ]
|
|
}
|
|
swift_active_compilation_conditions_joined =
|
|
string_join(" ", swift_active_compliation_conditions)
|
|
contents += [ "brave_swift_active_compliation_conditions = $swift_active_compilation_conditions_joined" ]
|
|
}
|