-
Notifications
You must be signed in to change notification settings - Fork 31
/
mac_sdk.gni
136 lines (120 loc) · 5.23 KB
/
mac_sdk.gni
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Copyright 2014 The Chromium Authors
# 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/gclient_args.gni")
import("//build/config/mac/mac_sdk_overrides.gni")
import("//build/toolchain/goma.gni")
import("//build/toolchain/rbe.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.
mac_deployment_target = "10.13"
# The value of the `LSMinimumSystemVersion` 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 must be greater than or equal
# to the `mac_deployment_target` version.
mac_min_system_version = "10.13"
# 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 = "13.3"
# The SDK build version used when making official builds. This is a single
# exact version found at "System/Library/CoreServices/SystemVersion.plist"
# inside the SDK.
mac_sdk_official_build_version = "21E226"
# 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 || use_remoteexec)) {
sdk_info_args += [
"--get_sdk_info",
"--create_symlink_at",
"sdk/xcode_links",
"--root_build_dir",
root_build_dir,
]
}
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 || use_remoteexec)) {
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",
"--print_sdk_build",
mac_sdk_min,
]
find_sdk_lines =
exec_script("//build/mac/find_sdk.py", find_sdk_args, "list lines")
mac_sdk_version = find_sdk_lines[3]
mac_sdk_build_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
mac_sdk_build_version = mac_sdk_official_build_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)
}