Skip to content

Commit b9f223f

Browse files
committed
APPLE: Extract TBB Patches
1 parent 7e85c19 commit b9f223f

2 files changed

Lines changed: 49 additions & 21 deletions

File tree

build_scripts/apple_utils.py

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,19 +120,29 @@ def SupportsMacOSUniversalBinaries():
120120
XcodeVersion = XcodeOutput[XcodeFind:].split(' ')[1]
121121
return (XcodeVersion > '11.0')
122122

123-
def GetSDKRoot(context) -> Optional[str]:
123+
124+
def GetSDKName(context) -> str:
124125
sdk = "macosx"
125126
if context.buildTarget == TARGET_IOS:
126-
sdk = "iphoneos"
127+
sdk = "iPhoneOS"
127128
elif context.buildTarget == TARGET_VISIONOS:
128-
sdk = "xros"
129+
sdk = "xrOS"
130+
131+
return sdk
132+
133+
def GetSDKRoot(context) -> Optional[str]:
134+
sdk = GetSDKName(context).lower()
129135

130136
for arg in (context.cmakeBuildArgs or '').split():
131137
if "CMAKE_OSX_SYSROOT" in arg:
132138
override = arg.split('=')[1].strip('"').strip()
133139
if override:
134140
sdk = override
135-
return GetCommandOutput(["xcrun", "--sdk", sdk, "--show-sdk-path"])
141+
142+
sdkroot = GetCommandOutput(["xcrun", "--sdk", sdk, "--show-sdk-path"])
143+
if not sdkroot:
144+
raise RuntimeError(f"Could not find an sdk path. Make sure you have the {sdk} sdk installed.")
145+
return sdkroot
136146

137147
def SetTarget(context, targetName):
138148
context.targetNative = (targetName == TARGET_NATIVE)
@@ -250,3 +260,30 @@ def ConfigureCMakeExtraArgs(context, args:List[str]) -> List[str]:
250260
args.append(f"-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH")
251261

252262
return args
263+
264+
def GetTBBPatches(context):
265+
if context.buildTarget not in EMBEDDED_PLATFORMS or context.buildTarget == TARGET_IOS:
266+
# TBB already handles these so we don't patch them out
267+
return [], []
268+
269+
sdk_name = GetSDKName(context)
270+
271+
# Standard Target based names
272+
target_config_patches = [("ios", context.buildTarget.lower()),
273+
("iOS", context.buildTarget),
274+
("IPHONEOS", sdk_name.upper())]
275+
276+
clang_config_patches = [("ios",context.buildTarget.lower()),
277+
("iOS", context.buildTarget),
278+
("IPHONEOS",sdk_name.upper())]
279+
280+
if context.buildTarget == TARGET_VISIONOS:
281+
target_config_patches.extend([("iPhone", "XR"),
282+
("?= 8.0", "?= 1.0")])
283+
284+
clang_config_patches.append(("iPhone", "XR"),)
285+
286+
if context.buildTarget == TARGET_VISIONOS:
287+
clang_config_patches.append(("-miphoneos-version-min=", "-target arm64-apple-xros"))
288+
289+
return target_config_patches, clang_config_patches

build_scripts/build_usd.py

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,30 +1061,21 @@ def InstallTBB_MacOS(context, force, buildArgs):
10611061
"ifeq ($(arch),$(filter $(arch),armv7 armv7s {0}))"
10621062
.format(apple_utils.GetTargetArmArch()))])
10631063

1064-
if context.buildTarget == apple_utils.TARGET_VISIONOS:
1065-
# Create visionOS config from iOS config
1064+
if MacOSTargetEmbedded(context) and context.buildTarget != apple_utils.TARGET_IOS:
1065+
target_config_patches, clang_config_patches = apple_utils.GetTBBPatches(context)
1066+
# Create config from iOS config
10661067
shutil.copy(
10671068
src="build/ios.macos.inc",
1068-
dst="build/visionos.macos.inc")
1069+
dst=f"build/{context.buildTarget.lower()}.macos.inc")
10691070

1070-
PatchFile("build/visionos.macos.inc",
1071-
[("ios","visionos"),
1072-
("iOS", "visionOS"),
1073-
("iPhone", "XR"),
1074-
("IPHONEOS","XROS"),
1075-
("?= 8.0", "?= 1.0")])
1071+
PatchFile(f"build/{context.buildTarget.lower()}.macos.inc", target_config_patches)
10761072

10771073
# iOS clang just reuses the macOS one,
10781074
# so it's easier to copy it directly.
10791075
shutil.copy(src="build/macos.clang.inc",
1080-
dst="build/visionos.clang.inc")
1081-
1082-
PatchFile("build/visionos.clang.inc",
1083-
[("ios","visionos"),
1084-
("-miphoneos-version-min=", "-target arm64-apple-xros"),
1085-
("iOS", "visionOS"),
1086-
("iPhone", "XR"),
1087-
("IPHONEOS","XROS")])
1076+
dst=f"build/{context.buildTarget.lower()}.clang.inc")
1077+
1078+
PatchFile(f"build/{context.buildTarget.lower()}.clang.inc",clang_config_patches)
10881079

10891080
(primaryArch, secondaryArch) = apple_utils.GetTargetArchPair(context)
10901081

0 commit comments

Comments
 (0)