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
|
import re
import os
import subprocess
from .builder import Builder
from lldbsuite.test import configuration
import lldbsuite.test.lldbutil as lldbutil
REMOTE_PLATFORM_NAME_RE = re.compile(r"^remote-(.+)$")
SIMULATOR_PLATFORM_RE = re.compile(r"^(.+)-simulator$")
def get_os_env_from_platform(platform):
match = REMOTE_PLATFORM_NAME_RE.match(platform)
if match:
return match.group(1), ""
match = SIMULATOR_PLATFORM_RE.match(platform)
if match:
return match.group(1), "simulator"
return None, None
def get_os_from_sdk(sdk):
return sdk[:sdk.find('.')], ""
def get_os_and_env():
if configuration.lldb_platform_name:
return get_os_env_from_platform(configuration.lldb_platform_name)
if configuration.apple_sdk:
return get_os_from_sdk(configuration.apple_sdk)
return None, None
def get_triple():
# Construct the vendor component.
vendor = "apple"
# Construct the os component.
os, env = get_os_and_env()
if os is None or env is None:
return None, None, None, None
# Get the SDK from the os and env.
sdk = lldbutil.get_xcode_sdk(os, env)
if sdk is None:
return None, None, None, None
# Get the version from the SDK.
version = lldbutil.get_xcode_sdk_version(sdk)
if version is None:
return None, None, None, None
return vendor, os, version, env
def get_triple_str(arch, vendor, os, version, env):
if None in [arch, vendor, os, version, env]:
return None
component = [arch, vendor, os + version]
if env:
components.append(env)
return '-'.join(component)
class BuilderDarwin(Builder):
def getTriple(self, arch):
vendor, os, version, env = get_triple()
return get_triple_str(arch, vendor, os, version, env)
def getExtraMakeArgs(self):
"""
Helper function to return extra argumentsfor the make system. This
method is meant to be overridden by platform specific builders.
"""
args = dict()
if configuration.dsymutil:
args['DSYMUTIL'] = configuration.dsymutil
if configuration.apple_sdk and 'internal' in configuration.apple_sdk:
sdk_root = lldbutil.get_xcode_sdk_root(configuration.apple_sdk)
if sdk_root:
private_frameworks = os.path.join(sdk_root, 'System',
'Library',
'PrivateFrameworks')
args['FRAMEWORK_INCLUDES'] = '-F{}'.format(private_frameworks)
operating_system, env = get_os_and_env()
if operating_system and operating_system != "macosx":
builder_dir = os.path.dirname(os.path.abspath(__file__))
test_dir = os.path.dirname(builder_dir)
if env == "simulator":
entitlements_file = 'entitlements-simulator.plist'
else:
entitlements_file = 'entitlements.plist'
entitlements = os.path.join(test_dir, 'make', entitlements_file)
args['CODESIGN'] = 'codesign --entitlements {}'.format(
entitlements)
else:
args['CODESIGN'] = 'codesign'
# Return extra args as a formatted string.
return ['{}={}'.format(key, value) for key, value in args.items()]
def getArchCFlags(self, arch):
"""Returns the ARCH_CFLAGS for the make system."""
# Get the triple components.
vendor, os, version, env = get_triple()
triple = get_triple_str(arch, vendor, os, version, env)
if not triple:
return []
# Construct min version argument
version_min = ""
if env == "simulator":
version_min = "-m{}-simulator-version-min={}".format(os, version)
else:
version_min = "-m{}-version-min={}".format(os, version)
return ["ARCH_CFLAGS=-target {} {}".format(triple, version_min)]
def _getDebugInfoArgs(self, debug_info):
if debug_info == "dsym":
return ["MAKE_DSYM=YES"]
return super(BuilderDarwin, self)._getDebugInfoArgs(debug_info)
|