forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mac_sdk.gni
143 lines (127 loc) · 5.57 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
137
138
139
140
141
142
143
# 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/rbe.gni")
import("//build/toolchain/siso.gni")
import("//build/toolchain/toolchain.gni")
assert(current_os == "mac" || current_toolchain == default_toolchain)
declare_args() {
# The following two variables control the minimum supported version for
# macOS:
#
# This variable affects how Chromium is compiled and corresponds to the
# `MACOSX_DEPLOYMENT_TARGET` define. Changing this controls which symbols
# the macOS SDK marks as available (via `__builtin_available` and
# `@available`) and deprecated (producing a warning if called). Modifying
# this variable often requires additional code changes to handle differences
# in availability and deprecation, which is why it is often changed
# separately from `mac_min_system_version` when dropping support for older
# macOSes.
mac_deployment_target = "10.15"
# The value of the `LSMinimumSystemVersion` in `Info.plist` files. This value
# controls the minimum OS version that may launch the application, and OS
# releases older than this will refuse to launch the application. When
# dropping support for older macOSes, this variable is often changed before
# `mac_deployment_target` to increase the system requirement without changing
# how Chromium is compiled. This must be greater than or equal to the
# `mac_deployment_target` version.
mac_min_system_version = "10.15"
# 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 = "14.0"
# 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 = "23A334"
# 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/40479759): 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),
]
}
# 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_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_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)
}