Files
XcodeGen/Sources/ProjectSpec/Linkage.swift
T
Aleksei Sapitskii c082bc0c7c Fix XcodeGen building after XcodeProj update to 8.8.0 (#1228)
* Fix XcodeGen building after XcodeProj update to 8.8.0

**Reason**
- XcodeProj has been updated and has API breaking changes

**Content**
- Added new enum case handling in `Linkage`
- Renamed the enum case name for `XCWorkspaceDataFileRef.init`

* add new product type to docs

* update changelog

Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
2022-07-16 16:46:42 +10:00

62 lines
1.5 KiB
Swift

import Foundation
import XcodeProj
public enum Linkage {
case dynamic
case `static`
case none
}
extension Target {
public var defaultLinkage: Linkage {
switch type {
case .none,
.appExtension,
.application,
.bundle,
.commandLineTool,
.instrumentsPackage,
.intentsServiceExtension,
.messagesApplication,
.messagesExtension,
.metalLibrary,
.ocUnitTestBundle,
.onDemandInstallCapableApplication,
.stickerPack,
.tvExtension,
.uiTestBundle,
.unitTestBundle,
.watchApp,
.watchExtension,
.watch2App,
.watch2AppContainer,
.watch2Extension,
.xcodeExtension,
.xpcService,
.systemExtension,
.driverExtension,
.extensionKitExtension:
return .none
case .framework, .xcFramework:
// Check the MACH_O_TYPE for "Static Framework"
if settings.buildSettings.machOType == "staticlib" {
return .static
} else {
return .dynamic
}
case .dynamicLibrary:
return .dynamic
case .staticLibrary, .staticFramework:
return .static
}
}
}
private extension BuildSettings {
var machOType: String? {
self["MACH_O_TYPE"] as? String
}
}