diff --git a/Docs/ProjectSpec.md b/Docs/ProjectSpec.md index c99f14628..928f51b84 100644 --- a/Docs/ProjectSpec.md +++ b/Docs/ProjectSpec.md @@ -127,7 +127,7 @@ Note that target names can also be changed by adding a `name` property to a targ - [ ] **fileTypes**: **[String: [FileType](#filetype)]** - A list of default file options for specific file extensions across the project. Values in [Sources](#sources) will overwrite these settings. - [ ] **preGenCommand**: **String** - A bash command to run before the project has been generated. If the project isn't generated due to no changes when using the cache then this won't run. This is useful for running things like generating resources files before the project is regenerated. - [ ] **postGenCommand**: **String** - A bash command to run after the project has been generated. If the project isn't generated due to no changes when using the cache then this won't run. This is useful for running things like `pod install` only if the project is actually regenerated. -- [ ] **useBaseInternationalization**: **Bool** If this is `false` and your project does not include resources located in a **Base.lproj** directory then `Base` will not be included in the projects 'known regions'. The default value is `true`. +- [ ] **useBaseInternationalization**: **Bool** If this is `false` and your project does not include resources located in a **Base.lproj** directory then `Base` will not be included in the projects 'known regions'. The default value is `true`. - [ ] **schemePathPrefix**: **String** - A path prefix for relative paths in schemes, such as StoreKitConfiguration. The default is `"../../"`, which is suitable for non-workspace projects. For use in workspaces, use `"../"`. ```yaml @@ -147,7 +147,7 @@ Describe an order of groups. Available parameters: ```yaml options: - groupOrdering: + groupOrdering: - order: [Sources, Resources, Tests, Support files, Configurations] - pattern: '^.*Screen$' order: [View, Presenter, Interactor, Entities, Assembly] @@ -426,7 +426,7 @@ A dependency can be one of a 6 types: **Linking options**: - [ ] **embed**: **Bool** - Whether to embed the dependency. Defaults to true for application target and false for non application targets. -- [ ] **link**: **Bool** - Whether to link the dependency. Defaults to `true` depending on the type of the dependency and the type of the target (e.g. static libraries will only link to executables by default). +- [ ] **link**: **Bool** - Whether to link the dependency. Defaults to `true` depending on the type of the dependency and the type of the target (e.g. static libraries and frameworks will only link to executables by default). - [ ] **codeSign**: **Bool** - Whether the `codeSignOnCopy` setting is applied when embedding framework. Defaults to true - [ ] **removeHeaders**: **Bool** - Whether the `removeHeadersOnCopy` setting is applied when embedding the framework. Defaults to true - [ ] **weak**: **Bool** - Whether the `Weak` setting is applied when linking the framework. Defaults to false @@ -525,7 +525,7 @@ packages: targets: App: dependencies: - - package: Yams + - package: Yams - package: SwiftPM product: SPMUtility ``` @@ -730,7 +730,7 @@ Any attributes defined within a targets `templateAttributes` will be used to rep ```yaml targets: MyFramework: - templates: + templates: - Framework templateAttributes: frameworkName: AwesomeFramework @@ -845,7 +845,7 @@ A multiline script can be written using the various YAML multiline methods, for ### Simulate Location -- [x] **allow**: **Bool** - enable location simulation +- [x] **allow**: **Bool** - enable location simulation - [ ] **defaultLocation**: **String** - set the default location, possible values: - `London, England` - `Johannesburg, South Africa` @@ -859,9 +859,9 @@ A multiline script can be written using the various YAML multiline methods, for - `Mexico City, Mexico` - `New York, NY, USA` - `Rio de Janeiro, Brazil` - - `` (e.g. ./location.gpx) + - `` (e.g. ./location.gpx) Setting the **defaultLocation** to a custom gpx file, you also need to add that file to `fileGroups` for Xcode be able to use it: - + ```yaml targets: MyTarget: @@ -897,8 +897,8 @@ schemes: coverageTargets: - MyTarget1 - ExternalTarget/OtherTarget1 - targets: - - Tester1 + targets: + - Tester1 - name: Tester2 parallelizable: true randomExecutionOrder: true @@ -966,7 +966,7 @@ Swift packages are defined at a project level, and then linked to individual tar - `branch: master` - `revision: xxxxxx` - [ ] **github** : **String**- this is an optional helper you can use for github repos. Instead of specifying the full url in `url` you can just specify the github org and repo - + ### Local Package - [x] **path**: **String** - the path to the package in local. The path must be directory with a `Package.swift`. diff --git a/Sources/XcodeGenKit/PBXProjGenerator.swift b/Sources/XcodeGenKit/PBXProjGenerator.swift index 4496f548c..873e0fce7 100644 --- a/Sources/XcodeGenKit/PBXProjGenerator.swift +++ b/Sources/XcodeGenKit/PBXProjGenerator.swift @@ -708,7 +708,7 @@ public class PBXProjGenerator { func processTargetDependency(_ dependency: Dependency, dependencyTarget: Target, embedFileReference: PBXFileElement?, platform: String?) { let dependencyLinkage = dependencyTarget.defaultLinkage let link = dependency.link ?? - ((dependencyLinkage == .dynamic && target.type != .staticLibrary) || + ((dependencyLinkage == .dynamic && target.defaultLinkage != .static) || (dependencyLinkage == .static && target.type.isExecutable)) if link, let dependencyFile = embedFileReference { diff --git a/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj b/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj index 854a725f6..978b2aa90 100644 --- a/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj +++ b/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj @@ -32,6 +32,7 @@ 0927149520F12314CE8B4079 /* TestFramework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E43116070AFEF5D8C3A5A957 /* TestFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 0932FB6FB887D7D6F7727CB7 /* Driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 432E2C071A4B6B3757BEA13E /* Driver.cpp */; }; 09617AB755651FFEB2564CBC /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F1A2F579A6F79C62DDA0571 /* AppDelegate.swift */; settings = {COMPILER_FLAGS = "-Werror"; }; }; + 0A5DA755D93500431FA3A2C2 /* MyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A58A16491CDDF968B0D56DE /* MyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0AB541AE3163B063E7012877 /* StaticLibrary_ObjC.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5A2B916A11DCC2565241359F /* StaticLibrary_ObjC.h */; }; 0BDA156BEBFCB9E65910F838 /* MyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A58A16491CDDF968B0D56DE /* MyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0F99AECCB4691803C791CDCE /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2FC2A8A829CE71B1CF415FF7 /* Main.storyboard */; }; @@ -106,6 +107,7 @@ 76DC6A4B18F434BAC239CC4A /* DriverKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A428E67153BB40184F37BE /* DriverKit.framework */; }; 778F71CA1CC4BEECDACAD8B9 /* Result.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0C5AC2545AE4D4F7F44E2E9B /* Result.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 77C3CB285572EA4BB7E201A7 /* App_Clip.app in Embed App Clips */ = {isa = PBXBuildFile; fileRef = 38DB679FF1CF4E379D1AB103 /* App_Clip.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 787568DA28690B22EA97A647 /* MyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A58A16491CDDF968B0D56DE /* MyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7A0DABBEA55B06E148C665A8 /* StaticLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AC91042453E18DF74BA1C0F /* StaticLibrary.swift */; }; 7A8C78212CEAC6452DFAB00E /* FrameworkFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A5F527F2590C14956518174 /* FrameworkFile.swift */; }; 7C8FF0B857E390417134C10F /* Result.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D296BB7355994040E197A1EE /* Result.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -120,6 +122,7 @@ 94FD20C3EA5EBCEC8783740C /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = BDCA996D141DD8A16B18D68F /* GoogleService-Info.plist */; }; 95DD9941E1529FD2AE1A191D /* StaticLibrary_ObjC.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5A2B916A11DCC2565241359F /* StaticLibrary_ObjC.h */; }; 96B55C0F660235FE6BDD8869 /* MyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A58A16491CDDF968B0D56DE /* MyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 96F875FD0C6A377081214B59 /* FrameworkFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A5F527F2590C14956518174 /* FrameworkFile.swift */; }; 998CCB995347CBB8EDC95FB5 /* FrameworkFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A5F527F2590C14956518174 /* FrameworkFile.swift */; }; 9AB50B81C29243936BB419E4 /* FrameworkFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A5F527F2590C14956518174 /* FrameworkFile.swift */; }; 9C92B7C89E5F0A10A34F5AA4 /* Framework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8A9274BE42A03DC5DA1FAD04 /* Framework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -163,6 +166,7 @@ E4B41CB5C796DD2C3C2E564C /* MyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A58A16491CDDF968B0D56DE /* MyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; E4D0F435405DABCB51C5B684 /* TestFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E43116070AFEF5D8C3A5A957 /* TestFramework.framework */; }; E5DD0AD6F7AE1DD4AF98B83E /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = 65C8D6D1DDC1512D396C07B7 /* Localizable.stringsdict */; }; + E5EFFDC9EFA488088F43C6CC /* FrameworkFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A5F527F2590C14956518174 /* FrameworkFile.swift */; }; E7B40B34D8807F43A3805381 /* ExternalTarget.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6ADE654A3459AFDA2CC0CD3 /* ExternalTarget.framework */; }; E8A135F768448632F8D77C8F /* StandaloneAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3571E41E19A5AB8AAAB04109 /* StandaloneAssets.xcassets */; }; EDB55692D392FD09C3FCFBF6 /* libStaticLibrary_ObjC.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 86169DEEDEAF09AB89C8A31D /* libStaticLibrary_ObjC.a */; }; @@ -226,6 +230,13 @@ remoteGlobalIDString = 0867B0DACEF28C11442DE8F7; remoteInfo = App_iOS; }; + 3BEDE32249EDD84B7D761D48 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0FBAE303E3CFC2ABAC876A77 /* Project object */; + proxyType = 1; + remoteGlobalIDString = CE7D183D3752B5B35D2D8E6D; + remoteInfo = Framework2_iOS; + }; 45907115465077029040BF29 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0FBAE303E3CFC2ABAC876A77 /* Project object */; @@ -303,6 +314,13 @@ remoteGlobalIDString = 53A3B531E3947D8A8722745E; remoteInfo = Framework_macOS; }; + 7FD805EDC469A9A577302404 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0FBAE303E3CFC2ABAC876A77 /* Project object */; + proxyType = 1; + remoteGlobalIDString = CE7D183D3752B5B35D2D8E6D; + remoteInfo = Framework2_iOS; + }; 8BAA7F3717FCBE0B8D6669B3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0FBAE303E3CFC2ABAC876A77 /* Project object */; @@ -352,6 +370,13 @@ remoteGlobalIDString = 0867B0DACEF28C11442DE8F7; remoteInfo = App_iOS; }; + C9DD6F34368E555A9F20E552 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0FBAE303E3CFC2ABAC876A77 /* Project object */; + proxyType = 1; + remoteGlobalIDString = CE7D183D3752B5B35D2D8E6D; + remoteInfo = Framework2_iOS; + }; CB8F4B3FDD84A2A6F3CA7F4C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0FBAE303E3CFC2ABAC876A77 /* Project object */; @@ -790,12 +815,14 @@ D8A016580A3B8F72B820BFBF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; DAA7880242A9DE61E68026CC /* Folder */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Folder; sourceTree = SOURCE_ROOT; }; DFE6A6FAAFF701FE729293DE /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + E03958429D2EA25E13A4F4DF /* FrameworkStatic.framework */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.framework; path = FrameworkStatic.framework; sourceTree = BUILT_PRODUCTS_DIR; }; E3958AB20082EA12D4D5E60C /* BundleY.bundle */ = {isa = PBXFileReference; lastKnownFileType = wrapper.cfbundle; path = BundleY.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; E42335D1200CB7B8B91E962F /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = Base; path = Base.lproj/Localizable.stringsdict; sourceTree = ""; }; E43116070AFEF5D8C3A5A957 /* TestFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TestFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; E55F45EACB0F382722D61C8D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; E5E0A80CCE8F8DB662DCD2D0 /* EndpointSecuritySystemExtension.systemextension */ = {isa = PBXFileReference; explicitFileType = "wrapper.system-extension"; includeInIndex = 0; path = EndpointSecuritySystemExtension.systemextension; sourceTree = BUILT_PRODUCTS_DIR; }; E9672EF8FE1DDC8DE0705129 /* PushNotificationPayload.apns */ = {isa = PBXFileReference; lastKnownFileType = text; path = PushNotificationPayload.apns; sourceTree = ""; }; + EA3B9EC2F76EEEAE28C965BA /* FrameworkWithStaticlibMatchOType.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FrameworkWithStaticlibMatchOType.framework; sourceTree = BUILT_PRODUCTS_DIR; }; EDCC70978B8AD49373DA0DE0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; EE1343F2238429D4DA9D830B /* File1.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = File1.swift; path = Group/File1.swift; sourceTree = ""; }; F0D48A913C087D049C8EDDD7 /* App.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = App.entitlements; sourceTree = ""; }; @@ -1282,6 +1309,8 @@ 2233774B86539B1574D206B0 /* Framework2.framework */, A0DC40025AB59B688E758829 /* Framework2.framework */, AB055761199DF36DB0C629A6 /* Framework2.framework */, + E03958429D2EA25E13A4F4DF /* FrameworkStatic.framework */, + EA3B9EC2F76EEEAE28C965BA /* FrameworkWithStaticlibMatchOType.framework */, 9A87A926D563773658FB87FE /* iMessageApp.app */, D629E142AB87C681D4EC90F7 /* iMessageExtension.appex */, C53ACB2962FED621389C36A2 /* iMessageStickersExtension.appex */, @@ -1476,6 +1505,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 678DC986851A2099BA3BAC9F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 787568DA28690B22EA97A647 /* MyFramework.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 85324A7388DEC869665BFA99 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1493,6 +1530,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D1C23C7C51130F15198430A5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0A5DA755D93500431FA3A2C2 /* MyFramework.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; F21F013CBD830972394A3A13 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1666,6 +1711,7 @@ buildRules = ( ); dependencies = ( + A0B8F3A22F25118E70F81D65 /* PBXTargetDependency */, ); name = StaticLibrary_Swift; productName = StaticLibrary_Swift; @@ -2128,6 +2174,40 @@ productReference = 22237B8EBD9E6BE8EBC8735F /* XPC Service.xpc */; productType = "com.apple.product-type.xpc-service"; }; + EC87E8E84A74226BDF19B68B /* FrameworkStatic */ = { + isa = PBXNativeTarget; + buildConfigurationList = 37A23B9E298A43A241DD2E58 /* Build configuration list for PBXNativeTarget "FrameworkStatic" */; + buildPhases = ( + D1C23C7C51130F15198430A5 /* Headers */, + 24EB6BAACD2F34C1DFDB54A1 /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + C2B6EBFFC9B189C03AE4B796 /* PBXTargetDependency */, + ); + name = FrameworkStatic; + productName = FrameworkStatic; + productReference = E03958429D2EA25E13A4F4DF /* FrameworkStatic.framework */; + productType = "com.apple.product-type.framework.static"; + }; + F07941085210A1CCBEB72EDB /* FrameworkWithStaticlibMatchOType */ = { + isa = PBXNativeTarget; + buildConfigurationList = DC00F79D2E5780C76B1CD2A6 /* Build configuration list for PBXNativeTarget "FrameworkWithStaticlibMatchOType" */; + buildPhases = ( + 678DC986851A2099BA3BAC9F /* Headers */, + D3399C3E3A574B2B179DC638 /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + 1D9A6D7935A8F7C6007C9E31 /* PBXTargetDependency */, + ); + name = FrameworkWithStaticlibMatchOType; + productName = FrameworkWithStaticlibMatchOType; + productReference = EA3B9EC2F76EEEAE28C965BA /* FrameworkWithStaticlibMatchOType.framework */; + productType = "com.apple.product-type.framework"; + }; F674B2CFC4738EEC49BAD0DA /* App_iOS_UITests */ = { isa = PBXNativeTarget; buildConfigurationList = 68CC35789B0DB020E2CFC517 /* Build configuration list for PBXNativeTarget "App_iOS_UITests" */; @@ -2228,6 +2308,8 @@ FC26AF2506D3B2B40DE8A5F8 /* Framework2_macOS */, 8B9A14DC280CCE013CC86440 /* Framework2_tvOS */, 6ED01BC471A8C3642258E178 /* Framework2_watchOS */, + EC87E8E84A74226BDF19B68B /* FrameworkStatic */, + F07941085210A1CCBEB72EDB /* FrameworkWithStaticlibMatchOType */, AE3F93DB94E7208F2F1D9A78 /* Framework_iOS */, 53A3B531E3947D8A8722745E /* Framework_macOS */, 536ACF18E4603B59207D43CE /* Framework_tvOS */, @@ -2585,6 +2667,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 24EB6BAACD2F34C1DFDB54A1 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 96F875FD0C6A377081214B59 /* FrameworkFile.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 2E1429F0FB524A2BCFC61DF1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2787,6 +2877,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D3399C3E3A574B2B179DC638 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E5EFFDC9EFA488088F43C6CC /* FrameworkFile.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; DEB2782C650F563EB8C62B28 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2860,6 +2958,11 @@ target = 9F551F66949B55E8328EB995 /* EndpointSecuritySystemExtension */; targetProxy = DD32A97CFD2016BF1477CF6C /* PBXContainerItemProxy */; }; + 1D9A6D7935A8F7C6007C9E31 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = CE7D183D3752B5B35D2D8E6D /* Framework2_iOS */; + targetProxy = 7FD805EDC469A9A577302404 /* PBXContainerItemProxy */; + }; 2D1B4333107E10912508724E /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 0636AAF06498C336E1CEEDE4 /* TestFramework */; @@ -2925,6 +3028,11 @@ target = 834F55973F05AC8A18144DB0 /* iMessageApp */; targetProxy = 57F1BE74D4C4252529F97984 /* PBXContainerItemProxy */; }; + A0B8F3A22F25118E70F81D65 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = CE7D183D3752B5B35D2D8E6D /* Framework2_iOS */; + targetProxy = C9DD6F34368E555A9F20E552 /* PBXContainerItemProxy */; + }; A19BEE3154D879101F865BB2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = D137C04B64B7052419A2DF4E /* App_Clip */; @@ -2951,6 +3059,11 @@ target = AE3F93DB94E7208F2F1D9A78 /* Framework_iOS */; targetProxy = 7E37A3C0A67C3B6363029A18 /* PBXContainerItemProxy */; }; + C2B6EBFFC9B189C03AE4B796 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = CE7D183D3752B5B35D2D8E6D /* Framework2_iOS */; + targetProxy = 3BEDE32249EDD84B7D761D48 /* PBXContainerItemProxy */; + }; CE96B0951433713033A03DCD /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 93542A75A613F00FDB5C9C63 /* StaticLibrary_ObjC_tvOS */; @@ -3517,6 +3630,29 @@ }; name = "Test Release"; }; + 12385B4E1357CE1DAD2673E2 /* Test Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.project.FrameworkStatic; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Test Debug"; + }; 12BCDE0EFCEE621B881E424C /* Test Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4759,6 +4895,30 @@ }; name = "Production Release"; }; + 5871004CB8EEE89670160C2B /* Test Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = com.project.FrameworkWithStaticlibMatchOType; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Test Debug"; + }; 5876AA17762F3248F4FD66E1 /* Staging Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4966,6 +5126,30 @@ }; name = "Staging Debug"; }; + 6629D3D6B3FB48E0469CAA62 /* Staging Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = com.project.FrameworkWithStaticlibMatchOType; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Staging Release"; + }; 6645E6A343F71C3E91656BE9 /* Test Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4996,6 +5180,29 @@ }; name = "Staging Debug"; }; + 67BE8647DA01F4DF988A95E1 /* Staging Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.project.FrameworkStatic; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Staging Release"; + }; 6A11812952F34525D14A4104 /* Staging Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -5115,6 +5322,29 @@ }; name = "Staging Release"; }; + 77C889EB3D8CFD32B0A9F4AC /* Production Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.project.FrameworkStatic; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Production Debug"; + }; 7931F229200F89B8CDC8A5E3 /* Test Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6433,6 +6663,30 @@ }; name = "Test Release"; }; + BDCD4A3E057389FEE0DF13A0 /* Production Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = com.project.FrameworkWithStaticlibMatchOType; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Production Release"; + }; BF2F04729CC0602591655B25 /* Production Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6447,6 +6701,30 @@ }; name = "Production Debug"; }; + BFCE7920B9D3F6DEF267C5FE /* Staging Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = com.project.FrameworkWithStaticlibMatchOType; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Staging Debug"; + }; C00DBF60DC8C1A570738241F /* Test Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6874,6 +7152,29 @@ }; name = "Production Debug"; }; + D7484559A7F3857CC2D13158 /* Test Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.project.FrameworkStatic; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Test Release"; + }; D8267FD376089FF4497ED3F1 /* Staging Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6941,6 +7242,29 @@ }; name = "Test Release"; }; + DB6CFB9D9E7669D0A33AD7AD /* Production Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.project.FrameworkStatic; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Production Release"; + }; DC80DC0AF0B4F2B51DAB0A52 /* Test Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -7208,6 +7532,29 @@ }; name = "Production Debug"; }; + E5846629B2006519A9D30153 /* Staging Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.project.FrameworkStatic; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Staging Debug"; + }; E5854B94A71A091D61E6ACD3 /* Staging Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -7498,6 +7845,30 @@ }; name = "Staging Release"; }; + F2144BEA8F6841152DE11387 /* Test Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = com.project.FrameworkWithStaticlibMatchOType; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Test Release"; + }; F3AC6A112F81D0958A316D82 /* Test Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -7555,6 +7926,30 @@ }; name = "Staging Debug"; }; + F4EA092A68EE7A4C623E5426 /* Production Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = com.project.FrameworkWithStaticlibMatchOType; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Production Debug"; + }; F75CC02D1BB9B39C329A9B43 /* Staging Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -7844,6 +8239,19 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = "Production Debug"; }; + 37A23B9E298A43A241DD2E58 /* Build configuration list for PBXNativeTarget "FrameworkStatic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 77C889EB3D8CFD32B0A9F4AC /* Production Debug */, + DB6CFB9D9E7669D0A33AD7AD /* Production Release */, + E5846629B2006519A9D30153 /* Staging Debug */, + 67BE8647DA01F4DF988A95E1 /* Staging Release */, + 12385B4E1357CE1DAD2673E2 /* Test Debug */, + D7484559A7F3857CC2D13158 /* Test Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Production Debug"; + }; 3F3C272D2EA61F6B88B80D44 /* Build configuration list for PBXNativeTarget "App_watchOS Extension" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -8234,6 +8642,19 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = "Production Debug"; }; + DC00F79D2E5780C76B1CD2A6 /* Build configuration list for PBXNativeTarget "FrameworkWithStaticlibMatchOType" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F4EA092A68EE7A4C623E5426 /* Production Debug */, + BDCD4A3E057389FEE0DF13A0 /* Production Release */, + BFCE7920B9D3F6DEF267C5FE /* Staging Debug */, + 6629D3D6B3FB48E0469CAA62 /* Staging Release */, + 5871004CB8EEE89670160C2B /* Test Debug */, + F2144BEA8F6841152DE11387 /* Test Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Production Debug"; + }; ED1A174BA92C6E5172B519B7 /* Build configuration list for PBXNativeTarget "iMessageExtension" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Tests/Fixtures/TestProject/project.yml b/Tests/Fixtures/TestProject/project.yml index 4ba1de245..96f8d579d 100644 --- a/Tests/Fixtures/TestProject/project.yml +++ b/Tests/Fixtures/TestProject/project.yml @@ -270,6 +270,8 @@ targets: type: library.static platform: iOS sources: StaticLibrary_Swift + dependencies: + - target: Framework2_iOS Framework: type: framework @@ -298,6 +300,30 @@ targets: - path: Framework excludes: - "*.xcodeproj" + + FrameworkStatic: + type: framework.static + platform: iOS + sources: + - path: Framework + excludes: + - "*.xcodeproj" + dependencies: + - target: Framework2_iOS + + FrameworkWithStaticlibMatchOType: + type: framework + platform: iOS + settings: + base: + MACH_O_TYPE: staticlib + sources: + - path: Framework + excludes: + - "*.xcodeproj" + dependencies: + - target: Framework2_iOS + TestFramework: type: framework platform: iOS @@ -411,7 +437,7 @@ schemes: defaultLocation: Honolulu, HI, USA customLLDBInit: ${SRCROOT}/.lldbinit storeKitConfiguration: "App_iOS/Configuration.storekit" - macroExpansion: App_iOS + macroExpansion: App_iOS test: gatherCoverageData: true targets: