diff --git a/Sources/PackageModel/ManifestSourceGeneration.swift b/Sources/PackageModel/ManifestSourceGeneration.swift index 23873f79158..1809a631a04 100644 --- a/Sources/PackageModel/ManifestSourceGeneration.swift +++ b/Sources/PackageModel/ManifestSourceGeneration.swift @@ -407,7 +407,19 @@ fileprivate extension SourceCodeFragment { case "watchos": return SourceCodeFragment(enum: "watchOS") case "visionos": return SourceCodeFragment(enum: "visionOS") case "driverkit": return SourceCodeFragment(enum: "driverKit") - default: return SourceCodeFragment(enum: platformName) + + // Among known cases, those not requiring capitalization changes + case "linux", "windows", "android", "wasi", "openbsd": + return SourceCodeFragment(enum: platformName) + + // Known cases but not yet available + case "freebsd": fallthrough + default: + // For unknown cases, output using custom notation + return SourceCodeFragment( + enum: "custom", + subnodes: [.init(string: platformName)] + ) } } if !platformNodes.isEmpty { diff --git a/Tests/WorkspaceTests/ManifestSourceGenerationTests.swift b/Tests/WorkspaceTests/ManifestSourceGenerationTests.swift index 18e5ccfab44..3e7d4a15ba6 100644 --- a/Tests/WorkspaceTests/ManifestSourceGenerationTests.swift +++ b/Tests/WorkspaceTests/ManifestSourceGenerationTests.swift @@ -503,7 +503,8 @@ final class ManifestSourceGenerationTests: XCTestCase { dependencies: [ .target(name: "MyLib", condition: .when(platforms: [ .macOS, .macCatalyst, .iOS, .tvOS, .watchOS, .visionOS, - .driverKit, .linux, .windows, .android, .wasi, .openbsd + .driverKit, .linux, .windows, .android, .wasi, .openbsd, + .custom("freebsd"), .custom("toasterOS") ])) ] ),