|  | # 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") | 
|  | import("//build/config/mac/mac_sdk_overrides.gni") | 
|  | import("//build/toolchain/toolchain.gni") | 
|  |  | 
|  | declare_args() { | 
|  | # Minimum supported version of macOS. Must be of the form x.x.x for | 
|  | # Info.plist files. | 
|  | mac_deployment_target = "10.9.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" | 
|  | } | 
|  |  | 
|  | # 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. | 
|  | _verify_sdk = is_chrome_branded && is_official_build && target_os != "ios" | 
|  |  | 
|  | find_sdk_args = [ "--print_sdk_path" ] | 
|  | if (!use_system_xcode) { | 
|  | find_sdk_args += [ | 
|  | "--developer_dir", | 
|  | hermetic_xcode_path, | 
|  | ] | 
|  | } | 
|  | if (_verify_sdk) { | 
|  | find_sdk_args += [ | 
|  | "--verify", | 
|  | mac_sdk_min, | 
|  | "--sdk_path=" + mac_sdk_path, | 
|  | ] | 
|  | } else { | 
|  | find_sdk_args += [ mac_sdk_min ] | 
|  | } | 
|  |  | 
|  | # The tool will print the SDK path on the first line, and the version on the | 
|  | # second line. | 
|  | find_sdk_lines = | 
|  | exec_script("//build/mac/find_sdk.py", find_sdk_args, "list lines") | 
|  | mac_sdk_version = find_sdk_lines[1] | 
|  | if (mac_sdk_path == "") { | 
|  | mac_sdk_path = find_sdk_lines[0] | 
|  | } | 
|  |  | 
|  | script_name = "//build/config/mac/sdk_info.py" | 
|  | sdk_info_args = [] | 
|  | if (!use_system_xcode) { | 
|  | sdk_info_args += [ | 
|  | "--developer_dir", | 
|  | hermetic_xcode_path, | 
|  | ] | 
|  | } | 
|  | 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 | 
|  | machine_os_build = _mac_sdk_result.machine_os_build | 
|  |  | 
|  | if (mac_sdk_version != mac_sdk_min && | 
|  | exec_script("//build/check_return_value.py", | 
|  | [ | 
|  | "test", | 
|  | xcode_version, | 
|  | "-ge", | 
|  | "0730", | 
|  | ], | 
|  | "value") != 1) { | 
|  | print( | 
|  | "********************************************************************************") | 
|  | print( | 
|  | " WARNING: The Mac OS X SDK is incompatible with the version of Xcode. To fix,") | 
|  | print( | 
|  | "          either upgrade Xcode to the latest version or install the Mac OS X") | 
|  | print( | 
|  | "          $mac_sdk_min SDK. For more information, see https://crbug.com/620127.") | 
|  | print() | 
|  | print(" Current SDK Version:   $mac_sdk_version") | 
|  | print(" Current Xcode Version: $xcode_version ($xcode_build)") | 
|  | print( | 
|  | "********************************************************************************") | 
|  | assert(false, "SDK is incompatible with Xcode") | 
|  | } |