diff --git a/Examples/Podfile b/Examples/Podfile index a332fba4..77c965e1 100644 --- a/Examples/Podfile +++ b/Examples/Podfile @@ -30,3 +30,21 @@ target 'ResourceApp-watchOS-Extension' do rswiftlib end + +target 'App' do + platform :ios, '9.0' + project 'RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks' + rswiftlib +end + +target 'Foo' do + platform :ios, '9.0' + project 'RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks' + rswiftlib +end + +target 'Bar' do + platform :ios, '9.0' + project 'RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks' + rswiftlib +end diff --git a/Examples/Podfile.lock b/Examples/Podfile.lock index 61ddfd61..8551664d 100644 --- a/Examples/Podfile.lock +++ b/Examples/Podfile.lock @@ -23,6 +23,6 @@ SPEC CHECKSUMS: R.swift.Library: 5ba4f1631300caf9a4d890186930da85d540769d SWRevealViewController: 6d3fd97f70112fd7cef9de14df4260eacce4c63a -PODFILE CHECKSUM: f469d71063f69d445c904540c317082849a4d112 +PODFILE CHECKSUM: d9a891a898cc2f561fdd4b8424cb30a1e14741d9 COCOAPODS: 1.11.2 diff --git a/Examples/RswiftAppWithStaticFrameworks/App/Info.plist b/Examples/RswiftAppWithStaticFrameworks/App/Info.plist new file mode 100644 index 00000000..5b531f7b --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/App/Info.plist @@ -0,0 +1,66 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + UIApplicationSupportsIndirectInputEvents + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Examples/RswiftAppWithStaticFrameworks/App/Resources/Assets.xcassets/AccentColor.colorset/Contents.json b/Examples/RswiftAppWithStaticFrameworks/App/Resources/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000..eb878970 --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/App/Resources/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Examples/RswiftAppWithStaticFrameworks/App/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/Examples/RswiftAppWithStaticFrameworks/App/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..9221b9bb --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/App/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Examples/RswiftAppWithStaticFrameworks/App/Resources/Assets.xcassets/Contents.json b/Examples/RswiftAppWithStaticFrameworks/App/Resources/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/App/Resources/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Examples/RswiftAppWithStaticFrameworks/App/Resources/Base.lproj/LaunchScreen.storyboard b/Examples/RswiftAppWithStaticFrameworks/App/Resources/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..865e9329 --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/App/Resources/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Examples/RswiftAppWithStaticFrameworks/App/Resources/Base.lproj/Main.storyboard b/Examples/RswiftAppWithStaticFrameworks/App/Resources/Base.lproj/Main.storyboard new file mode 100644 index 00000000..f26478a6 --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/App/Resources/Base.lproj/Main.storyboard @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Examples/RswiftAppWithStaticFrameworks/App/Sources/AppDelegate.swift b/Examples/RswiftAppWithStaticFrameworks/App/Sources/AppDelegate.swift new file mode 100644 index 00000000..290d2378 --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/App/Sources/AppDelegate.swift @@ -0,0 +1,14 @@ +import UIKit +import Foo +import Bar + +@main +final class AppDelegate: UIResponder, UIApplicationDelegate { + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { + FooClass().foo() + BarClass().bar() + return true + } + +} diff --git a/Examples/RswiftAppWithStaticFrameworks/App/Sources/SceneDelegate.swift b/Examples/RswiftAppWithStaticFrameworks/App/Sources/SceneDelegate.swift new file mode 100644 index 00000000..1cb72025 --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/App/Sources/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// FooBar +// +// Created by Maciej Piotrowski on 04/01/2021. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/Examples/RswiftAppWithStaticFrameworks/App/Sources/ViewController.swift b/Examples/RswiftAppWithStaticFrameworks/App/Sources/ViewController.swift new file mode 100644 index 00000000..ba532bb9 --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/App/Sources/ViewController.swift @@ -0,0 +1,15 @@ +import UIKit +import Foo +import Bar + +final class ViewController: UIViewController { + + @IBOutlet weak var fooImageView: UIImageView! + @IBOutlet weak var barImageView: UIImageView! + + override func viewDidLoad() { + super.viewDidLoad() + fooImageView.image = FooClass().sampleImage() + barImageView.image = BarClass().sampleImage() + } +} diff --git a/Examples/RswiftAppWithStaticFrameworks/Bar/Info.plist b/Examples/RswiftAppWithStaticFrameworks/Bar/Info.plist new file mode 100644 index 00000000..e1fe4cfb --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/Bar/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/Examples/RswiftAppWithStaticFrameworks/Bar/Resources/Colors@3x.jpg b/Examples/RswiftAppWithStaticFrameworks/Bar/Resources/Colors@3x.jpg new file mode 100644 index 00000000..23c056a8 Binary files /dev/null and b/Examples/RswiftAppWithStaticFrameworks/Bar/Resources/Colors@3x.jpg differ diff --git a/Examples/RswiftAppWithStaticFrameworks/Bar/Sources/Bar.swift b/Examples/RswiftAppWithStaticFrameworks/Bar/Sources/Bar.swift new file mode 100644 index 00000000..8376f421 --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/Bar/Sources/Bar.swift @@ -0,0 +1,12 @@ +import UIKit + +public final class BarClass { + public init() {} + public func bar() { + print("bar") + } + + public func sampleImage() -> UIImage { + R.image.colorsJpg()! + } +} diff --git a/Examples/RswiftAppWithStaticFrameworks/Foo/Info.plist b/Examples/RswiftAppWithStaticFrameworks/Foo/Info.plist new file mode 100644 index 00000000..e1fe4cfb --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/Foo/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/Examples/RswiftAppWithStaticFrameworks/Foo/Resources/User.png b/Examples/RswiftAppWithStaticFrameworks/Foo/Resources/User.png new file mode 100644 index 00000000..4f5cafee Binary files /dev/null and b/Examples/RswiftAppWithStaticFrameworks/Foo/Resources/User.png differ diff --git a/Examples/RswiftAppWithStaticFrameworks/Foo/Sources/Foo.swift b/Examples/RswiftAppWithStaticFrameworks/Foo/Sources/Foo.swift new file mode 100644 index 00000000..ac436df6 --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/Foo/Sources/Foo.swift @@ -0,0 +1,12 @@ +import UIKit + +public final class FooClass { + public init() {} + public func foo() { + print("foo") + } + + public func sampleImage() -> UIImage { + R.image.user()! + } +} diff --git a/Examples/RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks.xcodeproj/project.pbxproj b/Examples/RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks.xcodeproj/project.pbxproj new file mode 100644 index 00000000..949d1918 --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks.xcodeproj/project.pbxproj @@ -0,0 +1,1030 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 03D06D9C60AEAE8FE634454D /* Pods_Bar.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 674E867D044E13C4EE824EDA /* Pods_Bar.framework */; }; + 23D0DE433EC1766BB2FE59C6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3844C19EF2D85F958F010218 /* Assets.xcassets */; }; + 37A6C8B54F86BE2228F892B5 /* Foo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71F7B7842FB9EF2B65125CA8 /* Foo.framework */; }; + 3961A1FF3CCC8D319B5B9851 /* Pods_Foo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 101FB5471EED7CE7F1DECEB5 /* Pods_Foo.framework */; }; + 4680E921FB7046245B234C95 /* FooBundle.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 47FFEF3E3191F365876C33B1 /* FooBundle.bundle */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 50D25F3E8DE46F91123C0CC5 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C0B0FCA09D48FF877E95970 /* ViewController.swift */; }; + 637C842A03EE4A0AED304ECF /* Pods_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9767D4BABC42FE700C878635 /* Pods_App.framework */; }; + A025843A2D354BB0B413A717 /* R.generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = D003AB83A00F5D1B9A9F9B90 /* R.generated.swift */; }; + A14D88A4A3403DACF2DC2ECF /* R.generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7750863E11F70C8B71F811A /* R.generated.swift */; }; + A7940548A881305B7778FC55 /* Bar.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F77580EFDC1015090A2B822 /* Bar.framework */; }; + A9A2E8F57CA32D93229A2462 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9D52D56702E90AADBC46B4EB /* LaunchScreen.storyboard */; }; + B237F040341B112E7909766C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6ED7964632BE36BB21735A9 /* AppDelegate.swift */; }; + B2AF344DDA24E5AE91D9D3B1 /* User.png in Resources */ = {isa = PBXBuildFile; fileRef = A51DA98728043B2D10ECA1B3 /* User.png */; }; + C035B4491A5A10E08C72F4D4 /* Foo.swift in Sources */ = {isa = PBXBuildFile; fileRef = C541BB310FEB70B665E8E397 /* Foo.swift */; }; + C6170449030C8F20798DFC3F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DBD12E6769ED8625AC7210E6 /* Main.storyboard */; }; + D80E585DBD9FA2E07EB14DA2 /* BarBundle.bundle in Resources */ = {isa = PBXBuildFile; fileRef = F1DD55F25DE874A0AA75B238 /* BarBundle.bundle */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + DD2203C09F7FD1ECB305B8C2 /* Colors@3x.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 655641603F257DD75189A0F6 /* Colors@3x.jpg */; }; + DD544B6A13EA12A2EFF14EE3 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2241208CE1C221B1E493B1CA /* SceneDelegate.swift */; }; + F8DB9C27FD3259718C746DBA /* Bar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA3FBEC5BB6C4FE0CF1A43A /* Bar.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 1DFDF5BED3E06260DD0983D2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C88653A8855B27A3CA0F5055 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8F2521905D0CF087FFD375B3; + remoteInfo = BarBundle; + }; + 4148B3991FED2CFF64E2BFB4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C88653A8855B27A3CA0F5055 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0328DD4A87BE56889AA0F781; + remoteInfo = Bar; + }; + 803498BC9B607C125AE5E616 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C88653A8855B27A3CA0F5055 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 59A219B1BF6C52119E76405D; + remoteInfo = Foo; + }; + C9A1FDF0190D9DA54DB7D4B0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C88653A8855B27A3CA0F5055 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8B28E1AAD3ADDC6347204D85; + remoteInfo = FooBundle; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 09EBE6C782F6AFDFAAAB82E4 /* App.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 101FB5471EED7CE7F1DECEB5 /* Pods_Foo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Foo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2241208CE1C221B1E493B1CA /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 2DA3FBEC5BB6C4FE0CF1A43A /* Bar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bar.swift; sourceTree = ""; }; + 3844C19EF2D85F958F010218 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 47FFEF3E3191F365876C33B1 /* FooBundle.bundle */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.plug-in"; name = FooBundle.bundle; path = Foo.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 655641603F257DD75189A0F6 /* Colors@3x.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "Colors@3x.jpg"; sourceTree = ""; }; + 65B047577B44066BF0F03323 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 674E867D044E13C4EE824EDA /* Pods_Bar.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Bar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 71F7B7842FB9EF2B65125CA8 /* Foo.framework */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.framework; path = Foo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7A97E567FE57FF2A3594148E /* Pods-App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.debug.xcconfig"; path = "Target Support Files/Pods-App/Pods-App.debug.xcconfig"; sourceTree = ""; }; + 7C0B0FCA09D48FF877E95970 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 7F77580EFDC1015090A2B822 /* Bar.framework */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.framework; path = Bar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 840352C90829575A1970A01D /* Pods-Bar.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Bar.debug.xcconfig"; path = "Target Support Files/Pods-Bar/Pods-Bar.debug.xcconfig"; sourceTree = ""; }; + 9767D4BABC42FE700C878635 /* Pods_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_App.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A51DA98728043B2D10ECA1B3 /* User.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = User.png; sourceTree = ""; }; + A9045BF2B54CD6F046235641 /* Pods-Foo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Foo.release.xcconfig"; path = "Target Support Files/Pods-Foo/Pods-Foo.release.xcconfig"; sourceTree = ""; }; + B25A6A55A5F88D2EC3BDAFC1 /* Pods-Bar.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Bar.release.xcconfig"; path = "Target Support Files/Pods-Bar/Pods-Bar.release.xcconfig"; sourceTree = ""; }; + B5D7765B6F9ED6E52E0C0E9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + C541BB310FEB70B665E8E397 /* Foo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Foo.swift; sourceTree = ""; }; + CCFC93145C8B40C96FC845E0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + D003AB83A00F5D1B9A9F9B90 /* R.generated.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = R.generated.swift; sourceTree = ""; }; + D207B45CD3D109D085B96B0B /* Pods-App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.release.xcconfig"; path = "Target Support Files/Pods-App/Pods-App.release.xcconfig"; sourceTree = ""; }; + E272249ACFD5997B05D8725B /* Pods-Foo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Foo.debug.xcconfig"; path = "Target Support Files/Pods-Foo/Pods-Foo.debug.xcconfig"; sourceTree = ""; }; + E6ED7964632BE36BB21735A9 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + E7750863E11F70C8B71F811A /* R.generated.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = R.generated.swift; sourceTree = ""; }; + F1DD55F25DE874A0AA75B238 /* BarBundle.bundle */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.plug-in"; name = BarBundle.bundle; path = Bar.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0A731942ACBB4ECBC9AAB971 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 03D06D9C60AEAE8FE634454D /* Pods_Bar.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D2E9B6337E9A1F293CFEF1A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3961A1FF3CCC8D319B5B9851 /* Pods_Foo.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4579F2BF429599A2B22EF7E9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 37A6C8B54F86BE2228F892B5 /* Foo.framework in Frameworks */, + A7940548A881305B7778FC55 /* Bar.framework in Frameworks */, + 637C842A03EE4A0AED304ECF /* Pods_App.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A9E1015776CFBF373AD544CC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EDBDCA658D347C739094B5A8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 09954D985BD90D3535BA5E29 /* Bar */ = { + isa = PBXGroup; + children = ( + A2BED99BA03167AE6623D710 /* Resources */, + F0B54132DA7DE455F60E7A34 /* Sources */, + ); + path = Bar; + sourceTree = ""; + }; + 0E7FA1DDE8CBA9925A94C208 /* Pods */ = { + isa = PBXGroup; + children = ( + 7A97E567FE57FF2A3594148E /* Pods-App.debug.xcconfig */, + D207B45CD3D109D085B96B0B /* Pods-App.release.xcconfig */, + 840352C90829575A1970A01D /* Pods-Bar.debug.xcconfig */, + B25A6A55A5F88D2EC3BDAFC1 /* Pods-Bar.release.xcconfig */, + E272249ACFD5997B05D8725B /* Pods-Foo.debug.xcconfig */, + A9045BF2B54CD6F046235641 /* Pods-Foo.release.xcconfig */, + ); + name = Pods; + path = ../Pods; + sourceTree = ""; + }; + 370D29654D2F7D3ED5FF8790 /* App */ = { + isa = PBXGroup; + children = ( + CCFC93145C8B40C96FC845E0 /* Info.plist */, + 62CE76B9A9B4F9BD5021F441 /* Resources */, + 848C8ADB35C45933DBD38D2E /* Sources */, + ); + path = App; + sourceTree = ""; + }; + 582737745B10EC73FF0579D7 = { + isa = PBXGroup; + children = ( + 370D29654D2F7D3ED5FF8790 /* App */, + 09954D985BD90D3535BA5E29 /* Bar */, + C59E71F563315A14B3980DA2 /* Foo */, + F9DDB8B557D329344CC4A0CC /* Products */, + 0E7FA1DDE8CBA9925A94C208 /* Pods */, + DD1F0A6943FFE15626FADF47 /* Frameworks */, + ); + sourceTree = ""; + }; + 62CE76B9A9B4F9BD5021F441 /* Resources */ = { + isa = PBXGroup; + children = ( + 3844C19EF2D85F958F010218 /* Assets.xcassets */, + 9D52D56702E90AADBC46B4EB /* LaunchScreen.storyboard */, + DBD12E6769ED8625AC7210E6 /* Main.storyboard */, + ); + path = Resources; + sourceTree = ""; + }; + 82705CC060AFE6E95F5ADB07 /* Sources */ = { + isa = PBXGroup; + children = ( + C541BB310FEB70B665E8E397 /* Foo.swift */, + D003AB83A00F5D1B9A9F9B90 /* R.generated.swift */, + ); + path = Sources; + sourceTree = ""; + }; + 848C8ADB35C45933DBD38D2E /* Sources */ = { + isa = PBXGroup; + children = ( + E6ED7964632BE36BB21735A9 /* AppDelegate.swift */, + 2241208CE1C221B1E493B1CA /* SceneDelegate.swift */, + 7C0B0FCA09D48FF877E95970 /* ViewController.swift */, + ); + path = Sources; + sourceTree = ""; + }; + A2BED99BA03167AE6623D710 /* Resources */ = { + isa = PBXGroup; + children = ( + 655641603F257DD75189A0F6 /* Colors@3x.jpg */, + ); + path = Resources; + sourceTree = ""; + }; + AEBCA0D51F6A1C59A1517331 /* Resources */ = { + isa = PBXGroup; + children = ( + A51DA98728043B2D10ECA1B3 /* User.png */, + ); + path = Resources; + sourceTree = ""; + }; + C59E71F563315A14B3980DA2 /* Foo */ = { + isa = PBXGroup; + children = ( + AEBCA0D51F6A1C59A1517331 /* Resources */, + 82705CC060AFE6E95F5ADB07 /* Sources */, + ); + path = Foo; + sourceTree = ""; + }; + DD1F0A6943FFE15626FADF47 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9767D4BABC42FE700C878635 /* Pods_App.framework */, + 674E867D044E13C4EE824EDA /* Pods_Bar.framework */, + 101FB5471EED7CE7F1DECEB5 /* Pods_Foo.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + F0B54132DA7DE455F60E7A34 /* Sources */ = { + isa = PBXGroup; + children = ( + 2DA3FBEC5BB6C4FE0CF1A43A /* Bar.swift */, + E7750863E11F70C8B71F811A /* R.generated.swift */, + ); + path = Sources; + sourceTree = ""; + }; + F9DDB8B557D329344CC4A0CC /* Products */ = { + isa = PBXGroup; + children = ( + 09EBE6C782F6AFDFAAAB82E4 /* App.app */, + 7F77580EFDC1015090A2B822 /* Bar.framework */, + F1DD55F25DE874A0AA75B238 /* BarBundle.bundle */, + 71F7B7842FB9EF2B65125CA8 /* Foo.framework */, + 47FFEF3E3191F365876C33B1 /* FooBundle.bundle */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 0328DD4A87BE56889AA0F781 /* Bar */ = { + isa = PBXNativeTarget; + buildConfigurationList = A0FB50A44CF6F3E23F1D04B0 /* Build configuration list for PBXNativeTarget "Bar" */; + buildPhases = ( + 4367A8857BCF8C025352CB3D /* [CP] Check Pods Manifest.lock */, + 0B3751134FEE9BB94D60B6B8 /* R.swift */, + 40C7251D6D0A826CD4FC20FF /* Sources */, + 2690BC128C6239F7341A0E1B /* Resources */, + 0A731942ACBB4ECBC9AAB971 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + DF0A2FBC262B99BDB95C08AD /* PBXTargetDependency */, + ); + name = Bar; + productName = Bar; + productReference = 7F77580EFDC1015090A2B822 /* Bar.framework */; + productType = "com.apple.product-type.framework.static"; + }; + 59A219B1BF6C52119E76405D /* Foo */ = { + isa = PBXNativeTarget; + buildConfigurationList = CB8E0D95C8221EB66322BB76 /* Build configuration list for PBXNativeTarget "Foo" */; + buildPhases = ( + 54B342B8F45B90A50273E7C3 /* [CP] Check Pods Manifest.lock */, + 77448D795985C19AF55A5F1F /* R.swift */, + 5D824023BAD1D687E5B2AD5F /* Sources */, + 641BD0BED6B86B8355FD746E /* Resources */, + 2D2E9B6337E9A1F293CFEF1A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 47421C68E32922D308DC7D74 /* PBXTargetDependency */, + ); + name = Foo; + productName = Foo; + productReference = 71F7B7842FB9EF2B65125CA8 /* Foo.framework */; + productType = "com.apple.product-type.framework.static"; + }; + 8B28E1AAD3ADDC6347204D85 /* FooBundle */ = { + isa = PBXNativeTarget; + buildConfigurationList = C87CE7344FD89D4A4F49943C /* Build configuration list for PBXNativeTarget "FooBundle" */; + buildPhases = ( + 93F7254F4D2B16BE33DB2BDF /* Resources */, + EDBDCA658D347C739094B5A8 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FooBundle; + productName = FooBundle; + productReference = 47FFEF3E3191F365876C33B1 /* FooBundle.bundle */; + productType = "com.apple.product-type.bundle"; + }; + 8F2521905D0CF087FFD375B3 /* BarBundle */ = { + isa = PBXNativeTarget; + buildConfigurationList = DE89F2BC7BD62BB58420F5EC /* Build configuration list for PBXNativeTarget "BarBundle" */; + buildPhases = ( + F752C24D8952745834991833 /* Resources */, + A9E1015776CFBF373AD544CC /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = BarBundle; + productName = BarBundle; + productReference = F1DD55F25DE874A0AA75B238 /* BarBundle.bundle */; + productType = "com.apple.product-type.bundle"; + }; + E6815CC966750C0B4B8C0903 /* App */ = { + isa = PBXNativeTarget; + buildConfigurationList = B6DEF19BFDFDD330B369BBE8 /* Build configuration list for PBXNativeTarget "App" */; + buildPhases = ( + 795DD9FA56EF642DB2307F41 /* [CP] Check Pods Manifest.lock */, + ADE3A7C6DD9F273AC89B3ED5 /* Sources */, + BC9CC850DB0B3548EBDC9E7D /* Resources */, + 4579F2BF429599A2B22EF7E9 /* Frameworks */, + 7F553EDAB894541615C8EB2C /* Copy Bundles */, + 4213D882A02A85E88A6D8CA9 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 04CE573ED9492DE29603C7A4 /* PBXTargetDependency */, + 63408DB2AC810020287B7FD0 /* PBXTargetDependency */, + ); + name = App; + productName = App; + productReference = 09EBE6C782F6AFDFAAAB82E4 /* App.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + C88653A8855B27A3CA0F5055 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1200; + }; + buildConfigurationList = B0168AC1C5483CCEB3271728 /* Build configuration list for PBXProject "RswiftAppWithStaticFrameworks" */; + compatibilityVersion = "Xcode 10.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + Base, + en, + ); + mainGroup = 582737745B10EC73FF0579D7; + productRefGroup = F9DDB8B557D329344CC4A0CC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + E6815CC966750C0B4B8C0903 /* App */, + 0328DD4A87BE56889AA0F781 /* Bar */, + 8F2521905D0CF087FFD375B3 /* BarBundle */, + 59A219B1BF6C52119E76405D /* Foo */, + 8B28E1AAD3ADDC6347204D85 /* FooBundle */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 2690BC128C6239F7341A0E1B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D80E585DBD9FA2E07EB14DA2 /* BarBundle.bundle in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 641BD0BED6B86B8355FD746E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4680E921FB7046245B234C95 /* FooBundle.bundle in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 93F7254F4D2B16BE33DB2BDF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B2AF344DDA24E5AE91D9D3B1 /* User.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BC9CC850DB0B3548EBDC9E7D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 23D0DE433EC1766BB2FE59C6 /* Assets.xcassets in Resources */, + A9A2E8F57CA32D93229A2462 /* LaunchScreen.storyboard in Resources */, + C6170449030C8F20798DFC3F /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F752C24D8952745834991833 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DD2203C09F7FD1ECB305B8C2 /* Colors@3x.jpg in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 0B3751134FEE9BB94D60B6B8 /* R.swift */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = R.swift; + outputFileListPaths = ( + ); + outputPaths = ( + "$(SRCROOT)/Bar/Sources/R.generated.swift", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$SRCROOT/../../build/Debug/rswift\" generate \"$SRCROOT/Bar/Sources/R.generated.swift\" --hostingBundle ${PRODUCT_NAME} --target ${PRODUCT_NAME}Bundle\n"; + }; + 4213D882A02A85E88A6D8CA9 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-App/Pods-App-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-App/Pods-App-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-App/Pods-App-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 4367A8857BCF8C025352CB3D /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Bar-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 54B342B8F45B90A50273E7C3 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Foo-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 77448D795985C19AF55A5F1F /* R.swift */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = R.swift; + outputFileListPaths = ( + ); + outputPaths = ( + "$(SRCROOT)/Foo/Sources/R.generated.swift", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$SRCROOT/../../build/Debug/rswift\" generate \"$SRCROOT/Foo/Sources/R.generated.swift\" --hostingBundle ${PRODUCT_NAME} --target ${PRODUCT_NAME}Bundle\n"; + }; + 795DD9FA56EF642DB2307F41 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-App-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 7F553EDAB894541615C8EB2C /* Copy Bundles */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Copy Bundles"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "./copy_bundles.sh\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 40C7251D6D0A826CD4FC20FF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F8DB9C27FD3259718C746DBA /* Bar.swift in Sources */, + A14D88A4A3403DACF2DC2ECF /* R.generated.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5D824023BAD1D687E5B2AD5F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C035B4491A5A10E08C72F4D4 /* Foo.swift in Sources */, + A025843A2D354BB0B413A717 /* R.generated.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + ADE3A7C6DD9F273AC89B3ED5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B237F040341B112E7909766C /* AppDelegate.swift in Sources */, + DD544B6A13EA12A2EFF14EE3 /* SceneDelegate.swift in Sources */, + 50D25F3E8DE46F91123C0CC5 /* ViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 04CE573ED9492DE29603C7A4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 59A219B1BF6C52119E76405D /* Foo */; + targetProxy = 803498BC9B607C125AE5E616 /* PBXContainerItemProxy */; + }; + 47421C68E32922D308DC7D74 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8B28E1AAD3ADDC6347204D85 /* FooBundle */; + targetProxy = C9A1FDF0190D9DA54DB7D4B0 /* PBXContainerItemProxy */; + }; + 63408DB2AC810020287B7FD0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0328DD4A87BE56889AA0F781 /* Bar */; + targetProxy = 4148B3991FED2CFF64E2BFB4 /* PBXContainerItemProxy */; + }; + DF0A2FBC262B99BDB95C08AD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8F2521905D0CF087FFD375B3 /* BarBundle */; + targetProxy = 1DFDF5BED3E06260DD0983D2 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 9D52D56702E90AADBC46B4EB /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 65B047577B44066BF0F03323 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; + DBD12E6769ED8625AC7210E6 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B5D7765B6F9ED6E52E0C0E9A /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 34AE2C662C40B3A8D071F0F2 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E272249ACFD5997B05D8725B /* Pods-Foo.debug.xcconfig */; + 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 = Foo/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.rswift.$(PRODUCT_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 42F07A51D83C6D0157DE516F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B25A6A55A5F88D2EC3BDAFC1 /* Pods-Bar.release.xcconfig */; + 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 = Bar/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.rswift.$(PRODUCT_NAME:c99extidentifier)"; + PRODUCT_NAME = Bar; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 45F5BF9169D32C7AE87F0699 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = Foo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MACH_O_TYPE = mh_bundle; + PRODUCT_BUNDLE_IDENTIFIER = "com.rswift.$(PRODUCT_NAME:c99extidentifier)"; + PRODUCT_NAME = Foo; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 66BAA81A15AA74DBDAA90FD6 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 840352C90829575A1970A01D /* Pods-Bar.debug.xcconfig */; + 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 = Bar/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.rswift.$(PRODUCT_NAME:c99extidentifier)"; + PRODUCT_NAME = Bar; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 887AA668D7785BA542E846E0 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = Bar/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MACH_O_TYPE = mh_bundle; + PRODUCT_BUNDLE_IDENTIFIER = "com.rswift.$(PRODUCT_NAME:c99extidentifier)"; + PRODUCT_NAME = Bar; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 8CD98AF60F03A3684AF41FF9 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D207B45CD3D109D085B96B0B /* Pods-App.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = App/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.rswift.$(PRODUCT_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 994E34063ABAC54789FA4C14 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 9F98089B10E355F2695FAD9A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = Bar/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MACH_O_TYPE = mh_bundle; + PRODUCT_BUNDLE_IDENTIFIER = "com.rswift.$(PRODUCT_NAME:c99extidentifier)"; + PRODUCT_NAME = Bar; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B00C96695DF77912869D2A02 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = Foo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MACH_O_TYPE = mh_bundle; + PRODUCT_BUNDLE_IDENTIFIER = "com.rswift.$(PRODUCT_NAME:c99extidentifier)"; + PRODUCT_NAME = Foo; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B78B2DA0006A2053E8E8D15E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A9045BF2B54CD6F046235641 /* Pods-Foo.release.xcconfig */; + 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 = Foo/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.rswift.$(PRODUCT_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + E8315FC5728EA2DB95EEA61F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "DEBUG=1", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + FD856F4445F4086EFDE59CF8 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7A97E567FE57FF2A3594148E /* Pods-App.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = App/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.rswift.$(PRODUCT_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + A0FB50A44CF6F3E23F1D04B0 /* Build configuration list for PBXNativeTarget "Bar" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 66BAA81A15AA74DBDAA90FD6 /* Debug */, + 42F07A51D83C6D0157DE516F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + B0168AC1C5483CCEB3271728 /* Build configuration list for PBXProject "RswiftAppWithStaticFrameworks" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E8315FC5728EA2DB95EEA61F /* Debug */, + 994E34063ABAC54789FA4C14 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + B6DEF19BFDFDD330B369BBE8 /* Build configuration list for PBXNativeTarget "App" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FD856F4445F4086EFDE59CF8 /* Debug */, + 8CD98AF60F03A3684AF41FF9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + C87CE7344FD89D4A4F49943C /* Build configuration list for PBXNativeTarget "FooBundle" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B00C96695DF77912869D2A02 /* Debug */, + 45F5BF9169D32C7AE87F0699 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + CB8E0D95C8221EB66322BB76 /* Build configuration list for PBXNativeTarget "Foo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 34AE2C662C40B3A8D071F0F2 /* Debug */, + B78B2DA0006A2053E8E8D15E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DE89F2BC7BD62BB58420F5EC /* Build configuration list for PBXNativeTarget "BarBundle" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 887AA668D7785BA542E846E0 /* Debug */, + 9F98089B10E355F2695FAD9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = C88653A8855B27A3CA0F5055 /* Project object */; +} diff --git a/Examples/RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Examples/RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..7526341e --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Examples/RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Examples/RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Examples/RswiftAppWithStaticFrameworks/copy_bundles.sh b/Examples/RswiftAppWithStaticFrameworks/copy_bundles.sh new file mode 100755 index 00000000..fd77b121 --- /dev/null +++ b/Examples/RswiftAppWithStaticFrameworks/copy_bundles.sh @@ -0,0 +1,10 @@ +#!/bin/sh +find "${BUILT_PRODUCTS_DIR}" -d 1 -name "*.framework" | while read framework + do + find -L "${framework}" -name "*.bundle" -d 1 | while read source + do + destination="${TARGET_BUILD_DIR}/${EXECUTABLE_FOLDER_PATH}" + rsync -auv "${source}" "${destination}" || exit 1 + done + done +exit 0 diff --git a/Examples/RswiftExamples.xcworkspace/contents.xcworkspacedata b/Examples/RswiftExamples.xcworkspace/contents.xcworkspacedata index fa98579f..6fdcd242 100644 --- a/Examples/RswiftExamples.xcworkspace/contents.xcworkspacedata +++ b/Examples/RswiftExamples.xcworkspace/contents.xcworkspacedata @@ -13,6 +13,9 @@ + + diff --git a/Sources/RswiftCore/CallInformation.swift b/Sources/RswiftCore/CallInformation.swift index f44905c8..8687fd7c 100644 --- a/Sources/RswiftCore/CallInformation.swift +++ b/Sources/RswiftCore/CallInformation.swift @@ -14,6 +14,7 @@ public struct CallInformation { let outputURL: URL let uiTestOutputURL: URL? let rswiftIgnoreURL: URL + let hostingBundle: String? let generators: [Generator] let accessLevel: AccessLevel @@ -36,6 +37,7 @@ public struct CallInformation { outputURL: URL, uiTestOutputURL: URL?, rswiftIgnoreURL: URL, + hostingBundle: String?, generators: [Generator], accessLevel: AccessLevel, @@ -57,6 +59,7 @@ public struct CallInformation { self.outputURL = outputURL self.uiTestOutputURL = uiTestOutputURL self.rswiftIgnoreURL = rswiftIgnoreURL + self.hostingBundle = hostingBundle self.accessLevel = accessLevel self.imports = imports diff --git a/Sources/RswiftCore/RswiftCore.swift b/Sources/RswiftCore/RswiftCore.swift index f765ba14..6e209853 100644 --- a/Sources/RswiftCore/RswiftCore.swift +++ b/Sources/RswiftCore/RswiftCore.swift @@ -156,7 +156,8 @@ public struct RswiftCore { let (externalStructWithoutProperties, internalStruct) = ValidatedStructGenerator(validationSubject: aggregatedResult) .generatedStructs(at: callInformation.accessLevel, prefix: "") - let externalStruct = externalStructWithoutProperties.addingInternalProperties(forBundleIdentifier: callInformation.bundleIdentifier) + let externalStruct = externalStructWithoutProperties + .addingInternalProperties(forBundleIdentifier: callInformation.bundleIdentifier, hostingBundle: callInformation.hostingBundle) let codeConvertibles: [SwiftCodeConverible?] = [ HeaderPrinter(), diff --git a/Sources/RswiftCore/Util/Struct+InternalProperties.swift b/Sources/RswiftCore/Util/Struct+InternalProperties.swift index 0d9f604e..7cc9eaae 100644 --- a/Sources/RswiftCore/Util/Struct+InternalProperties.swift +++ b/Sources/RswiftCore/Util/Struct+InternalProperties.swift @@ -9,7 +9,13 @@ import Foundation extension Struct { - func addingInternalProperties(forBundleIdentifier bundleIdentifier: String) -> Struct { + func addingInternalProperties(forBundleIdentifier bundleIdentifier: String, hostingBundle: String? = nil) -> Struct { + let hostingBundleValue: String + if let bundleName = hostingBundle, !bundleName.isEmpty { + hostingBundleValue = "Bundle(for: R.Class.self).path(forResource: \"\(bundleName)\", ofType: \"bundle\").flatMap(Bundle.init(path:)) ?? Bundle(for: R.Class.self)" + } else { + hostingBundleValue = "Bundle(for: R.Class.self)" + } let internalProperties = [ Let( @@ -18,7 +24,7 @@ extension Struct { isStatic: true, name: "hostingBundle", typeDefinition: .inferred(Type._Bundle), - value: "Bundle(for: R.Class.self)"), + value: hostingBundleValue), Let( comments: [], accessModifier: .filePrivate, diff --git a/Sources/rswift/main.swift b/Sources/rswift/main.swift index bbf08292..38f2077c 100644 --- a/Sources/rswift/main.swift +++ b/Sources/rswift/main.swift @@ -111,6 +111,7 @@ struct CommanderOptions { static let importModules = Option("import", default: "", description: "Add extra modules as import in the generated file, comma seperated") static let accessLevel = Option("accessLevel", default: AccessLevel.internalLevel, description: "The access level [public|internal] to use for the generated R-file") static let rswiftIgnore = Option("rswiftignore", default: ".rswiftignore", description: "Path to pattern file that describes files that should be ignored") + static let hostingBundle: Option = Option("hostingBundle", default: nil, description: "Override bundle from which resources are loaded") // Project specific - Environment variable overrides static let xcodeproj: Option = Option("xcodeproj", default: nil, description: "Defaults to environment variable \(EnvironmentKeys.xcodeproj)") @@ -185,6 +186,7 @@ let generate = command( CommanderOptions.importModules, CommanderOptions.accessLevel, CommanderOptions.rswiftIgnore, + CommanderOptions.hostingBundle, CommanderOptions.xcodeproj, CommanderOptions.target, @@ -206,6 +208,7 @@ let generate = command( importModules, accessLevel, rswiftIgnore, + hostingBundle, xcodeprojOption, targetOption, @@ -273,6 +276,7 @@ let generate = command( outputURL: outputURL, uiTestOutputURL: uiTestOutputURL, rswiftIgnoreURL: rswiftIgnoreURL, + hostingBundle: hostingBundle, generators: generators, accessLevel: accessLevel, @@ -303,6 +307,7 @@ let printCommand = command( CommanderOptions.importModules, CommanderOptions.accessLevel, CommanderOptions.rswiftIgnore, + CommanderOptions.hostingBundle, CommanderArguments.outputPath ) { @@ -313,6 +318,7 @@ let printCommand = command( importModules, accessLevel, rswiftIgnore, + hostingBundle, outputPath in @@ -349,6 +355,9 @@ let printCommand = command( if rswiftIgnore != CommanderOptions.rswiftIgnore.default { args.append("--\(CommanderOptions.rswiftIgnore.name) \(rswiftIgnore)") } + if let hostingBundle = hostingBundle { + args.append("--\(CommanderOptions.hostingBundle.name) \(hostingBundle)") + } // Add args for environment variables args.append("--\(CommanderOptions.target.name) \(escapePath(targetName))")