Skip to content

Commit 8df67c9

Browse files
committed
Only migrate the last swift-sdks setting when cascading build presets
Looping over these can cause CMake errors if a later preset tries to override swift-sdks. rdar://problem/27085666
1 parent 26ade95 commit 8df67c9

File tree

1 file changed

+30
-23
lines changed

1 file changed

+30
-23
lines changed

utils/SwiftBuildSupport.py

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -143,30 +143,37 @@ def get_preset_options(substitutions, preset_file_names, preset_name):
143143
"': " + ", ".join(missing_opts))
144144

145145
# Migrate 'swift-sdks' parameter to 'stdlib-deployment-targets'
146-
for opt in build_script_impl_opts:
147-
if opt.startswith("--swift-sdks"):
148-
sdks_to_configure = opt.split("=")[1].split(";")
149-
tgts = []
150-
# Expand SDKs in to their deployment targets
151-
from swift_build_support.targets import StdlibDeploymentTarget
152-
for sdk in sdks_to_configure:
153-
if sdk == "OSX":
154-
tgts += StdlibDeploymentTarget.OSX.targets
155-
elif sdk == "IOS":
156-
tgts += StdlibDeploymentTarget.iOS.targets
157-
elif sdk == "IOS_SIMULATOR":
158-
tgts += StdlibDeploymentTarget.iOSSimulator.targets
159-
elif sdk == "TVOS":
160-
tgts += StdlibDeploymentTarget.AppleTV.targets
161-
elif sdk == "TVOS_SIMULATOR":
162-
tgts += StdlibDeploymentTarget.AppleTVSimulator.targets
163-
elif sdk == "WATCHOS":
164-
tgts += StdlibDeploymentTarget.AppleWatch.targets
165-
elif sdk == "WATCHOS_SIMULATOR":
166-
tgts += StdlibDeploymentTarget.AppleWatchSimulator.targets
167-
168-
build_script_opts.append("--stdlib-deployment-targets=" +
146+
swift_sdks_opts = [opt for opt in build_script_impl_opts
147+
if opt.startswith("--swift-sdks")]
148+
try:
149+
swift_sdks_opt = swift_sdks_opts[-1]
150+
except IndexError:
151+
swift_sdks_opt = None
152+
153+
if swift_sdks_opt is not None:
154+
sdks_to_configure = swift_sdks_opt.split("=")[1].split(";")
155+
tgts = []
156+
# Expand SDKs in to their deployment targets
157+
from swift_build_support.targets import StdlibDeploymentTarget
158+
for sdk in sdks_to_configure:
159+
if sdk == "OSX":
160+
tgts += StdlibDeploymentTarget.OSX.targets
161+
elif sdk == "IOS":
162+
tgts += StdlibDeploymentTarget.iOS.targets
163+
elif sdk == "IOS_SIMULATOR":
164+
tgts += StdlibDeploymentTarget.iOSSimulator.targets
165+
elif sdk == "TVOS":
166+
tgts += StdlibDeploymentTarget.AppleTV.targets
167+
elif sdk == "TVOS_SIMULATOR":
168+
tgts += StdlibDeploymentTarget.AppleTVSimulator.targets
169+
elif sdk == "WATCHOS":
170+
tgts += StdlibDeploymentTarget.AppleWatch.targets
171+
elif sdk == "WATCHOS_SIMULATOR":
172+
tgts += StdlibDeploymentTarget.AppleWatchSimulator.targets
173+
174+
build_script_opts.append("--stdlib-deployment-targets=" +
169175
" ".join([tgt.name for tgt in tgts]))
176+
170177
# Filter the swift-sdks parameter
171178
build_script_impl_opts = [opt for opt in build_script_impl_opts
172179
if not opt.startswith("--swift-sdks")]

0 commit comments

Comments
 (0)