127 lines
5 KiB
Text
127 lines
5 KiB
Text
# 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("//chromium/build/config/chrome_build.gni")
|
|
import("//chromium/build/config/gclient_args.gni")
|
|
import("//chromium/build/config/mac/mac_sdk_overrides.gni")
|
|
import("//chromium/build/toolchain/goma.gni")
|
|
import("//chromium/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.3"
|
|
|
|
# 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 = "//chromium/build/mac_files/xcode_binaries"
|
|
}
|
|
|
|
script_name = "//chromium/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("//chromium/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)
|
|
}
|