diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c43b899..c353b768 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ #### Fixed - Fixed compilation as library by locking down XcodeProj version [#767](https://github.com/yonaskolb/XcodeGen/pull/767) @yonaskolb +- Stabilized sorting of groups with duplicate names/paths. [#671](https://github.com/yonaskolb/XcodeGen/pull/671) @ChristopherRogers +- Moved `Copy Bundle Resources` to after `Link with Libraries` build phase [#768](https://github.com/yonaskolb/XcodeGen/pull/768) @yonaskolb #### Internal - Updated to XcodeProj 7.7.0 [#767](https://github.com/yonaskolb/XcodeGen/pull/767) @yonaskolb @@ -26,7 +28,6 @@ - Fixed resolving relative path passed to `XcodeProj` [#751](https://github.com/yonaskolb/XcodeGen/pull/751) @PycKamil - Prefer configurations named "Debug" or "Release" for default scheme build configurations [#752](https://github.com/yonaskolb/XcodeGen/pull/752) @john-flanagan - Added an extra check for package versions. [#755](https://github.com/yonaskolb/XcodeGen/pull/755) @basvankuijck -- Stabilized sorting of groups with duplicate names/paths. [#671](https://github.com/yonaskolb/XcodeGen/pull/671) @ChristopherRogers #### Internal - Update to SwiftCLI 6.0 and use the new property wrappers [#749](https://github.com/yonaskolb/XcodeGen/pull/749) @yonaskolb diff --git a/Sources/XcodeGenKit/PBXProjGenerator.swift b/Sources/XcodeGenKit/PBXProjGenerator.swift index b3def1a6..b7d25cac 100644 --- a/Sources/XcodeGenKit/PBXProjGenerator.swift +++ b/Sources/XcodeGenKit/PBXProjGenerator.swift @@ -929,15 +929,6 @@ public class PBXProjGenerator { buildPhases.append(resourcesBuildPhase) } - if !copyBundlesReferences.isEmpty { - let copyBundlesPhase = addObject(PBXCopyFilesBuildPhase( - dstSubfolderSpec: .resources, - name: "Copy Bundles to Resources directory", - files: copyBundlesReferences - )) - buildPhases.append(copyBundlesPhase) - } - let swiftObjCInterfaceHeader = project.getCombinedBuildSetting("SWIFT_OBJC_INTERFACE_HEADER_NAME", target: target, config: project.configs[0]) as? String if target.type == .staticLibrary @@ -989,6 +980,15 @@ public class PBXProjGenerator { buildPhases.append(frameworkBuildPhase) } + if !copyBundlesReferences.isEmpty { + let copyBundlesPhase = addObject(PBXCopyFilesBuildPhase( + dstSubfolderSpec: .resources, + name: "Copy Bundle Resources", + files: copyBundlesReferences + )) + buildPhases.append(copyBundlesPhase) + } + if !extensions.isEmpty { let copyFilesPhase = addObject( diff --git a/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj b/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj index 0c06dd42..cecb9dae 100644 --- a/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj +++ b/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj @@ -54,6 +54,7 @@ 339578307B9266AB3D7722D9 /* File2.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC56891DA7446EAC8C2F27EB /* File2.swift */; }; 3535891EC86283BB5064E7E1 /* Headers in Headers */ = {isa = PBXBuildFile; fileRef = 2E1E747C7BC434ADB80CC269 /* Headers */; settings = {ATTRIBUTES = (Public, ); }; }; 3788E1382B38DF4ACE3D2BB1 /* MyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A58A16491CDDF968B0D56DE /* MyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3BBCA6F76E5F212E9C55FB78 /* BundleX.bundle in Copy Bundle Resources */ = {isa = PBXBuildFile; fileRef = 45C12576F5AA694DD0CE2132 /* BundleX.bundle */; }; 3C5134EE524310ACF7B7CD6E /* ExtensionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CAF6C55B555E3E1352645B6 /* ExtensionDelegate.swift */; }; 42BC5788871D1D838B253952 /* App_watchOS Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 0D09D243DBCF9D32E239F1E8 /* App_watchOS Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 447D59BE2E0993D7245EA247 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3797E591F302ECC0AA2FC607 /* Assets.xcassets */; }; @@ -125,7 +126,6 @@ E5DD0AD6F7AE1DD4AF98B83E /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = 65C8D6D1DDC1512D396C07B7 /* Localizable.stringsdict */; }; E8A135F768448632F8D77C8F /* StandaloneAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3571E41E19A5AB8AAAB04109 /* StandaloneAssets.xcassets */; }; EB29B16FF4DE8A7F3EDD0A0F /* ExternalTarget.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DCDCD083AABD1D30EA34576 /* ExternalTarget.framework */; }; - F07FC32458F3193917261C15 /* BundleX.bundle in Copy Bundles to Resources directory */ = {isa = PBXBuildFile; fileRef = 45C12576F5AA694DD0CE2132 /* BundleX.bundle */; }; F5D71267BB5A326BDD69D532 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E55F45EACB0F382722D61C8D /* Assets.xcassets */; }; F6537CE373C94809E6653758 /* Headers in Headers */ = {isa = PBXBuildFile; fileRef = 2E1E747C7BC434ADB80CC269 /* Headers */; settings = {ATTRIBUTES = (Public, ); }; }; F7423E8738EECF04795C7601 /* InterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3F6BCB5FEFB16F1BA368059 /* InterfaceController.swift */; }; @@ -335,16 +335,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 32C3437B0218811108366142 /* Copy Bundles to Resources directory */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstSubfolderSpec = 7; - files = ( - F07FC32458F3193917261C15 /* BundleX.bundle in Copy Bundles to Resources directory */, - ); - name = "Copy Bundles to Resources directory"; - runOnlyForDeploymentPostprocessing = 0; - }; 6CB76DFA8662672C4245AF41 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -422,6 +412,16 @@ name = "Embed App Extensions"; runOnlyForDeploymentPostprocessing = 0; }; + E8BC0F358D693454E5027ECC /* Copy Bundle Resources */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstSubfolderSpec = 7; + files = ( + 3BBCA6F76E5F212E9C55FB78 /* BundleX.bundle in Copy Bundle Resources */, + ); + name = "Copy Bundle Resources"; + runOnlyForDeploymentPostprocessing = 0; + }; F8CDEFED6ED131A09041F995 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -1178,10 +1178,10 @@ buildPhases = ( 6F573D15DE1F149EF128C492 /* Sources */, 8508BA1B733839E314AF2853 /* Resources */, - 32C3437B0218811108366142 /* Copy Bundles to Resources directory */, 865AAD9909027AC34D1374EA /* CopyFiles */, 37182EC208DBF03DB1BAF452 /* Carthage */, 117840B4DBC04099F6779D00 /* Frameworks */, + E8BC0F358D693454E5027ECC /* Copy Bundle Resources */, FE78CC3322C9C2DB1D64EAAA /* Embed Frameworks */, 807155B9081529D99AAB4743 /* Embed Watch Content */, 71A4CC6ECC8522178F566E7B /* Strip Unused Architectures from Frameworks */,