diff options
author | 2017-06-02 18:42:17 +0100 | |
---|---|---|
committer | 2017-06-02 10:42:17 -0700 | |
commit | 5c59342e6e19989c012877362af529b3d5d0abeb (patch) | |
tree | 457f5da7c41ee45b8d3f55f83017fff2ab718781 /BuildFrameworks | |
parent | 6f700dd6c81711a8605c2587b4f2acfd4e07466b (diff) |
macOS (#38)
* Example/Core: create macOS app/tests target
* Example/Core: Core_Example/Tests -> Core_Example/Tests_iOS
* Example/Core: macOS building/tests passing
* Example/Database: separate iOS/macOS targets
* BuildFrameworks: macOS
* .travis.yml, test.sh: AllUnitTests -> AllUnitTests_iOS
* test.sh: add AllUnitTests_macOS
* Example/Storage: Example/Tests->_iOS
* Example/Storage: macOS
* test.sh: try to prevent double error 65
* test.sh: build before test
* Example/Auth|Messaging: -> _iOS
* Example/Auth: macOS build
* Example/Auth: macOS passing
* Example/Firebase: pod de/re-integrate; fix static DerivedData references; copy phase for OCMock
* Example/Firebase: manually copied OCMock, Products Dir vs. Frameworks
* Example/Firebase: copied OCMock, prevent header removal
* Example/Storage: integration tests sdk fix
* Example/Auth: macOS exclude FIRAuthAppCredentialManager; cleanup
* Firebase/Core: remove nullability annotation
* Firebase/Core|Database: correct TARGET_X usage for correctness and anticipation of OS_WATCH|TV branches
* build.swift: style fix
* Firebase/Core: FIRLogger: fix macOS intermittent va_list error
Diffstat (limited to 'BuildFrameworks')
-rw-r--r-- | BuildFrameworks/FrameworkMaker.xcodeproj/project.pbxproj | 198 | ||||
-rw-r--r-- | BuildFrameworks/FrameworkMaker.xcodeproj/xcshareddata/xcschemes/FrameworkMaker_iOS.xcscheme | 91 | ||||
-rw-r--r-- | BuildFrameworks/FrameworkMaker.xcodeproj/xcshareddata/xcschemes/FrameworkMaker_macOS.xcscheme | 91 | ||||
-rw-r--r-- | BuildFrameworks/Podfile | 14 | ||||
-rwxr-xr-x | BuildFrameworks/build.swift | 63 | ||||
-rw-r--r-- | BuildFrameworks/iOS-Info.plist | 49 | ||||
-rw-r--r-- | BuildFrameworks/macOS-Info.plist | 32 |
7 files changed, 498 insertions, 40 deletions
diff --git a/BuildFrameworks/FrameworkMaker.xcodeproj/project.pbxproj b/BuildFrameworks/FrameworkMaker.xcodeproj/project.pbxproj index a66077c..0c77c76 100644 --- a/BuildFrameworks/FrameworkMaker.xcodeproj/project.pbxproj +++ b/BuildFrameworks/FrameworkMaker.xcodeproj/project.pbxproj @@ -7,14 +7,24 @@ objects = { /* Begin PBXBuildFile section */ - C8F75C1E8772455450E51C69 /* libPods-FrameworkMaker.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D25AC01A0F56F8BC5375DD2 /* libPods-FrameworkMaker.a */; }; + 03BED32F297D77A489B80DBA /* libPods-FrameworkMaker_macOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 93482F41CCA683759459AC1E /* libPods-FrameworkMaker_macOS.a */; }; + 621808027FC20B1A1B769E50 /* libPods-FrameworkMaker_iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AB2E4F8834D5EA87A8F7124C /* libPods-FrameworkMaker_iOS.a */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 01F29B956E7F6E45EF34DE72 /* Pods-FrameworkMaker.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FrameworkMaker.release.xcconfig"; path = "Pods/Target Support Files/Pods-FrameworkMaker/Pods-FrameworkMaker.release.xcconfig"; sourceTree = "<group>"; }; - 05A46BD71CC9B2BE007BDB33 /* FrameworkMaker.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FrameworkMaker.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 04058317A2F1A863FB91F84F /* Pods-FrameworkMaker_iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FrameworkMaker_iOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-FrameworkMaker_iOS/Pods-FrameworkMaker_iOS.release.xcconfig"; sourceTree = "<group>"; }; + 05A46BD71CC9B2BE007BDB33 /* FrameworkMaker_iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FrameworkMaker_iOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1D25AC01A0F56F8BC5375DD2 /* libPods-FrameworkMaker.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FrameworkMaker.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5BDF11E206B3015647181AB8 /* Pods-FrameworkMaker_iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FrameworkMaker_iOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-FrameworkMaker_iOS/Pods-FrameworkMaker_iOS.debug.xcconfig"; sourceTree = "<group>"; }; + 93482F41CCA683759459AC1E /* libPods-FrameworkMaker_macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FrameworkMaker_macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + AB2E4F8834D5EA87A8F7124C /* libPods-FrameworkMaker_iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FrameworkMaker_iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B9CD818DD62BFDAC11008E2A /* Pods-FrameworkMaker_macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FrameworkMaker_macOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-FrameworkMaker_macOS/Pods-FrameworkMaker_macOS.debug.xcconfig"; sourceTree = "<group>"; }; C8DA4EE8A169B227B0576C02 /* Pods-FrameworkMaker.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FrameworkMaker.debug.xcconfig"; path = "Pods/Target Support Files/Pods-FrameworkMaker/Pods-FrameworkMaker.debug.xcconfig"; sourceTree = "<group>"; }; + D013F9FF1ED9EB9900FD68A9 /* FrameworkMaker_macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FrameworkMaker_macOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; + D013FA131ED9EC0B00FD68A9 /* iOS-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iOS-Info.plist"; sourceTree = "<group>"; }; + D013FA141ED9EC1500FD68A9 /* macOS-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "macOS-Info.plist"; sourceTree = "<group>"; }; + DD9F6D0B1597A9F327565EDE /* Pods-FrameworkMaker_macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FrameworkMaker_macOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-FrameworkMaker_macOS/Pods-FrameworkMaker_macOS.release.xcconfig"; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -22,7 +32,15 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C8F75C1E8772455450E51C69 /* libPods-FrameworkMaker.a in Frameworks */, + 621808027FC20B1A1B769E50 /* libPods-FrameworkMaker_iOS.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D013F9FC1ED9EB9900FD68A9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 03BED32F297D77A489B80DBA /* libPods-FrameworkMaker_macOS.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -32,6 +50,8 @@ 05A46BCE1CC9B2BE007BDB33 = { isa = PBXGroup; children = ( + D013FA131ED9EC0B00FD68A9 /* iOS-Info.plist */, + D013FA141ED9EC1500FD68A9 /* macOS-Info.plist */, 05A46BD81CC9B2BE007BDB33 /* Products */, AA03828B8B59297B5A3389B0 /* Pods */, D3884AD1918E82D7FD21433D /* Frameworks */, @@ -41,7 +61,8 @@ 05A46BD81CC9B2BE007BDB33 /* Products */ = { isa = PBXGroup; children = ( - 05A46BD71CC9B2BE007BDB33 /* FrameworkMaker.app */, + 05A46BD71CC9B2BE007BDB33 /* FrameworkMaker_iOS.app */, + D013F9FF1ED9EB9900FD68A9 /* FrameworkMaker_macOS.app */, ); name = Products; sourceTree = "<group>"; @@ -51,6 +72,10 @@ children = ( C8DA4EE8A169B227B0576C02 /* Pods-FrameworkMaker.debug.xcconfig */, 01F29B956E7F6E45EF34DE72 /* Pods-FrameworkMaker.release.xcconfig */, + 5BDF11E206B3015647181AB8 /* Pods-FrameworkMaker_iOS.debug.xcconfig */, + 04058317A2F1A863FB91F84F /* Pods-FrameworkMaker_iOS.release.xcconfig */, + B9CD818DD62BFDAC11008E2A /* Pods-FrameworkMaker_macOS.debug.xcconfig */, + DD9F6D0B1597A9F327565EDE /* Pods-FrameworkMaker_macOS.release.xcconfig */, ); name = Pods; sourceTree = "<group>"; @@ -59,6 +84,8 @@ isa = PBXGroup; children = ( 1D25AC01A0F56F8BC5375DD2 /* libPods-FrameworkMaker.a */, + AB2E4F8834D5EA87A8F7124C /* libPods-FrameworkMaker_iOS.a */, + 93482F41CCA683759459AC1E /* libPods-FrameworkMaker_macOS.a */, ); name = Frameworks; sourceTree = "<group>"; @@ -66,9 +93,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 05A46BD61CC9B2BE007BDB33 /* FrameworkMaker */ = { + 05A46BD61CC9B2BE007BDB33 /* FrameworkMaker_iOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 05A46BEE1CC9B2BE007BDB33 /* Build configuration list for PBXNativeTarget "FrameworkMaker" */; + buildConfigurationList = 05A46BEE1CC9B2BE007BDB33 /* Build configuration list for PBXNativeTarget "FrameworkMaker_iOS" */; buildPhases = ( AC1C2B143A86214CE77C9932 /* [CP] Check Pods Manifest.lock */, 05A46BD31CC9B2BE007BDB33 /* Sources */, @@ -81,9 +108,29 @@ ); dependencies = ( ); - name = FrameworkMaker; + name = FrameworkMaker_iOS; productName = FrameworkMaker; - productReference = 05A46BD71CC9B2BE007BDB33 /* FrameworkMaker.app */; + productReference = 05A46BD71CC9B2BE007BDB33 /* FrameworkMaker_iOS.app */; + productType = "com.apple.product-type.application"; + }; + D013F9FE1ED9EB9900FD68A9 /* FrameworkMaker_macOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = D013FA121ED9EB9900FD68A9 /* Build configuration list for PBXNativeTarget "FrameworkMaker_macOS" */; + buildPhases = ( + 76A7EF97A6A2306CED685487 /* [CP] Check Pods Manifest.lock */, + D013F9FB1ED9EB9900FD68A9 /* Sources */, + D013F9FC1ED9EB9900FD68A9 /* Frameworks */, + D013F9FD1ED9EB9900FD68A9 /* Resources */, + 83F5D2024D97A1D542B7932F /* [CP] Embed Pods Frameworks */, + C712E44DB1FAE1B023552B35 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FrameworkMaker_macOS; + productName = FrameworkMaker_macOS; + productReference = D013F9FF1ED9EB9900FD68A9 /* FrameworkMaker_macOS.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -98,6 +145,10 @@ 05A46BD61CC9B2BE007BDB33 = { CreatedOnToolsVersion = 7.3; }; + D013F9FE1ED9EB9900FD68A9 = { + CreatedOnToolsVersion = 8.3.2; + ProvisioningStyle = Automatic; + }; }; }; buildConfigurationList = 05A46BD21CC9B2BE007BDB33 /* Build configuration list for PBXProject "FrameworkMaker" */; @@ -113,7 +164,8 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 05A46BD61CC9B2BE007BDB33 /* FrameworkMaker */, + 05A46BD61CC9B2BE007BDB33 /* FrameworkMaker_iOS */, + D013F9FE1ED9EB9900FD68A9 /* FrameworkMaker_macOS */, ); }; /* End PBXProject section */ @@ -126,6 +178,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D013F9FD1ED9EB9900FD68A9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -141,7 +200,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-FrameworkMaker/Pods-FrameworkMaker-frameworks.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-FrameworkMaker_iOS/Pods-FrameworkMaker_iOS-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 5040608D1004852F08A22A14 /* [CP] Copy Pods Resources */ = { @@ -156,7 +215,37 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-FrameworkMaker/Pods-FrameworkMaker-resources.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-FrameworkMaker_iOS/Pods-FrameworkMaker_iOS-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 76A7EF97A6A2306CED685487 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + 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"; + showEnvVarsInLog = 0; + }; + 83F5D2024D97A1D542B7932F /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-FrameworkMaker_macOS/Pods-FrameworkMaker_macOS-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; AC1C2B143A86214CE77C9932 /* [CP] Check Pods Manifest.lock */ = { @@ -174,6 +263,21 @@ 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"; showEnvVarsInLog = 0; }; + C712E44DB1FAE1B023552B35 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-FrameworkMaker_macOS/Pods-FrameworkMaker_macOS-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -184,6 +288,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D013F9FB1ED9EB9900FD68A9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ @@ -224,7 +335,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -262,7 +374,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -271,25 +384,61 @@ }; 05A46BEF1CC9B2BE007BDB33 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C8DA4EE8A169B227B0576C02 /* Pods-FrameworkMaker.debug.xcconfig */; + baseConfigurationReference = 5BDF11E206B3015647181AB8 /* Pods-FrameworkMaker_iOS.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = FrameworkMaker/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/iOS-Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = google.FrameworkMaker; + PRODUCT_BUNDLE_IDENTIFIER = "google.FrameworkMaker-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; }; 05A46BF01CC9B2BE007BDB33 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 01F29B956E7F6E45EF34DE72 /* Pods-FrameworkMaker.release.xcconfig */; + baseConfigurationReference = 04058317A2F1A863FB91F84F /* Pods-FrameworkMaker_iOS.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = FrameworkMaker/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/iOS-Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = google.FrameworkMaker; + PRODUCT_BUNDLE_IDENTIFIER = "google.FrameworkMaker-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + D013FA101ED9EB9900FD68A9 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B9CD818DD62BFDAC11008E2A /* Pods-FrameworkMaker_macOS.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = "$(SRCROOT)/macOS-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.google.FrameworkMaker-macOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + }; + name = Debug; + }; + D013FA111ED9EB9900FD68A9 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DD9F6D0B1597A9F327565EDE /* Pods-FrameworkMaker_macOS.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = "$(SRCROOT)/macOS-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.google.FrameworkMaker-macOS"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; }; name = Release; }; @@ -305,7 +454,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 05A46BEE1CC9B2BE007BDB33 /* Build configuration list for PBXNativeTarget "FrameworkMaker" */ = { + 05A46BEE1CC9B2BE007BDB33 /* Build configuration list for PBXNativeTarget "FrameworkMaker_iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( 05A46BEF1CC9B2BE007BDB33 /* Debug */, @@ -314,6 +463,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + D013FA121ED9EB9900FD68A9 /* Build configuration list for PBXNativeTarget "FrameworkMaker_macOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D013FA101ED9EB9900FD68A9 /* Debug */, + D013FA111ED9EB9900FD68A9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 05A46BCF1CC9B2BE007BDB33 /* Project object */; diff --git a/BuildFrameworks/FrameworkMaker.xcodeproj/xcshareddata/xcschemes/FrameworkMaker_iOS.xcscheme b/BuildFrameworks/FrameworkMaker.xcodeproj/xcshareddata/xcschemes/FrameworkMaker_iOS.xcscheme new file mode 100644 index 0000000..2994deb --- /dev/null +++ b/BuildFrameworks/FrameworkMaker.xcodeproj/xcshareddata/xcschemes/FrameworkMaker_iOS.xcscheme @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "0830" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "05A46BD61CC9B2BE007BDB33" + BuildableName = "FrameworkMaker_iOS.app" + BlueprintName = "FrameworkMaker_iOS" + ReferencedContainer = "container:FrameworkMaker.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "YES"> + <Testables> + </Testables> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "05A46BD61CC9B2BE007BDB33" + BuildableName = "FrameworkMaker_iOS.app" + BlueprintName = "FrameworkMaker_iOS" + ReferencedContainer = "container:FrameworkMaker.xcodeproj"> + </BuildableReference> + </MacroExpansion> + <AdditionalOptions> + </AdditionalOptions> + </TestAction> + <LaunchAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + debugServiceExtension = "internal" + allowLocationSimulation = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "05A46BD61CC9B2BE007BDB33" + BuildableName = "FrameworkMaker_iOS.app" + BlueprintName = "FrameworkMaker_iOS" + ReferencedContainer = "container:FrameworkMaker.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + <AdditionalOptions> + </AdditionalOptions> + </LaunchAction> + <ProfileAction + buildConfiguration = "Release" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + debugDocumentVersioning = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "05A46BD61CC9B2BE007BDB33" + BuildableName = "FrameworkMaker_iOS.app" + BlueprintName = "FrameworkMaker_iOS" + ReferencedContainer = "container:FrameworkMaker.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/BuildFrameworks/FrameworkMaker.xcodeproj/xcshareddata/xcschemes/FrameworkMaker_macOS.xcscheme b/BuildFrameworks/FrameworkMaker.xcodeproj/xcshareddata/xcschemes/FrameworkMaker_macOS.xcscheme new file mode 100644 index 0000000..dbe6579 --- /dev/null +++ b/BuildFrameworks/FrameworkMaker.xcodeproj/xcshareddata/xcschemes/FrameworkMaker_macOS.xcscheme @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "0830" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "D013F9FE1ED9EB9900FD68A9" + BuildableName = "FrameworkMaker_macOS.app" + BlueprintName = "FrameworkMaker_macOS" + ReferencedContainer = "container:FrameworkMaker.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "YES"> + <Testables> + </Testables> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "D013F9FE1ED9EB9900FD68A9" + BuildableName = "FrameworkMaker_macOS.app" + BlueprintName = "FrameworkMaker_macOS" + ReferencedContainer = "container:FrameworkMaker.xcodeproj"> + </BuildableReference> + </MacroExpansion> + <AdditionalOptions> + </AdditionalOptions> + </TestAction> + <LaunchAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + debugServiceExtension = "internal" + allowLocationSimulation = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "D013F9FE1ED9EB9900FD68A9" + BuildableName = "FrameworkMaker_macOS.app" + BlueprintName = "FrameworkMaker_macOS" + ReferencedContainer = "container:FrameworkMaker.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + <AdditionalOptions> + </AdditionalOptions> + </LaunchAction> + <ProfileAction + buildConfiguration = "Release" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + debugDocumentVersioning = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "D013F9FE1ED9EB9900FD68A9" + BuildableName = "FrameworkMaker_macOS.app" + BlueprintName = "FrameworkMaker_macOS" + ReferencedContainer = "container:FrameworkMaker.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/BuildFrameworks/Podfile b/BuildFrameworks/Podfile index e7bf344..1c44028 100644 --- a/BuildFrameworks/Podfile +++ b/BuildFrameworks/Podfile @@ -1,8 +1,8 @@ -platform :ios, '7.0' - project 'FrameworkMaker.xcodeproj' -target 'FrameworkMaker' do +target 'FrameworkMaker_iOS' do + platform :ios, '7.0' + pod 'FirebaseAuth', :path => '../Firebase/Auth' pod 'FirebaseCore', :path => '../Firebase/Core' pod 'FirebaseDatabase', :path => '../Firebase/Database' @@ -10,3 +10,11 @@ target 'FrameworkMaker' do pod 'FirebaseStorage', :path => '../Firebase/Storage' end +target 'FrameworkMaker_macOS' do + platform :osx, '10.10' + + pod 'FirebaseAuth', :path => '../Firebase/Auth' + pod 'FirebaseCore', :path => '../Firebase/Core' + pod 'FirebaseDatabase', :path => '../Firebase/Database' + pod 'FirebaseStorage', :path => '../Firebase/Storage' +end diff --git a/BuildFrameworks/build.swift b/BuildFrameworks/build.swift index 7bcda2f..8721ca6 100755 --- a/BuildFrameworks/build.swift +++ b/BuildFrameworks/build.swift @@ -33,11 +33,20 @@ func colorPrint(color: Colors, text: String) { print(color.rawValue + text + "\u{001B}[0;0m") } -let allFrameworks = ["FirebaseAuth", - "FirebaseCore", - "FirebaseDatabase", - "FirebaseMessaging", - "FirebaseStorage"] +enum Platform: String { + case iOS + case macOS + case tvOS + case watchOS +} + +let allFrameworks: [String: [Platform]] = [ + "FirebaseAuth": [.iOS, .macOS], + "FirebaseCore": [.iOS, .macOS], + "FirebaseDatabase": [.iOS, .macOS], + "FirebaseMessaging": [.iOS], + "FirebaseStorage": [.iOS, .macOS] +] let currentDirectoryURL = URL(fileURLWithPath: FileManager.default.currentDirectoryPath) let url = URL(fileURLWithPath: CommandLine.arguments[0], relativeTo: currentDirectoryURL) @@ -63,7 +72,7 @@ func processOptions() -> [String] { colorPrint(color:Colors.red, text:"-all must be a solo option") usage() } - doFrameworks = allFrameworks + doFrameworks = Array(allFrameworks.keys) break whileLoop case "-f": optIndex += 1 @@ -72,7 +81,7 @@ func processOptions() -> [String] { usage() } let framework = CommandLine.arguments[optIndex] - guard allFrameworks.contains(framework) else { + guard allFrameworks.keys.contains(framework) else { colorPrint(color:Colors.red, text:"\(framework) is not a valid framework") usage() } @@ -110,17 +119,28 @@ func syncExec(command: String, args: [String] = []) { } } -func buildThin(framework: String, arch: String, sdk: String, parentDir: String) -> [String] { +func buildThin(framework: String, multiplatform: Bool, arch: String, multisdk: Bool, sdk: String, parentDir: String) -> [String] { + let schemeSuffix: String + if !multiplatform { + schemeSuffix = "" + } else if sdk.hasPrefix("mac") { + schemeSuffix = "-OSX" + } else if sdk.hasPrefix("iphone") { + schemeSuffix = "-iOS" + } else { + fatalError("TODO: tvOS/watchOS") + } + let buildDir = parentDir + "/" + arch let standardOptions = [ "build", "-configuration", "release", "-workspace", "FrameworkMaker.xcworkspace", - "-scheme", framework, + "-scheme", framework + schemeSuffix, "GCC_GENERATE_DEBUGGING_SYMBOLS=No"] let bitcode = (sdk == "iphoneos") ? ["OTHER_CFLAGS=\"" + "-fembed-bitcode\""] : [] let args = standardOptions + ["ARCHS=" + arch, "BUILD_DIR=" + buildDir, "-sdk", sdk] + bitcode syncExec(command:"/usr/bin/xcodebuild", args:args) - return [buildDir + "/Release-" + sdk + "/" + framework + "/lib" + framework + ".a"] + return [buildDir + "/Release" + (multisdk ? "-\(sdk)" : "") + "/" + framework + schemeSuffix + "/lib" + framework + schemeSuffix + ".a"] } func createFile(file: String, content: String) { @@ -144,15 +164,21 @@ func makeModuleMap(framework: String, dir: String) { createFile(file:moduleFile, content:content) } -func buildFramework(withName framework: String, outputDir: String) { +func buildFramework(withName framework: String, multiplatform: Bool, platform: Platform, outputDir: String) { let buildDir = tempDir() var thinArchives = [String]() - thinArchives += buildThin(framework:framework, arch:"arm64", sdk:"iphoneos", parentDir:buildDir) - thinArchives += buildThin(framework:framework, arch:"armv7", sdk:"iphoneos", parentDir:buildDir) - thinArchives += buildThin(framework:framework, arch:"i386", sdk:"iphonesimulator", parentDir:buildDir) - thinArchives += buildThin(framework:framework, arch:"x86_64", sdk:"iphonesimulator", parentDir:buildDir) + switch platform { + case .iOS: + thinArchives += buildThin(framework:framework, multiplatform: multiplatform, arch:"arm64", multisdk: true, sdk:"iphoneos", parentDir:buildDir) + thinArchives += buildThin(framework:framework, multiplatform: multiplatform, arch:"armv7", multisdk: true, sdk:"iphoneos", parentDir:buildDir) + thinArchives += buildThin(framework:framework, multiplatform: multiplatform, arch:"i386", multisdk: true, sdk:"iphonesimulator", parentDir:buildDir) + thinArchives += buildThin(framework:framework, multiplatform: multiplatform, arch:"x86_64", multisdk: true, sdk:"iphonesimulator", parentDir:buildDir) + case .macOS: + thinArchives += buildThin(framework:framework, multiplatform: multiplatform, arch:"x86_64", multisdk: false, sdk:"macosx", parentDir:buildDir) + default: fatalError("TODO: tvOS/watchOS") + } - let frameworkDir = outputDir + "/" + framework + ".framework" + let frameworkDir = outputDir + "/" + framework + "_" + platform.rawValue + ".framework" syncExec(command:"/bin/mkdir", args:["-p", frameworkDir]) let fatArchive = frameworkDir + "/" + framework syncExec(command:"/usr/bin/lipo", args:["-create", "-output", fatArchive] + thinArchives) @@ -171,7 +197,10 @@ let outputDir = tempDir() syncExec(command:"/usr/local/bin/pod", args:["update"]) for f in frameworks { - buildFramework(withName:f, outputDir:outputDir) + let platforms = allFrameworks[f]! + for p in platforms { + buildFramework(withName:f, multiplatform:platforms.count > 1, platform:p, outputDir:outputDir) + } } print() diff --git a/BuildFrameworks/iOS-Info.plist b/BuildFrameworks/iOS-Info.plist new file mode 100644 index 0000000..7576a0d --- /dev/null +++ b/BuildFrameworks/iOS-Info.plist @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>en</string> + <key>CFBundleDisplayName</key> + <string>${PRODUCT_NAME}</string> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleIdentifier</key> + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>${PRODUCT_NAME}</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>1.0</string> + <key>LSRequiresIPhoneOS</key> + <true/> + <key>UILaunchStoryboardName</key> + <string>LaunchScreen</string> + <key>UIMainStoryboardFile</key> + <string>Main</string> + <key>UIRequiredDeviceCapabilities</key> + <array> + <string>armv7</string> + </array> + <key>UISupportedInterfaceOrientations</key> + <array> + <string>UIInterfaceOrientationPortrait</string> + <string>UIInterfaceOrientationLandscapeLeft</string> + <string>UIInterfaceOrientationLandscapeRight</string> + </array> + <key>UISupportedInterfaceOrientations~ipad</key> + <array> + <string>UIInterfaceOrientationPortrait</string> + <string>UIInterfaceOrientationPortraitUpsideDown</string> + <string>UIInterfaceOrientationLandscapeLeft</string> + <string>UIInterfaceOrientationLandscapeRight</string> + </array> +</dict> +</plist> diff --git a/BuildFrameworks/macOS-Info.plist b/BuildFrameworks/macOS-Info.plist new file mode 100644 index 0000000..c28dbc8 --- /dev/null +++ b/BuildFrameworks/macOS-Info.plist @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>en</string> + <key>CFBundleExecutable</key> + <string>$(EXECUTABLE_NAME)</string> + <key>CFBundleIconFile</key> + <string></string> + <key>CFBundleIdentifier</key> + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>$(PRODUCT_NAME)</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1.0</string> + <key>LSMinimumSystemVersion</key> + <string>$(MACOSX_DEPLOYMENT_TARGET)</string> + <key>NSHumanReadableCopyright</key> + <string>Copyright © 2017 Google, Inc. All rights reserved.</string> + <key>NSMainStoryboardFile</key> + <string>Main</string> + <key>NSPrincipalClass</key> + <string>NSApplication</string> +</dict> +</plist> |