diff --git a/.gitignore b/.gitignore index b4d4cf94..602a9578 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,11 @@ ci/apple* omvll.log # Tmp folder -tmp/* \ No newline at end of file +tmp/* + +# Samples +samples/GoodNight* +samples/HackerNews* +samples/HexaCalc* +samples/Kotoba* +samples/SnowPlow* \ No newline at end of file diff --git a/ci/Jenkinsfile-MacOs b/ci/Jenkinsfile-MacOs index 467b8c53..c7c0eaca 100644 --- a/ci/Jenkinsfile-MacOs +++ b/ci/Jenkinsfile-MacOs @@ -69,7 +69,7 @@ pipeline { sh 'gzip -d ${OUTPUT_FOLDER}/omvll_unsigned.dylib.gz' // Get TAK delivery sh 'ci/devtools-bash-utils/nexus.sh -o tmp/TAK-Client.zip -g com.build38.tak -i tak-delivery -v 2.14.2 -c 1426 -e zip download-v2' - sh 'unzip ${TMP_FOLDER}/TAK-Client.zip -d tmp/' + sh 'unzip ${TMP_FOLDER}/TAK-Client.zip -d ${TMP_FOLDER}' // Get signer from nexus sh 'ci/devtools-bash-utils/nexus.sh -o ci/apple-platform-rs.tar.gz -g com.indygreg -i apple-platform-rs -v 0.26.0 -e tar.gz download-v2' @@ -78,6 +78,9 @@ pipeline { // Get Python lib dependency sh 'ci/devtools-bash-utils/nexus.sh -o tmp/Python-3.10.7.tgz -g org.python -i python -v 3.10.7 -e tgz download-v2' sh 'tar -C ${DIST_FOLDER} -xvf tmp/Python-3.10.7.tgz' + + // Get Samples repo + sh 'ci/getSampleRepositories.sh' } } } @@ -115,7 +118,7 @@ pipeline { cd samples . ./omvll.env cd ObjCHelloOmvll - xcodebuild -scheme ObjCHelloOmvll clean build -sdk iphoneos ONLY_ACTIVE_ARCH=YES + xcodebuild -scheme ObjCHelloOmvll clean build -sdk iphoneos -derivedDataPath ./output ONLY_ACTIVE_ARCH=YES ret=$? exit $ret ''' @@ -134,7 +137,7 @@ pipeline { cd samples . ./omvll.env cd SwiftHelloOmvll - xcodebuild -scheme SwiftHelloOmvll clean build -configuration Release -sdk iphoneos ONLY_ACTIVE_ARCH=YES + xcodebuild -scheme SwiftHelloOmvll clean build -configuration Release -sdk iphoneos -derivedDataPath ./output ONLY_ACTIVE_ARCH=YES ret=$? exit $ret ''' @@ -143,6 +146,35 @@ pipeline { } } + stage('Test apps') { + steps { + script { + dir("${WORKSPACE}") { + sh '''#!/usr/bin/env bash + source ci/devtools-bash-utils/utils.sh + cd samples + . ./omvll.env + cd GoodNight + execute xcodebuild -project GoodNight.xcodeproj -scheme GoodNight -sdk iphoneos -configuration Release -derivedDataPath ./output clean build + cd - + cd HexaCalc + execute xcodebuild -project HexaCalc.xcodeproj -scheme HexaCalc -sdk iphoneos -configuration Release -derivedDataPath ./output clean build + cd - + cd Kotoba + execute xcodebuild -project code/Kotoba.xcodeproj -scheme Kotoba -sdk iphoneos -configuration Release -derivedDataPath ./output clean build + cd - + cd HackerNews + execute xcodebuild -workspace HackerNews.xcworkspace -scheme HackerNews -sdk iphoneos -configuration Release -derivedDataPath ./output clean build + cd - + cd SnowPlow + execute xcodebuild -workspace Examples/demo/SnowplowObjcDemo/SnowplowDemo.xcworkspace -scheme SnowplowDemo -sdk iphoneos -configuration Release -derivedDataPath ./output clean build + cd - + ''' + } + } + } + } + stage('Create artifact') { steps { script { @@ -187,13 +219,22 @@ pipeline { } success { script { - bitbucketStatusNotify( - buildState: 'SUCCESSFUL', - buildName: "${env.JOB_NAME}", - buildKey: "${env.JOB_NAME}", - repoSlug: "${env.REPO_SLUG}", - commitId: "${env.GIT_COMMIT}" - ) + // Upload android artifacts when failed + archiveArtifacts allowEmptyArchive: true, artifacts: + // iOS Apps + "samples/ObjCHelloOmvll/output/Build/Products/Debug-iphoneos/ObjCHelloOmvll.app/**," + + "samples/SwiftHelloOmvll/output/Build/Products/Debug-iphoneos/SwiftHelloOmvll.app/**," + + "samples/GoodNight/output/Build/Products/Debug-iphoneos/GoodNight.app/**," + + "samples/HackerNews/output/Build/Products/Release-iphoneos/HackerNews.app/**," + + "samples/Kotoba/output/Build/Products/Release-iphoneos/Kotoba.app/**," + + "samples/SnowPlow/output/Build/Products/Release-iphoneos/SnowplowDemo.app/**,", fingerprint: true + bitbucketStatusNotify( + buildState: 'SUCCESSFUL', + buildName: "${env.JOB_NAME}", + buildKey: "${env.JOB_NAME}", + repoSlug: "${env.REPO_SLUG}", + commitId: "${env.GIT_COMMIT}" + ) } } unsuccessful { diff --git a/samples/omvll.env b/samples/omvll.env index 1e7f55ca..42de2be6 100644 --- a/samples/omvll.env +++ b/samples/omvll.env @@ -1,5 +1,5 @@ # This needs to be set from this specific folder using . ./omvll.env export OMVLL_CONFIG=$(pwd)/omvll-config.py -export OMVLL_PYTHONPATH=$(pwd)/../ci/distribution/Python-3.10.7/Lib +export OMVLL_PYTHONPATH=$(pwd)/../tmp/Python-3.10.7/Lib export OMVLL_PLUGIN_PATH=$(pwd)/../src/build_xcode/omvll.dylib export OMVLL_SWIFT_FRONTEND_SHIM_VERBOSE=1 \ No newline at end of file diff --git a/samples/patches/GoodNight.patch b/samples/patches/GoodNight.patch new file mode 100644 index 00000000..6ff8d86a --- /dev/null +++ b/samples/patches/GoodNight.patch @@ -0,0 +1,221 @@ +diff --git a/GoodNight Widget/GoodNight Widget.entitlements b/GoodNight Widget/GoodNight Widget.entitlements +index 7a93f66..147b8ee 100644 +--- a/GoodNight Widget/GoodNight Widget.entitlements ++++ b/GoodNight Widget/GoodNight Widget.entitlements +@@ -4,7 +4,7 @@ + + com.apple.security.application-groups + +- group.com.agatiello.GoodNight ++ group.com.build38.signal.group + + + +diff --git a/GoodNight.xcodeproj/project.pbxproj b/GoodNight.xcodeproj/project.pbxproj +index fa96a93..9a92727 100755 +--- a/GoodNight.xcodeproj/project.pbxproj ++++ b/GoodNight.xcodeproj/project.pbxproj +@@ -55,6 +55,9 @@ + 92F23AC21BD72AE700A097CB /* Storyboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 92F23AC41BD72AE700A097CB /* Storyboard.storyboard */; }; + 92FEA6B11DE6B324001EA06B /* TemperatureTouchBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 92FEA6B01DE6B324001EA06B /* TemperatureTouchBarController.m */; }; + ACCE45A21C1B6D3100CD094C /* SpringBoardServicesClient.m in Sources */ = {isa = PBXBuildFile; fileRef = ACCE45A11C1B6D3100CD094C /* SpringBoardServicesClient.m */; }; ++ B101C2B62BBC339100E11CBF /* libWBC.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B101C2B42BBC339100E11CBF /* libWBC.a */; }; ++ B101C2B72BBC339100E11CBF /* libTAK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B101C2B52BBC339100E11CBF /* libTAK.a */; }; ++ B101C2B92BBC33A400E11CBF /* license.tak in Resources */ = {isa = PBXBuildFile; fileRef = B101C2B82BBC33A400E11CBF /* license.tak */; }; + B96BB64F1B38D96600F1C3AE /* GammaController.m in Sources */ = {isa = PBXBuildFile; fileRef = B96BB64E1B38D96600F1C3AE /* GammaController.m */; }; + B9E5364B1B38D90D0097BF90 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B9E5364A1B38D90D0097BF90 /* main.m */; }; + B9E5364E1B38D90D0097BF90 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B9E5364D1B38D90D0097BF90 /* AppDelegate.m */; }; +@@ -186,6 +189,9 @@ + 92FEA6B01DE6B324001EA06B /* TemperatureTouchBarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TemperatureTouchBarController.m; sourceTree = ""; }; + ACCE45A01C1B6D3100CD094C /* SpringBoardServicesClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpringBoardServicesClient.h; sourceTree = ""; }; + ACCE45A11C1B6D3100CD094C /* SpringBoardServicesClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SpringBoardServicesClient.m; sourceTree = ""; }; ++ B101C2B42BBC339100E11CBF /* libWBC.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libWBC.a; path = "../../tmp/TAK-Client/iOS/C/libs/libWBC.a"; sourceTree = ""; }; ++ B101C2B52BBC339100E11CBF /* libTAK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTAK.a; path = "../../tmp/TAK-Client/iOS/C/libs/libTAK.a"; sourceTree = ""; }; ++ B101C2B82BBC33A400E11CBF /* license.tak */ = {isa = PBXFileReference; lastKnownFileType = file; name = license.tak; path = "../../tmp/TAK-Client/licenses/license.tak"; sourceTree = ""; }; + B96BB64D1B38D96600F1C3AE /* GammaController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GammaController.h; sourceTree = ""; }; + B96BB64E1B38D96600F1C3AE /* GammaController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GammaController.m; sourceTree = ""; }; + B9E536461B38D90D0097BF90 /* GoodNight.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GoodNight.app; sourceTree = BUILT_PRODUCTS_DIR; }; +@@ -220,6 +226,8 @@ + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( ++ B101C2B62BBC339100E11CBF /* libWBC.a in Frameworks */, ++ B101C2B72BBC339100E11CBF /* libTAK.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +@@ -347,6 +355,8 @@ + 925B811F1BE2BCE1003A6C4B /* Frameworks */ = { + isa = PBXGroup; + children = ( ++ B101C2B52BBC339100E11CBF /* libTAK.a */, ++ B101C2B42BBC339100E11CBF /* libWBC.a */, + 928F58251DED09B100BB52B8 /* MASShortcut.framework */, + 926B25451DEBC35B00F19980 /* Sparkle.framework */, + 925B81201BE2BCE1003A6C4B /* NotificationCenter.framework */, +@@ -617,6 +627,7 @@ + B9E5363D1B38D90D0097BF90 = { + isa = PBXGroup; + children = ( ++ B101C2B82BBC33A400E11CBF /* license.tak */, + 75885DCC1C2027A500B57791 /* Shared */, + B9E536481B38D90D0097BF90 /* GoodNight */, + 925B81221BE2BCE1003A6C4B /* GoodNight Widget */, +@@ -734,8 +745,8 @@ + }; + 925B811D1BE2BCE1003A6C4B = { + CreatedOnToolsVersion = 7.2; +- DevelopmentTeam = 9QKLXG4845; +- ProvisioningStyle = Manual; ++ DevelopmentTeam = WCMG6DCKKM; ++ ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.ApplicationGroups.iOS = { + enabled = 1; +@@ -747,8 +758,8 @@ + }; + B9E536451B38D90D0097BF90 = { + CreatedOnToolsVersion = 7.0; +- DevelopmentTeam = 9QKLXG4845; +- ProvisioningStyle = Manual; ++ DevelopmentTeam = WCMG6DCKKM; ++ ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.ApplicationGroups.iOS = { + enabled = 1; +@@ -768,8 +779,13 @@ + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( ++ English, + en, + Base, ++ ja, ++ nl, ++ de, ++ fr, + ); + mainGroup = B9E5363D1B38D90D0097BF90; + productRefGroup = B9E536471B38D90D0097BF90 /* Products */; +@@ -806,6 +822,7 @@ + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( ++ B101C2B92BBC33A400E11CBF /* license.tak in Resources */, + 0025148E1CDCCFCC00482F87 /* Localizable.strings in Resources */, + 75885DCB1C2026B700B57791 /* Defaults.plist in Resources */, + 92F23ABF1BD72ADD00A097CB /* LaunchScreen.storyboard in Resources */, +@@ -1075,8 +1092,9 @@ + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Brand Assets"; + CODE_SIGN_ENTITLEMENTS = GoodNight/GoodNight.entitlements; +- CODE_SIGN_IDENTITY = "iPhone Distribution: ADA Tech, LLC"; +- DEVELOPMENT_TEAM = 9QKLXG4845; ++ CODE_SIGN_IDENTITY = "Apple Development"; ++ CODE_SIGN_STYLE = Automatic; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", +@@ -1086,10 +1104,11 @@ + GCC_THUMB_SUPPORT = NO; + INFOPLIST_FILE = "$(SRCROOT)/GoodNight/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; +- PRODUCT_BUNDLE_IDENTIFIER = com.agatiello.GoodNight; ++ LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../../tmp/TAK-Client/iOS/C/libs"; ++ OTHER_LDFLAGS = "-lstdc++"; ++ PRODUCT_BUNDLE_IDENTIFIER = com.build38.GoodNight; + PRODUCT_NAME = GoodNight; +- PROVISIONING_PROFILE = "d859dcdf-12a2-465a-8ed2-3cb6ab6bf02b"; +- PROVISIONING_PROFILE_SPECIFIER = GoodNight; ++ PROVISIONING_PROFILE_SPECIFIER = ""; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Enterprise; +@@ -1100,15 +1119,16 @@ + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CODE_SIGN_ENTITLEMENTS = "GoodNight Widget/GoodNight Widget.entitlements"; +- DEVELOPMENT_TEAM = 9QKLXG4845; ++ CODE_SIGN_IDENTITY = "Apple Development"; ++ CODE_SIGN_STYLE = Automatic; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + ENABLE_BITCODE = NO; + GCC_PREFIX_HEADER = GoodNight/PrefixHeader.pch; + INFOPLIST_FILE = "GoodNight Widget/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; +- PRODUCT_BUNDLE_IDENTIFIER = "com.agatiello.GoodNight.GoodNight-Widget"; ++ PRODUCT_BUNDLE_IDENTIFIER = "com.build38.GoodNight.GoodNight-Widget"; + PRODUCT_NAME = "$(TARGET_NAME)"; +- PROVISIONING_PROFILE = "0294b426-e9c0-493a-bf93-262f3f9d5307"; +- PROVISIONING_PROFILE_SPECIFIER = "GoodNight Widget (Development)"; ++ PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + }; + name = Debug; +@@ -1133,9 +1153,11 @@ + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_ENTITLEMENTS = "GoodNight Widget/GoodNight Widget.entitlements"; ++ CODE_SIGN_IDENTITY = "Apple Development"; ++ CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; +- DEVELOPMENT_TEAM = 9QKLXG4845; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; +@@ -1151,10 +1173,9 @@ + INFOPLIST_FILE = "GoodNight Widget/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; +- PRODUCT_BUNDLE_IDENTIFIER = "com.agatiello.GoodNight.GoodNight-Widget"; ++ PRODUCT_BUNDLE_IDENTIFIER = "com.build38.GoodNight.GoodNight-Widget"; + PRODUCT_NAME = "$(TARGET_NAME)"; +- PROVISIONING_PROFILE = "877dad75-3f5b-4e87-83cc-3f39379469bf"; +- PROVISIONING_PROFILE_SPECIFIER = "GoodNight Widget"; ++ PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + VALIDATE_PRODUCT = YES; +@@ -1215,8 +1236,9 @@ + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Brand Assets"; + CODE_SIGN_ENTITLEMENTS = GoodNight/GoodNight.entitlements; +- CODE_SIGN_IDENTITY = "iPhone Developer: Anthony Agatiello (J9M2GPP36A)"; +- DEVELOPMENT_TEAM = 9QKLXG4845; ++ CODE_SIGN_IDENTITY = "Apple Development"; ++ CODE_SIGN_STYLE = Automatic; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", +@@ -1226,10 +1248,11 @@ + GCC_THUMB_SUPPORT = NO; + INFOPLIST_FILE = "$(SRCROOT)/GoodNight/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; +- PRODUCT_BUNDLE_IDENTIFIER = com.agatiello.GoodNight; ++ LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../../tmp/TAK-Client/iOS/C/libs"; ++ OTHER_LDFLAGS = "-lstdc++"; ++ PRODUCT_BUNDLE_IDENTIFIER = com.build38.GoodNight; + PRODUCT_NAME = GoodNight; +- PROVISIONING_PROFILE = "588851c4-c84d-4ac4-a98d-e468ce1eca1e"; +- PROVISIONING_PROFILE_SPECIFIER = "GoodNight (Development)"; ++ PROVISIONING_PROFILE_SPECIFIER = ""; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; +diff --git a/GoodNight/GoodNight.entitlements b/GoodNight/GoodNight.entitlements +index 7a93f66..147b8ee 100644 +--- a/GoodNight/GoodNight.entitlements ++++ b/GoodNight/GoodNight.entitlements +@@ -4,7 +4,7 @@ + + com.apple.security.application-groups + +- group.com.agatiello.GoodNight ++ group.com.build38.signal.group + + + diff --git a/samples/patches/HackerNews.patch b/samples/patches/HackerNews.patch new file mode 100644 index 00000000..56eae264 --- /dev/null +++ b/samples/patches/HackerNews.patch @@ -0,0 +1,311 @@ +diff --git a/HackerNews.xcodeproj/project.pbxproj b/HackerNews.xcodeproj/project.pbxproj +index f42a2fc..c8cb1c6 100644 +--- a/HackerNews.xcodeproj/project.pbxproj ++++ b/HackerNews.xcodeproj/project.pbxproj +@@ -10,6 +10,9 @@ + 4F8219F707E687C004248DF1 /* libPods-HackerNewsTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 968F53F3E2A631FD683B394F /* libPods-HackerNewsTests.a */; }; + 98F2FC9208B97EF48EA94F5C /* libPods-HackerNews.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6179244E1E7A250286CCF78 /* libPods-HackerNews.a */; }; + A639CD2397C7DD8F920991EF /* libPods-HackerNewsUITests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 192727F69DBDD660CDA8204C /* libPods-HackerNewsUITests.a */; }; ++ B139F6B52BA9C9BD00806ED9 /* libTAK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B139F6B32BA9C9BD00806ED9 /* libTAK.a */; }; ++ B139F6B62BA9C9BD00806ED9 /* libWBC.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B139F6B42BA9C9BD00806ED9 /* libWBC.a */; }; ++ B139F6B82BA9CA5F00806ED9 /* license.tak in Resources */ = {isa = PBXBuildFile; fileRef = B139F6B72BA9CA5F00806ED9 /* license.tak */; }; + D7229DF8193EB2C2008F661B /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D74A035F193DA4F500F01247 /* Images.xcassets */; }; + D74A0359193DA4F500F01247 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D74A0358193DA4F500F01247 /* AppDelegate.swift */; }; + D74A035E193DA4F500F01247 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D74A035C193DA4F500F01247 /* Main.storyboard */; }; +@@ -44,6 +47,9 @@ + 968F53F3E2A631FD683B394F /* libPods-HackerNewsTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HackerNewsTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + A6179244E1E7A250286CCF78 /* libPods-HackerNews.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HackerNews.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + A6DF7E9167DA8234327BD2B4 /* Pods-HackerNewsUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HackerNewsUITests.release.xcconfig"; path = "Pods/Target Support Files/Pods-HackerNewsUITests/Pods-HackerNewsUITests.release.xcconfig"; sourceTree = ""; }; ++ B139F6B32BA9C9BD00806ED9 /* libTAK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTAK.a; path = "../tmp/TAK-Client/iOS/C/libs/libTAK.a"; sourceTree = ""; }; ++ B139F6B42BA9C9BD00806ED9 /* libWBC.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libWBC.a; path = "../tmp/TAK-Client/iOS/C/libs/libWBC.a"; sourceTree = ""; }; ++ B139F6B72BA9CA5F00806ED9 /* license.tak */ = {isa = PBXFileReference; lastKnownFileType = file; name = license.tak; path = "../../tmp/TAK-Client/licenses/license.tak"; sourceTree = ""; }; + B84E16FC9C96879C64AC2254 /* Pods-HackerNews.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HackerNews.release.xcconfig"; path = "Pods/Target Support Files/Pods-HackerNews/Pods-HackerNews.release.xcconfig"; sourceTree = ""; }; + CDADB96A77180BC65D64FC00 /* Pods-HackerNewsTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HackerNewsTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-HackerNewsTests/Pods-HackerNewsTests.release.xcconfig"; sourceTree = ""; }; + D71CA51D194698BC006DE243 /* HackerNews-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "HackerNews-Bridging-Header.h"; sourceTree = ""; }; +@@ -67,6 +73,8 @@ + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( ++ B139F6B52BA9C9BD00806ED9 /* libTAK.a in Frameworks */, ++ B139F6B62BA9C9BD00806ED9 /* libWBC.a in Frameworks */, + 98F2FC9208B97EF48EA94F5C /* libPods-HackerNews.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; +@@ -106,6 +114,8 @@ + 3B07FA30BCC75CD6EA81C8E9 /* Frameworks */ = { + isa = PBXGroup; + children = ( ++ B139F6B32BA9C9BD00806ED9 /* libTAK.a */, ++ B139F6B42BA9C9BD00806ED9 /* libWBC.a */, + A6179244E1E7A250286CCF78 /* libPods-HackerNews.a */, + 968F53F3E2A631FD683B394F /* libPods-HackerNewsTests.a */, + 192727F69DBDD660CDA8204C /* libPods-HackerNewsUITests.a */, +@@ -116,6 +126,7 @@ + D74A034A193DA4F500F01247 = { + isa = PBXGroup; + children = ( ++ B139F6B72BA9CA5F00806ED9 /* license.tak */, + D74A0355193DA4F500F01247 /* HackerNews */, + D74A0368193DA4F600F01247 /* HackerNewsTests */, + D7EF90A81B6C617F00EB6915 /* HackerNewsUITests */, +@@ -204,8 +215,6 @@ + D74A034F193DA4F500F01247 /* Sources */, + D74A0350193DA4F500F01247 /* Frameworks */, + D74A0351193DA4F500F01247 /* Resources */, +- E649E0F0A245F27646543313 /* [CP] Embed Pods Frameworks */, +- 2CD489E7A998054DCD029114 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); +@@ -224,8 +233,6 @@ + D74A0361193DA4F600F01247 /* Sources */, + D74A0362193DA4F600F01247 /* Frameworks */, + D74A0363193DA4F600F01247 /* Resources */, +- 1FFE991F90CC111CD0FE9EDA /* [CP] Embed Pods Frameworks */, +- 92E674EBF015FC33B307D66C /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); +@@ -245,8 +252,6 @@ + D7EF90A31B6C617F00EB6915 /* Sources */, + D7EF90A41B6C617F00EB6915 /* Frameworks */, + D7EF90A51B6C617F00EB6915 /* Resources */, +- FADDE607A9687B1CFB5A1780 /* [CP] Copy Pods Resources */, +- A23E0496E9CEB14DB919223F /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); +@@ -289,6 +294,7 @@ + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( ++ English, + en, + Base, + ); +@@ -309,6 +315,7 @@ + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( ++ B139F6B82BA9CA5F00806ED9 /* license.tak in Resources */, + D74A035E193DA4F500F01247 /* Main.storyboard in Resources */, + D7229DF8193EB2C2008F661B /* Images.xcassets in Resources */, + ); +@@ -331,34 +338,22 @@ + /* End PBXResourcesBuildPhase section */ + + /* Begin PBXShellScriptBuildPhase section */ +- 1FFE991F90CC111CD0FE9EDA /* [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-HackerNewsTests/Pods-HackerNewsTests-frameworks.sh\"\n"; +- showEnvVarsInLog = 0; +- }; + 23B36DD4702EE7C031BF2A86 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( ++ "${PODS_PODFILE_DIR_PATH}/Podfile.lock", ++ "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( ++ "$(DERIVED_FILE_DIR)/Pods-HackerNews-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"; ++ 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; + }; + 25ECEC59AC32C6EDC014FAB8 /* [CP] Check Pods Manifest.lock */ = { +@@ -367,28 +362,16 @@ + files = ( + ); + inputPaths = ( ++ "${PODS_PODFILE_DIR_PATH}/Podfile.lock", ++ "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( ++ "$(DERIVED_FILE_DIR)/Pods-HackerNewsTests-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"; +- showEnvVarsInLog = 0; +- }; +- 2CD489E7A998054DCD029114 /* [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-HackerNews/Pods-HackerNews-resources.sh\"\n"; ++ 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; + }; + 71708FAC63CB9F6C090885FF /* [CP] Check Pods Manifest.lock */ = { +@@ -397,73 +380,16 @@ + files = ( + ); + inputPaths = ( ++ "${PODS_PODFILE_DIR_PATH}/Podfile.lock", ++ "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( ++ "$(DERIVED_FILE_DIR)/Pods-HackerNewsUITests-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"; +- showEnvVarsInLog = 0; +- }; +- 92E674EBF015FC33B307D66C /* [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-HackerNewsTests/Pods-HackerNewsTests-resources.sh\"\n"; +- showEnvVarsInLog = 0; +- }; +- A23E0496E9CEB14DB919223F /* [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-HackerNewsUITests/Pods-HackerNewsUITests-frameworks.sh\"\n"; +- showEnvVarsInLog = 0; +- }; +- E649E0F0A245F27646543313 /* [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-HackerNews/Pods-HackerNews-frameworks.sh\"\n"; +- showEnvVarsInLog = 0; +- }; +- FADDE607A9687B1CFB5A1780 /* [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-HackerNewsUITests/Pods-HackerNewsUITests-resources.sh\"\n"; ++ 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; + }; + /* End PBXShellScriptBuildPhase section */ +@@ -616,10 +542,32 @@ + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COMPRESS_PNG_FILES = YES; +- DEVELOPMENT_TEAM = P229S7564Q; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + INFOPLIST_FILE = HackerNews/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; ++ LIBRARY_SEARCH_PATHS = ( ++ "$(inherited)", ++ "\"${PODS_CONFIGURATION_BUILD_DIR}/Firebase\"", ++ "\"${PODS_ROOT}/Firebase\"", ++ "$(PROJECT_DIR)/../../tmp/TAK-Client/iOS/C/libs", ++ ); ++ OTHER_CFLAGS = "-fno-legacy-pass-manager"; ++ OTHER_LDFLAGS = ( ++ "$(inherited)", ++ "-ObjC", ++ "-l\"Firebase\"", ++ "-l\"FirebaseStatic\"", ++ "-l\"c++\"", ++ "-l\"icucore\"", ++ "-framework", ++ "\"CFNetwork\"", ++ "-framework", ++ "\"Security\"", ++ "-framework", ++ "\"SystemConfiguration\"", ++ "-lstdc++", ++ ); + PRODUCT_BUNDLE_IDENTIFIER = me.amitburst.hn; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; +@@ -639,10 +587,32 @@ + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COMPRESS_PNG_FILES = YES; +- DEVELOPMENT_TEAM = P229S7564Q; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + INFOPLIST_FILE = HackerNews/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; ++ LIBRARY_SEARCH_PATHS = ( ++ "$(inherited)", ++ "\"${PODS_CONFIGURATION_BUILD_DIR}/Firebase\"", ++ "\"${PODS_ROOT}/Firebase\"", ++ "$(PROJECT_DIR)/../../tmp/TAK-Client/iOS/C/libs", ++ ); ++ OTHER_CFLAGS = "-fno-legacy-pass-manager"; ++ OTHER_LDFLAGS = ( ++ "$(inherited)", ++ "-ObjC", ++ "-l\"Firebase\"", ++ "-l\"FirebaseStatic\"", ++ "-l\"c++\"", ++ "-l\"icucore\"", ++ "-framework", ++ "\"CFNetwork\"", ++ "-framework", ++ "\"Security\"", ++ "-framework", ++ "\"SystemConfiguration\"", ++ "-lstdc++", ++ ); + PRODUCT_BUNDLE_IDENTIFIER = me.amitburst.hn; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; diff --git a/samples/patches/HexaCalc.patch b/samples/patches/HexaCalc.patch new file mode 100644 index 00000000..c378c6ff --- /dev/null +++ b/samples/patches/HexaCalc.patch @@ -0,0 +1,418 @@ +diff --git a/HexaCalc.xcodeproj/project.pbxproj b/HexaCalc.xcodeproj/project.pbxproj +index 84319f0..2512b33 100644 +--- a/HexaCalc.xcodeproj/project.pbxproj ++++ b/HexaCalc.xcodeproj/project.pbxproj +@@ -12,43 +12,26 @@ + 9D7C09BF25EC61E700771D52 /* HexaCalcIconIndigo-83.5@3x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C099625EC61E500771D52 /* HexaCalcIconIndigo-83.5@3x~ipad.png */; }; + 9D7C09C025EC61E700771D52 /* HexaCalcIconBlue@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C099725EC61E500771D52 /* HexaCalcIconBlue@2x~ipad.png */; }; + 9D7C09C125EC61E700771D52 /* HexaCalcIconOrange~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C099825EC61E500771D52 /* HexaCalcIconOrange~ipad.png */; }; +- 9D7C09C225EC61E700771D52 /* HexaCalcIconRed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C099925EC61E500771D52 /* HexaCalcIconRed@2x.png */; }; + 9D7C09C325EC61E700771D52 /* HexaCalcIconGreen-83.5@3x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C099A25EC61E500771D52 /* HexaCalcIconGreen-83.5@3x~ipad.png */; }; +- 9D7C09C425EC61E700771D52 /* HexaCalcIconIndigo@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C099B25EC61E500771D52 /* HexaCalcIconIndigo@2x.png */; }; + 9D7C09C525EC61E700771D52 /* HexaCalcIconRed~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C099C25EC61E500771D52 /* HexaCalcIconRed~ipad.png */; }; + 9D7C09C625EC61E700771D52 /* HexaCalcIconPurple-83.5@3x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C099D25EC61E500771D52 /* HexaCalcIconPurple-83.5@3x~ipad.png */; }; + 9D7C09C725EC61E700771D52 /* HexaCalcIconPurple@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C099E25EC61E500771D52 /* HexaCalcIconPurple@2x~ipad.png */; }; +- 9D7C09C825EC61E700771D52 /* HexaCalcIconGreen@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C099F25EC61E500771D52 /* HexaCalcIconGreen@2x.png */; }; + 9D7C09C925EC61E700771D52 /* HexaCalcIconGreen@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09A025EC61E500771D52 /* HexaCalcIconGreen@2x~ipad.png */; }; + 9D7C09CA25EC61E700771D52 /* HexaCalcIconYellow-83.5@3x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09A125EC61E500771D52 /* HexaCalcIconYellow-83.5@3x~ipad.png */; }; + 9D7C09CB25EC61E700771D52 /* HexaCalcIconYellow~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09A225EC61E500771D52 /* HexaCalcIconYellow~ipad.png */; }; + 9D7C09CC25EC61E700771D52 /* HexaCalcIconTeal~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09A325EC61E500771D52 /* HexaCalcIconTeal~ipad.png */; }; +- 9D7C09CD25EC61E700771D52 /* HexaCalcIconGreen@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09A425EC61E500771D52 /* HexaCalcIconGreen@3x.png */; }; +- 9D7C09CE25EC61E700771D52 /* HexaCalcIconPurple@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09A525EC61E600771D52 /* HexaCalcIconPurple@3x.png */; }; +- 9D7C09CF25EC61E700771D52 /* HexaCalcIconOrange@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09A625EC61E600771D52 /* HexaCalcIconOrange@2x.png */; }; +- 9D7C09D025EC61E700771D52 /* HexaCalcIconIndigo@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09A725EC61E600771D52 /* HexaCalcIconIndigo@3x.png */; }; +- 9D7C09D125EC61E700771D52 /* HexaCalcIconRed@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09A825EC61E600771D52 /* HexaCalcIconRed@3x.png */; }; + 9D7C09D225EC61E700771D52 /* HexaCalcIconOrange-83.5@3x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09A925EC61E600771D52 /* HexaCalcIconOrange-83.5@3x~ipad.png */; }; +- 9D7C09D325EC61E700771D52 /* HexaCalcIconPurple@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09AA25EC61E600771D52 /* HexaCalcIconPurple@2x.png */; }; + 9D7C09D425EC61E700771D52 /* HexaCalcIconPurple~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09AB25EC61E600771D52 /* HexaCalcIconPurple~ipad.png */; }; +- 9D7C09D525EC61E700771D52 /* HexaCalcIconYellow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09AC25EC61E600771D52 /* HexaCalcIconYellow@2x.png */; }; + 9D7C09D625EC61E700771D52 /* HexaCalcIconBlue~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09AD25EC61E600771D52 /* HexaCalcIconBlue~ipad.png */; }; + 9D7C09D725EC61E700771D52 /* HexaCalcIconYellow@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09AE25EC61E600771D52 /* HexaCalcIconYellow@2x~ipad.png */; }; + 9D7C09D825EC61E700771D52 /* HexaCalcIconOrange@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09AF25EC61E600771D52 /* HexaCalcIconOrange@2x~ipad.png */; }; + 9D7C09D925EC61E700771D52 /* HexaCalcIconBlue-83.5@3x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09B025EC61E600771D52 /* HexaCalcIconBlue-83.5@3x~ipad.png */; }; +- 9D7C09DA25EC61E700771D52 /* HexaCalcIconTeal@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09B125EC61E600771D52 /* HexaCalcIconTeal@3x.png */; }; + 9D7C09DB25EC61E700771D52 /* HexaCalcIconTeal@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09B225EC61E600771D52 /* HexaCalcIconTeal@2x~ipad.png */; }; + 9D7C09DC25EC61E700771D52 /* HexaCalcIconRed-83.5@3x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09B325EC61E600771D52 /* HexaCalcIconRed-83.5@3x~ipad.png */; }; +- 9D7C09DD25EC61E700771D52 /* HexaCalcIconGreen1024.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09B425EC61E600771D52 /* HexaCalcIconGreen1024.png */; }; + 9D7C09DE25EC61E700771D52 /* HexaCalcIconGreen~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09B525EC61E600771D52 /* HexaCalcIconGreen~ipad.png */; }; + 9D7C09DF25EC61E700771D52 /* HexaCalcIconTeal-83.5@3x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09B625EC61E600771D52 /* HexaCalcIconTeal-83.5@3x~ipad.png */; }; +- 9D7C09E025EC61E700771D52 /* HexaCalcIconBlue@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09B725EC61E600771D52 /* HexaCalcIconBlue@2x.png */; }; +- 9D7C09E125EC61E700771D52 /* HexaCalcIconYellow@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09B825EC61E600771D52 /* HexaCalcIconYellow@3x.png */; }; + 9D7C09E225EC61E700771D52 /* HexaCalcIconIndigo~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09B925EC61E600771D52 /* HexaCalcIconIndigo~ipad.png */; }; +- 9D7C09E325EC61E700771D52 /* HexaCalcIconOrange@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09BA25EC61E600771D52 /* HexaCalcIconOrange@3x.png */; }; +- 9D7C09E425EC61E700771D52 /* HexaCalcIconTeal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09BB25EC61E600771D52 /* HexaCalcIconTeal@2x.png */; }; + 9D7C09E525EC61E700771D52 /* HexaCalcIconIndigo@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09BC25EC61E700771D52 /* HexaCalcIconIndigo@2x~ipad.png */; }; +- 9D7C09E625EC61E700771D52 /* HexaCalcIconBlue@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09BD25EC61E700771D52 /* HexaCalcIconBlue@3x.png */; }; + 9D7C09E725EC61E700771D52 /* HexaCalcIconRed@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D7C09BE25EC61E700771D52 /* HexaCalcIconRed@2x~ipad.png */; }; + 9D8460252A46C182008C5A99 /* HistoryButtonViewConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D8460242A46C182008C5A99 /* HistoryButtonViewConverter.swift */; }; + 9D8A805524CB82A0008CDECE /* Formatter+BinaryString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D8A805424CB82A0008CDECE /* Formatter+BinaryString.swift */; }; +@@ -85,6 +68,9 @@ + 9DEF24A824C553F100701F5B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9DEF24A624C553F100701F5B /* LaunchScreen.storyboard */; }; + 9DEF24BE24C5578300701F5B /* DecimalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DEF24BD24C5578300701F5B /* DecimalViewController.swift */; }; + 9DF9A11A294C30730074C07D /* SettingsHexaCalcUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9A119294C30730074C07D /* SettingsHexaCalcUITests.swift */; }; ++ B101C2BD2BBD47C900E11CBF /* libTAK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B101C2BB2BBD47C900E11CBF /* libTAK.a */; }; ++ B101C2BE2BBD47C900E11CBF /* libWBC.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B101C2BC2BBD47C900E11CBF /* libWBC.a */; }; ++ B101C2C02BBD47D400E11CBF /* license.tak in Resources */ = {isa = PBXBuildFile; fileRef = B101C2BF2BBD47D400E11CBF /* license.tak */; }; + C272D50A28E75D7C00E6C374 /* CalculationData.swift in Sources */ = {isa = PBXBuildFile; fileRef = C272D50928E75D7C00E6C374 /* CalculationData.swift */; }; + C2D2E1C428DDF90A0094DA13 /* CalculationHistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2D2E1C328DDF90A0094DA13 /* CalculationHistoryViewController.swift */; }; + /* End PBXBuildFile section */ +@@ -181,6 +167,9 @@ + 9DEF24A924C553F100701F5B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9DEF24BD24C5578300701F5B /* DecimalViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecimalViewController.swift; sourceTree = ""; }; + 9DF9A119294C30730074C07D /* SettingsHexaCalcUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsHexaCalcUITests.swift; sourceTree = ""; }; ++ B101C2BB2BBD47C900E11CBF /* libTAK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTAK.a; path = "../../tmp/TAK-Client/iOS/C/libs/libTAK.a"; sourceTree = ""; }; ++ B101C2BC2BBD47C900E11CBF /* libWBC.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libWBC.a; path = "../../tmp/TAK-Client/iOS/C/libs/libWBC.a"; sourceTree = ""; }; ++ B101C2BF2BBD47D400E11CBF /* license.tak */ = {isa = PBXFileReference; lastKnownFileType = file; name = license.tak; path = "../../tmp/TAK-Client/licenses/license.tak"; sourceTree = ""; }; + C272D50928E75D7C00E6C374 /* CalculationData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalculationData.swift; sourceTree = ""; }; + C2D2E1C328DDF90A0094DA13 /* CalculationHistoryViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalculationHistoryViewController.swift; sourceTree = ""; }; + /* End PBXFileReference section */ +@@ -197,6 +186,8 @@ + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( ++ B101C2BD2BBD47C900E11CBF /* libTAK.a in Frameworks */, ++ B101C2BE2BBD47C900E11CBF /* libWBC.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +@@ -350,9 +341,11 @@ + 9DEF248A24C553F000701F5B = { + isa = PBXGroup; + children = ( ++ B101C2BF2BBD47D400E11CBF /* license.tak */, + 9DEF249524C553F000701F5B /* HexaCalc */, + 9DE32E3428DEDBDF00BB222C /* HexaCalcUITests */, + 9DEF249424C553F000701F5B /* Products */, ++ B101C2BA2BBD47C900E11CBF /* Frameworks */, + ); + sourceTree = ""; + }; +@@ -380,6 +373,15 @@ + path = HexaCalc; + sourceTree = ""; + }; ++ B101C2BA2BBD47C900E11CBF /* Frameworks */ = { ++ isa = PBXGroup; ++ children = ( ++ B101C2BB2BBD47C900E11CBF /* libTAK.a */, ++ B101C2BC2BBD47C900E11CBF /* libWBC.a */, ++ ); ++ name = Frameworks; ++ sourceTree = ""; ++ }; + /* End PBXGroup section */ + + /* Begin PBXNativeTarget section */ +@@ -469,22 +471,15 @@ + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( +- 9D7C09D025EC61E700771D52 /* HexaCalcIconIndigo@3x.png in Resources */, ++ B101C2C02BBD47D400E11CBF /* license.tak in Resources */, + 9D7C09E725EC61E700771D52 /* HexaCalcIconRed@2x~ipad.png in Resources */, + 9D7C09C525EC61E700771D52 /* HexaCalcIconRed~ipad.png in Resources */, +- 9D7C09CE25EC61E700771D52 /* HexaCalcIconPurple@3x.png in Resources */, + 9D7C09C125EC61E700771D52 /* HexaCalcIconOrange~ipad.png in Resources */, + 9DEF24A824C553F100701F5B /* LaunchScreen.storyboard in Resources */, + 9DC7581B27ED88A800BB2953 /* SwitchTableViewCell.xib in Resources */, +- 9D7C09E125EC61E700771D52 /* HexaCalcIconYellow@3x.png in Resources */, +- 9D7C09CF25EC61E700771D52 /* HexaCalcIconOrange@2x.png in Resources */, +- 9D7C09E625EC61E700771D52 /* HexaCalcIconBlue@3x.png in Resources */, +- 9D7C09DD25EC61E700771D52 /* HexaCalcIconGreen1024.png in Resources */, + 9DEF24A524C553F100701F5B /* Assets.xcassets in Resources */, + 9D7C09D625EC61E700771D52 /* HexaCalcIconBlue~ipad.png in Resources */, + 9DEF24A024C553F000701F5B /* Main.storyboard in Resources */, +- 9D7C09D525EC61E700771D52 /* HexaCalcIconYellow@2x.png in Resources */, +- 9D7C09D325EC61E700771D52 /* HexaCalcIconPurple@2x.png in Resources */, + 9D7C09C725EC61E700771D52 /* HexaCalcIconPurple@2x~ipad.png in Resources */, + 9D7C09D825EC61E700771D52 /* HexaCalcIconOrange@2x~ipad.png in Resources */, + 9D7C09DC25EC61E700771D52 /* HexaCalcIconRed-83.5@3x~ipad.png in Resources */, +@@ -493,27 +488,18 @@ + 9D7C09CC25EC61E700771D52 /* HexaCalcIconTeal~ipad.png in Resources */, + 9D7C09C925EC61E700771D52 /* HexaCalcIconGreen@2x~ipad.png in Resources */, + 9D7C09D225EC61E700771D52 /* HexaCalcIconOrange-83.5@3x~ipad.png in Resources */, +- 9D7C09CD25EC61E700771D52 /* HexaCalcIconGreen@3x.png in Resources */, + 9D7C09CB25EC61E700771D52 /* HexaCalcIconYellow~ipad.png in Resources */, + 9D7C09E525EC61E700771D52 /* HexaCalcIconIndigo@2x~ipad.png in Resources */, + 9D7C09C325EC61E700771D52 /* HexaCalcIconGreen-83.5@3x~ipad.png in Resources */, +- 9D7C09D125EC61E700771D52 /* HexaCalcIconRed@3x.png in Resources */, +- 9D7C09C425EC61E700771D52 /* HexaCalcIconIndigo@2x.png in Resources */, + 9D7C09D425EC61E700771D52 /* HexaCalcIconPurple~ipad.png in Resources */, +- 9D7C09E425EC61E700771D52 /* HexaCalcIconTeal@2x.png in Resources */, +- 9D7C09E025EC61E700771D52 /* HexaCalcIconBlue@2x.png in Resources */, + 9D7C09D925EC61E700771D52 /* HexaCalcIconBlue-83.5@3x~ipad.png in Resources */, +- 9D7C09E325EC61E700771D52 /* HexaCalcIconOrange@3x.png in Resources */, +- 9D7C09C225EC61E700771D52 /* HexaCalcIconRed@2x.png in Resources */, + 9D7C09C025EC61E700771D52 /* HexaCalcIconBlue@2x~ipad.png in Resources */, + 9D7C09DE25EC61E700771D52 /* HexaCalcIconGreen~ipad.png in Resources */, + 9D7C09C625EC61E700771D52 /* HexaCalcIconPurple-83.5@3x~ipad.png in Resources */, +- 9D7C09DA25EC61E700771D52 /* HexaCalcIconTeal@3x.png in Resources */, + 9D7C09E225EC61E700771D52 /* HexaCalcIconIndigo~ipad.png in Resources */, + 9D7C09D725EC61E700771D52 /* HexaCalcIconYellow@2x~ipad.png in Resources */, + 9D7C09DB25EC61E700771D52 /* HexaCalcIconTeal@2x~ipad.png in Resources */, + 9D7C09CA25EC61E700771D52 /* HexaCalcIconYellow-83.5@3x~ipad.png in Resources */, +- 9D7C09C825EC61E700771D52 /* HexaCalcIconGreen@2x.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +@@ -769,7 +755,7 @@ + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 10; +- DEVELOPMENT_TEAM = QMBJV5C74X; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + INFOPLIST_FILE = HexaCalc/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; +@@ -777,7 +763,9 @@ + "$(inherited)", + "@executable_path/Frameworks", + ); ++ LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../../tmp/TAK-Client/iOS/C/libs"; + MARKETING_VERSION = 1.5.0; ++ OTHER_LDFLAGS = "-lstdc++"; + PRODUCT_BUNDLE_IDENTIFIER = com.example.HexaCalc; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; +@@ -791,7 +779,7 @@ + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 10; +- DEVELOPMENT_TEAM = QMBJV5C74X; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + INFOPLIST_FILE = HexaCalc/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; +@@ -799,7 +787,9 @@ + "$(inherited)", + "@executable_path/Frameworks", + ); ++ LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../../tmp/TAK-Client/iOS/C/libs"; + MARKETING_VERSION = 1.5.0; ++ OTHER_LDFLAGS = "-lstdc++"; + PRODUCT_BUNDLE_IDENTIFIER = com.example.HexaCalc; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; +diff --git a/HexaCalc/Info.plist b/HexaCalc/Info.plist +index ec6056c..eed4117 100644 +--- a/HexaCalc/Info.plist ++++ b/HexaCalc/Info.plist +@@ -10,81 +10,6 @@ + $(EXECUTABLE_NAME) + CFBundleIcons + +- CFBundleAlternateIcons +- +- HexaCalcIconBlue +- +- CFBundleIconFiles +- +- HexaCalcIconBlue +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconGreen +- +- CFBundleIconFiles +- +- HexaCalcIconGreen +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconIndigo +- +- CFBundleIconFiles +- +- HexaCalcIconIndigo +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconOrange +- +- CFBundleIconFiles +- +- HexaCalcIconOrange +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconPurple +- +- CFBundleIconFiles +- +- HexaCalcIconPurple +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconRed +- +- CFBundleIconFiles +- +- HexaCalcIconRed +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconTeal +- +- CFBundleIconFiles +- +- HexaCalcIconTeal +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconYellow +- +- CFBundleIconFiles +- +- HexaCalcIconYellow +- +- UIPrerenderedIcon +- NO +- +- + CFBundlePrimaryIcon + + CFBundleIconFiles +@@ -97,81 +22,6 @@ + + CFBundleIcons~ipad + +- CFBundleAlternateIcons +- +- HexaCalcIconBlue +- +- CFBundleIconFiles +- +- HexaCalcIconBlue +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconGreen +- +- CFBundleIconFiles +- +- HexaCalcIconGreen +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconIndigo +- +- CFBundleIconFiles +- +- HexaCalcIconIndigo +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconOrange +- +- CFBundleIconFiles +- +- HexaCalcIconOrange +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconPurple +- +- CFBundleIconFiles +- +- HexaCalcIconPurple +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconRed +- +- CFBundleIconFiles +- +- HexaCalcIconRed +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconTeal +- +- CFBundleIconFiles +- +- HexaCalcIconTeal +- +- UIPrerenderedIcon +- NO +- +- HexaCalcIconYellow +- +- CFBundleIconFiles +- +- HexaCalcIconYellow +- +- UIPrerenderedIcon +- NO +- +- + CFBundlePrimaryIcon + + CFBundleIconFiles +diff --git a/HexaCalc/Model/ColourNumberConverter.swift b/HexaCalc/Model/ColourNumberConverter.swift +index a04a064..3a47afd 100644 +--- a/HexaCalc/Model/ColourNumberConverter.swift ++++ b/HexaCalc/Model/ColourNumberConverter.swift +@@ -58,48 +58,10 @@ class ColourNumberConverter { + } + + static func getAppIconNameFromIndex(index: Int) -> String { +- switch index { +- case 0: +- return "HexaCalcIconRed" +- case 1: +- return "HexaCalcIconOrange" +- case 2: +- return "HexaCalcIconYellow" +- case 3: +- return "HexaCalcIconGreen" +- case 4: +- return "HexaCalcIconBlue" +- case 5: +- return "HexaCalcIconTeal" +- case 6: +- return "HexaCalcIconIndigo" +- case 7: +- return "HexaCalcIconPurple" +- default: +- return "HexaCalcIconGreen" +- } ++ return "HexaCalcIconGreen" + } + + static func getColourNameFromIndex(index: Int) -> String { +- switch index { +- case 0: +- return "Red" +- case 1: +- return "Orange" +- case 2: +- return "Yellow" +- case 3: +- return "Green" +- case 4: +- return "Blue" +- case 5: +- return "Teal" +- case 6: +- return "Indigo" +- case 7: +- return "Violet" +- default: +- return "Green" +- } ++ return "Green" + } + } diff --git a/samples/patches/Kotoba.patch b/samples/patches/Kotoba.patch new file mode 100644 index 00000000..74d694d9 --- /dev/null +++ b/samples/patches/Kotoba.patch @@ -0,0 +1,166 @@ +diff --git a/code/Kotoba.xcodeproj/project.pbxproj b/code/Kotoba.xcodeproj/project.pbxproj +index 621986b..0dd9c0a 100644 +--- a/code/Kotoba.xcodeproj/project.pbxproj ++++ b/code/Kotoba.xcodeproj/project.pbxproj +@@ -22,6 +22,9 @@ + 967E998BC07D453DE26EEE83 /* WordListDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 967E990F894B4E27CE8337A4 /* WordListDataSource.swift */; }; + 967E99DE08067E1B31567C98 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE918C4F1A22A5F5006043CF /* AppDelegate.swift */; }; + 967E9E3969BCBD8408ADCB69 /* WordListDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 967E990F894B4E27CE8337A4 /* WordListDataSource.swift */; }; ++ B101C2B02BBC135100E11CBF /* libWBC.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B101C2AE2BBC135100E11CBF /* libWBC.a */; }; ++ B101C2B12BBC135100E11CBF /* libTAK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B101C2AF2BBC135100E11CBF /* libTAK.a */; }; ++ B101C2B32BBC136A00E11CBF /* license.tak in Resources */ = {isa = PBXBuildFile; fileRef = B101C2B22BBC136A00E11CBF /* license.tak */; }; + B6232DEF24A7881700B0CC38 /* RoundedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 967E98DD562220BBE20A8C1F /* RoundedView.swift */; }; + B62B309823B7F60900583D3D /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = B62B309A23B7F60900583D3D /* Localizable.stringsdict */; }; + B65A4E02238435ED000C9A4F /* Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44CFA6AA2381F0CB00D7ECCC /* Debug.swift */; }; +@@ -110,6 +113,9 @@ + 967E9C49B74C80223D273414 /* Chocktuba.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Chocktuba.swift; sourceTree = ""; }; + 967E9CB9914B758828733936 /* WordListStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WordListStore.swift; sourceTree = ""; }; + 967E9EDA541A0A73088A86DC /* WordListStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WordListStrings.swift; sourceTree = ""; }; ++ B101C2AE2BBC135100E11CBF /* libWBC.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libWBC.a; path = "../../tmp/TAK-Client/iOS/C/libs/libWBC.a"; sourceTree = ""; }; ++ B101C2AF2BBC135100E11CBF /* libTAK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTAK.a; path = "../../tmp/TAK-Client/iOS/C/libs/libTAK.a"; sourceTree = ""; }; ++ B101C2B22BBC136A00E11CBF /* license.tak */ = {isa = PBXFileReference; lastKnownFileType = file; name = license.tak; path = "../../../tmp/TAK-Client/licenses/license.tak"; sourceTree = ""; }; + B62B309923B7F60900583D3D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Localizable.stringsdict; sourceTree = ""; }; + B62B309D23B7FA0B00583D3D /* chock */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = chock; path = chock.lproj/Main.strings; sourceTree = ""; }; + B62B309E23B7FA2B00583D3D /* chock */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = chock; path = chock.lproj/Localizable.strings; sourceTree = ""; }; +@@ -160,6 +166,8 @@ + buildActionMask = 2147483647; + files = ( + B6F3964824629E7A009E0B7C /* CloudKit.framework in Frameworks */, ++ B101C2B02BBC135100E11CBF /* libWBC.a in Frameworks */, ++ B101C2B12BBC135100E11CBF /* libTAK.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +@@ -183,6 +191,8 @@ + B6F3964524629E77009E0B7C /* Frameworks */ = { + isa = PBXGroup; + children = ( ++ B101C2AF2BBC135100E11CBF /* libTAK.a */, ++ B101C2AE2BBC135100E11CBF /* libWBC.a */, + B6F3964624629E77009E0B7C /* CloudKit.framework */, + ); + name = Frameworks; +@@ -202,6 +212,7 @@ + BE918C411A22A5F5006043CF = { + isa = PBXGroup; + children = ( ++ B101C2B22BBC136A00E11CBF /* license.tak */, + BE918C4C1A22A5F5006043CF /* Kotoba */, + BEA413B81D1CABB600D177C2 /* KotobaTests */, + BEB2324D1D1DD3B800369560 /* KotobaUITests */, +@@ -374,12 +385,12 @@ + TargetAttributes = { + B6F4594A2460E15100E2174D = { + CreatedOnToolsVersion = 11.4.1; +- DevelopmentTeam = 8B38X92RJ6; ++ DevelopmentTeam = WCMG6DCKKM; + ProvisioningStyle = Automatic; + }; + BE918C491A22A5F5006043CF = { + CreatedOnToolsVersion = 6.2; +- DevelopmentTeam = 8B38X92RJ6; ++ DevelopmentTeam = WCMG6DCKKM; + LastSwiftMigration = 1120; + }; + BEA413B61D1CABB600D177C2 = { +@@ -433,6 +444,7 @@ + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( ++ B101C2B32BBC136A00E11CBF /* license.tak in Resources */, + 44D1096623A84262007C477C /* Localizable.strings in Resources */, + BE918C551A22A5F5006043CF /* Main.storyboard in Resources */, + 4440B41D236CF92100369CE8 /* Colors.xcassets in Resources */, +@@ -652,14 +664,14 @@ + CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements; + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = dwarf; +- DEVELOPMENT_TEAM = 8B38X92RJ6; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = ShareExtension/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; +- PRODUCT_BUNDLE_IDENTIFIER = com.willhains.Kotoba.ShareExtension; ++ PRODUCT_BUNDLE_IDENTIFIER = com.build38.Kotoba.ShareExtension; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = NO; +@@ -682,13 +694,13 @@ + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; +- DEVELOPMENT_TEAM = 8B38X92RJ6; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = ShareExtension/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_FAST_MATH = YES; +- PRODUCT_BUNDLE_IDENTIFIER = com.willhains.Kotoba.ShareExtension; ++ PRODUCT_BUNDLE_IDENTIFIER = com.build38.Kotoba.ShareExtension; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = NO; +@@ -811,12 +823,14 @@ + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-red"; + CODE_SIGN_ENTITLEMENTS = Kotoba/Kotoba.entitlements; + CURRENT_PROJECT_VERSION = 1592141211; +- DEVELOPMENT_TEAM = 8B38X92RJ6; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + INFOPLIST_FILE = Kotoba/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; ++ LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../../../tmp/TAK-Client/iOS/C/libs"; + MARKETING_VERSION = 2.0; +- PRODUCT_BUNDLE_IDENTIFIER = com.willhains.Kotoba; ++ OTHER_LDFLAGS = "-lstdc++"; ++ PRODUCT_BUNDLE_IDENTIFIER = com.build38.Kotoba; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; +@@ -836,12 +850,14 @@ + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-red"; + CODE_SIGN_ENTITLEMENTS = Kotoba/Kotoba.entitlements; + CURRENT_PROJECT_VERSION = 1592141211; +- DEVELOPMENT_TEAM = 8B38X92RJ6; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + INFOPLIST_FILE = Kotoba/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; ++ LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../../../tmp/TAK-Client/iOS/C/libs"; + MARKETING_VERSION = 2.0; +- PRODUCT_BUNDLE_IDENTIFIER = com.willhains.Kotoba; ++ OTHER_LDFLAGS = "-lstdc++"; ++ PRODUCT_BUNDLE_IDENTIFIER = com.build38.Kotoba; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; +diff --git a/code/Kotoba/Kotoba.entitlements b/code/Kotoba/Kotoba.entitlements +index 6effa6c..f5fe7ca 100644 +--- a/code/Kotoba/Kotoba.entitlements ++++ b/code/Kotoba/Kotoba.entitlements +@@ -14,7 +14,7 @@ + + com.apple.security.application-groups + +- group.com.willhains.Kotoba ++ group.com.build38.tak + + com.apple.security.files.user-selected.read-only + +diff --git a/code/ShareExtension/ShareExtension.entitlements b/code/ShareExtension/ShareExtension.entitlements +index 90fb769..945503c 100644 +--- a/code/ShareExtension/ShareExtension.entitlements ++++ b/code/ShareExtension/ShareExtension.entitlements +@@ -14,7 +14,7 @@ + + com.apple.security.application-groups + +- group.com.willhains.Kotoba ++ group.com.build38.tak + + com.apple.security.network.client + diff --git a/samples/patches/SnowPlowExamples.patch b/samples/patches/SnowPlowExamples.patch new file mode 100644 index 00000000..0e35e482 --- /dev/null +++ b/samples/patches/SnowPlowExamples.patch @@ -0,0 +1,165 @@ +diff --git a/demo/SnowplowObjcDemo/SnowplowDemo.xcodeproj/project.pbxproj b/demo/SnowplowObjcDemo/SnowplowDemo.xcodeproj/project.pbxproj +index 7d1216d..d3ea5be 100644 +--- a/demo/SnowplowObjcDemo/SnowplowDemo.xcodeproj/project.pbxproj ++++ b/demo/SnowplowObjcDemo/SnowplowDemo.xcodeproj/project.pbxproj +@@ -18,6 +18,9 @@ + 043172A91B7366B8008A927D /* DemoUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 043172A81B7366B8008A927D /* DemoUtils.m */; }; + 47E8A0EB3ECED58DD2874330 /* Pods_SnowPlowDemoShareExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A1668E8170F8F4A56A036B7 /* Pods_SnowPlowDemoShareExtension.framework */; }; + 6B3BF22228BCB7D400170BB9 /* Tracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B3BF22128BCB7D400170BB9 /* Tracker.swift */; }; ++ B101C2C92BBD49E700E11CBF /* libWBC.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B101C2C72BBD49E600E11CBF /* libWBC.a */; }; ++ B101C2CA2BBD49E700E11CBF /* libTAK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B101C2C82BBD49E600E11CBF /* libTAK.a */; }; ++ B101C2CC2BBD49F100E11CBF /* license.tak in Resources */ = {isa = PBXBuildFile; fileRef = B101C2CB2BBD49F100E11CBF /* license.tak */; }; + B10C0221289B2C0600770C3E /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10C0220289B2C0600770C3E /* ShareViewController.swift */; }; + B10C0224289B2C0600770C3E /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B10C0222289B2C0600770C3E /* MainInterface.storyboard */; }; + B10C0228289B2C0600770C3E /* SnowPlowDemoShareExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = B10C021E289B2C0600770C3E /* SnowPlowDemoShareExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; +@@ -106,6 +109,9 @@ + 6B3BF22128BCB7D400170BB9 /* Tracker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Tracker.swift; sourceTree = ""; }; + 708A613346C83076752DA514 /* Pods-SnowPlowDemoShareExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SnowPlowDemoShareExtension.debug.xcconfig"; path = "Target Support Files/Pods-SnowPlowDemoShareExtension/Pods-SnowPlowDemoShareExtension.debug.xcconfig"; sourceTree = ""; }; + 740DCC07B75E8AD9FD1BB20D /* Pods-SnowplowDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SnowplowDemo.release.xcconfig"; path = "Target Support Files/Pods-SnowplowDemo/Pods-SnowplowDemo.release.xcconfig"; sourceTree = ""; }; ++ B101C2C72BBD49E600E11CBF /* libWBC.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libWBC.a; path = "../../../../../tmp/TAK-Client/iOS/C/libs/libWBC.a"; sourceTree = ""; }; ++ B101C2C82BBD49E600E11CBF /* libTAK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libTAK.a; path = "../../../../../tmp/TAK-Client/iOS/C/libs/libTAK.a"; sourceTree = ""; }; ++ B101C2CB2BBD49F100E11CBF /* license.tak */ = {isa = PBXFileReference; lastKnownFileType = file; name = license.tak; path = "../../../../../tmp/TAK-Client/licenses/license.tak"; sourceTree = ""; }; + B10C021E289B2C0600770C3E /* SnowPlowDemoShareExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SnowPlowDemoShareExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + B10C0220289B2C0600770C3E /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = ""; }; + B10C0223289B2C0600770C3E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; +@@ -118,6 +124,8 @@ + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( ++ B101C2C92BBD49E700E11CBF /* libWBC.a in Frameworks */, ++ B101C2CA2BBD49E700E11CBF /* libTAK.a in Frameworks */, + E134DAD3C64350D5745090BD /* Pods_SnowplowDemo.framework in Frameworks */, + B10C023A289B2F8500770C3E /* Analytics.framework in Frameworks */, + ); +@@ -151,6 +159,7 @@ + 043172721B7365D3008A927D = { + isa = PBXGroup; + children = ( ++ B101C2CB2BBD49F100E11CBF /* license.tak */, + 0431727D1B7365D4008A927D /* SnowplowDemo */, + 0431729A1B7365D4008A927D /* SnowplowDemoTests */, + B10C021F289B2C0600770C3E /* SnowPlowDemoShareExtension */, +@@ -229,6 +238,8 @@ + 732484D89E64AED2D558B48A /* Frameworks */ = { + isa = PBXGroup; + children = ( ++ B101C2C82BBD49E600E11CBF /* libTAK.a */, ++ B101C2C72BBD49E600E11CBF /* libWBC.a */, + 3710BBFEF122A6658C1C43E7 /* Pods_SnowplowDemo.framework */, + 3A1668E8170F8F4A56A036B7 /* Pods_SnowPlowDemoShareExtension.framework */, + ); +@@ -349,13 +360,16 @@ + TargetAttributes = { + 0431727A1B7365D4008A927D = { + CreatedOnToolsVersion = 6.4; ++ DevelopmentTeam = WCMG6DCKKM; + }; + 043172961B7365D4008A927D = { + CreatedOnToolsVersion = 6.4; ++ DevelopmentTeam = WCMG6DCKKM; + TestTargetID = 0431727A1B7365D4008A927D; + }; + B10C021D289B2C0600770C3E = { + CreatedOnToolsVersion = 13.4.1; ++ DevelopmentTeam = WCMG6DCKKM; + ProvisioningStyle = Automatic; + }; + B10C0233289B2F8500770C3E = { +@@ -390,6 +404,7 @@ + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( ++ B101C2CC2BBD49F100E11CBF /* license.tak in Resources */, + 0431728D1B7365D4008A927D /* Main.storyboard in Resources */, + 043172921B7365D4008A927D /* LaunchScreen.xib in Resources */, + 0431728F1B7365D4008A927D /* Images.xcassets in Resources */, +@@ -684,9 +699,28 @@ + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + INFOPLIST_FILE = SnowplowDemo/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; ++ LIBRARY_SEARCH_PATHS = ( ++ "$(inherited)", ++ "\"${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}\"", ++ /usr/lib/swift, ++ "$(PROJECT_DIR)/../../../../../tmp/TAK-Client/iOS/C/libs", ++ ); ++ OTHER_LDFLAGS = ( ++ "$(inherited)", ++ "-framework", ++ "\"CoreTelephony\"", ++ "-framework", ++ "\"Foundation\"", ++ "-framework", ++ "\"SnowplowTracker\"", ++ "-framework", ++ "\"UIKit\"", ++ "-lstdc++", ++ ); + PRODUCT_BUNDLE_IDENTIFIER = "com.snowplowanalytics.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; +@@ -698,9 +732,28 @@ + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + INFOPLIST_FILE = SnowplowDemo/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; ++ LIBRARY_SEARCH_PATHS = ( ++ "$(inherited)", ++ "\"${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}\"", ++ /usr/lib/swift, ++ "$(PROJECT_DIR)/../../../../../tmp/TAK-Client/iOS/C/libs", ++ ); ++ OTHER_LDFLAGS = ( ++ "$(inherited)", ++ "-framework", ++ "\"CoreTelephony\"", ++ "-framework", ++ "\"Foundation\"", ++ "-framework", ++ "\"SnowplowTracker\"", ++ "-framework", ++ "\"UIKit\"", ++ "-lstdc++", ++ ); + PRODUCT_BUNDLE_IDENTIFIER = "com.snowplowanalytics.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; +@@ -710,6 +763,7 @@ + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", +@@ -730,6 +784,7 @@ + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", +@@ -756,6 +811,7 @@ + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = SnowPlowDemoShareExtension/Info.plist; +@@ -790,6 +846,7 @@ + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; ++ DEVELOPMENT_TEAM = WCMG6DCKKM; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = SnowPlowDemoShareExtension/Info.plist;