Skip to content

Commit a7b3485

Browse files
committed
[xcodegen] Allow swift-plugin-server to be added
Previously we would avoid adding this since it has an invalid module name, but we can follow the same logic as the driver and set the module name to `main`.
1 parent 1d1b260 commit a7b3485

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

utils/swift-xcodegen/Sources/SwiftXcodeGen/BuildArgs/SwiftTargets.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,12 +200,17 @@ struct SwiftTargets {
200200

201201
guard let buildArgs = try computeBuildArgs(for: rule) else { return }
202202

203-
let moduleName = buildArgs.lastValue(for: .moduleName)
203+
// Pick up the module name from the arguments, or use an explicitly
204+
// specified module name if we have one. The latter might be invalid so
205+
// may not be part of the build args (e.g 'swift-plugin-server'), but is
206+
// fine for generation.
207+
let moduleName = buildArgs.lastValue(for: .moduleName) ??
208+
rule.attributes[.swiftModuleName]?.value
204209
guard let moduleName else {
205210
log.debug("! Skipping Swift target with output \(primaryOutput); no module name")
206211
return
207212
}
208-
let moduleLinkName = rule.attributes[.swiftLibraryName]?.value ??
213+
let moduleLinkName = rule.attributes[.swiftLibraryName]?.value ??
209214
buildArgs.lastValue(for: .moduleLinkName)
210215
let name = moduleLinkName ?? moduleName
211216

utils/swift-xcodegen/Sources/SwiftXcodeGen/Generator/ProjectGenerator.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -557,8 +557,10 @@ fileprivate final class ProjectGenerator {
557557

558558
applySubstitutions(to: &buildArgs, target: target, targetInfo: targetInfo)
559559

560+
// Follow the same logic as swift-driver and set the module name to 'main'
561+
// if we don't have one.
560562
let moduleName = buildArgs.takePrintedLastValue(for: .moduleName)
561-
buildSettings.common.PRODUCT_MODULE_NAME = moduleName
563+
buildSettings.common.PRODUCT_MODULE_NAME = moduleName ?? "main"
562564

563565
// Emit a module if we need to.
564566
// TODO: This currently just uses the build rule command args, should we

0 commit comments

Comments
 (0)