| # 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. | 
 |  | 
 | import("//build/config/chrome_build.gni") | 
 | if (!is_starboard) { | 
 |   import("//build/config/gclient_args.gni") | 
 | } | 
 | import("//build/config/mac/mac_sdk_overrides.gni") | 
 | import("//build/toolchain/goma.gni") | 
 | import("//build/toolchain/toolchain.gni") | 
 |  | 
 | assert(current_os == "mac" || current_toolchain == default_toolchain) | 
 |  | 
 | declare_args() { | 
 |   # The MACOSX_DEPLOYMENT_TARGET variable used when compiling. This partially | 
 |   # controls the minimum supported version of macOS for Chromium by | 
 |   # affecting the symbol availability rules. This may differ from | 
 |   # mac_min_system_version when dropping support for older macOSes but where | 
 |   # additional code changes are required to be compliant with the availability | 
 |   # rules. | 
 |   # Must be of the form x.x.x for Info.plist files. | 
 |   mac_deployment_target = "10.11.0" | 
 |  | 
 |   # The value of the LSMinimmumSystemVersion in Info.plist files. This partially | 
 |   # controls the minimum supported version of macOS for Chromium by | 
 |   # affecting the Info.plist. This may differ from mac_deployment_target when | 
 |   # dropping support for older macOSes. This should be greater than or equal to | 
 |   # the mac_deployment_target version. | 
 |   # Must be of the form x.x.x for Info.plist files. | 
 |   mac_min_system_version = "10.11.0" | 
 |  | 
 |   # Path to a specific version of the Mac SDK, not including a slash at the end. | 
 |   # If empty, the path to the lowest version greater than or equal to | 
 |   # mac_sdk_min is used. | 
 |   mac_sdk_path = "" | 
 |  | 
 |   # The SDK name as accepted by xcodebuild. | 
 |   mac_sdk_name = "macosx" | 
 |  | 
 |   # The SDK version used when making official builds. This is a single exact | 
 |   # version, not a minimum. If this version isn't available official builds | 
 |   # will fail. | 
 |   mac_sdk_official_version = "11.1" | 
 |  | 
 |   # Production builds should use hermetic Xcode. If you want to do production | 
 |   # builds with system Xcode to test new SDKs, set this. | 
 |   # Don't set this on any bots. | 
 |   mac_allow_system_xcode_for_official_builds_for_testing = false | 
 | } | 
 |  | 
 | # Check that the version of macOS SDK used is the one requested when building | 
 | # a version of Chrome shipped to the users. Disable the check if building for | 
 | # iOS as the version macOS SDK used is not relevant for the tool build for the | 
 | # host (they are not shipped) --- this is required as Chrome on iOS is usually | 
 | # build with the latest version of Xcode that may not ship with the version of | 
 | # the macOS SDK used to build Chrome on mac. | 
 | # TODO(crbug.com/635745): the check for target_os should be replaced by a | 
 | # check that current_toolchain is default_toolchain, and the file should | 
 | # assert that current_os is "mac" once this file is no longer included by | 
 | # iOS toolchains. | 
 | if (is_chrome_branded && is_official_build && target_os != "ios") { | 
 |   assert(!use_system_xcode || | 
 |              mac_allow_system_xcode_for_official_builds_for_testing, | 
 |          "official branded builds should use hermetic xcode") | 
 | } | 
 |  | 
 | # The path to the hermetic install of Xcode. Only relevant when | 
 | # use_system_xcode = false. | 
 | if (!use_system_xcode) { | 
 |   _hermetic_xcode_path = "//build/mac_files/xcode_binaries" | 
 | } | 
 |  | 
 | script_name = "//build/config/apple/sdk_info.py" | 
 | sdk_info_args = [] | 
 | if (!use_system_xcode) { | 
 |   sdk_info_args += [ | 
 |     "--developer_dir", | 
 |     rebase_path(_hermetic_xcode_path, "", root_build_dir), | 
 |   ] | 
 | } | 
 |  | 
 | # Goma RBE requires paths relative to source directory. When using system | 
 | # Xcode, this is done by creating symbolic links in root_build_dir. | 
 | if (use_system_xcode && use_goma) { | 
 |   sdk_info_args += [ | 
 |     "--get_sdk_info", | 
 |     "--create_symlink_at", | 
 |     "sdk/xcode_links", | 
 |   ] | 
 | } | 
 | sdk_info_args += [ mac_sdk_name ] | 
 |  | 
 | _mac_sdk_result = exec_script(script_name, sdk_info_args, "scope") | 
 | xcode_version = _mac_sdk_result.xcode_version | 
 | xcode_build = _mac_sdk_result.xcode_build | 
 | if (mac_sdk_path == "" && use_system_xcode && use_goma) { | 
 |   mac_sdk_path = _mac_sdk_result.sdk_path | 
 | } | 
 |  | 
 | if (use_system_xcode) { | 
 |   # The tool will print the SDK path on the first line, and the version on the | 
 |   # second line. | 
 |   find_sdk_args = [ | 
 |     "--print_sdk_path", | 
 |     "--print_bin_path", | 
 |     mac_sdk_min, | 
 |   ] | 
 |   find_sdk_lines = | 
 |       exec_script("//build/mac/find_sdk.py", find_sdk_args, "list lines") | 
 |   mac_sdk_version = find_sdk_lines[2] | 
 |   if (mac_sdk_path == "") { | 
 |     mac_sdk_path = find_sdk_lines[0] | 
 |     mac_bin_path = find_sdk_lines[1] | 
 |   } else { | 
 |     mac_bin_path = find_sdk_lines[1] | 
 |   } | 
 | } else { | 
 |   mac_sdk_version = mac_sdk_official_version | 
 |   _dev = _hermetic_xcode_path + "/Contents/Developer" | 
 |   _sdk = "MacOSX${mac_sdk_version}.sdk" | 
 |   mac_sdk_path = _dev + "/Platforms/MacOSX.platform/Developer/SDKs/$_sdk" | 
 |   mac_bin_path = _dev + "/Toolchains/XcodeDefault.xctoolchain/usr/bin/" | 
 |  | 
 |   # If we're using hermetic Xcode, then we want the paths to be relative so that | 
 |   # generated ninja files are independent of the directory location. | 
 |   # TODO(thakis): Do this at the uses of this variable instead. | 
 |   mac_bin_path = rebase_path(mac_bin_path, root_build_dir) | 
 | } |