diff --git a/CHANGELOG.md b/CHANGELOG.md index 27736f93d7..b955e2fd7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,10 @@ To install release candidates run `[sudo] gem install cocoapods --pre` ##### Bug Fixes +* Rewrite XCFramework slice selection using plist metadata. + [Igor Makarov](https://github.com/igor-makarov) + [#11229](https://github.com/CocoaPods/CocoaPods/pull/11229) + * Fix setting `LD_RUNTIME_SEARCH_PATHS` for aggregate targets that include dynamic xcframeworks. [Dimitris Koutsogiorgas](https://github.com/dnkoutso) [#11158](https://github.com/CocoaPods/CocoaPods/pull/11158) diff --git a/examples/Excluded-Archs-Example/CoconutLib/CoconutLib.podspec b/examples/Excluded-Archs-Example/CoconutLib/CoconutLib.podspec new file mode 100644 index 0000000000..2668027321 --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/CoconutLib.podspec @@ -0,0 +1,18 @@ +Pod::Spec.new do |s| + s.name = 'CoconutLib' + s.version = '1.0' + s.authors = 'Coconut Corp', { 'Monkey Boy' => 'monkey@coconut-corp.local' } + s.homepage = 'http://coconut-corp.local/coconut-lib.html' + s.summary = 'Coconuts For the Win.' + s.description = 'All the Coconuts' + s.source = { :git => 'http://coconut-corp.local/coconut-lib.git', :tag => 'v1.0' } + s.license = { + :type => 'MIT', + :text => 'Permission is hereby granted ...' + } + + s.ios.deployment_target = '13.0' + s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } + s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } + s.vendored_frameworks = 'build/CoconutLib.xcframework' +end diff --git a/examples/Excluded-Archs-Example/CoconutLib/CoconutLib.xcodeproj/project.pbxproj b/examples/Excluded-Archs-Example/CoconutLib/CoconutLib.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..97d954aaff --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/CoconutLib.xcodeproj/project.pbxproj @@ -0,0 +1,339 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 5BFCC8F6252E3C5F000564E9 /* CoconutLib.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BFCC8F4252E3C5F000564E9 /* CoconutLib.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BFCC8FE252E3CA6000564E9 /* Coconut.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BFCC8FC252E3CA6000564E9 /* Coconut.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BFCC8FF252E3CA6000564E9 /* Coconut.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BFCC8FD252E3CA6000564E9 /* Coconut.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 5BFCC8F1252E3C5F000564E9 /* CoconutLib.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoconutLib.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5BFCC8F4252E3C5F000564E9 /* CoconutLib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoconutLib.h; sourceTree = ""; }; + 5BFCC8F5252E3C5F000564E9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5BFCC8FC252E3CA6000564E9 /* Coconut.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Coconut.h; sourceTree = ""; }; + 5BFCC8FD252E3CA6000564E9 /* Coconut.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Coconut.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5BFCC8EE252E3C5F000564E9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5BFCC8E7252E3C5F000564E9 = { + isa = PBXGroup; + children = ( + 5BFCC8F3252E3C5F000564E9 /* CoconutLib */, + 5BFCC8F2252E3C5F000564E9 /* Products */, + ); + sourceTree = ""; + }; + 5BFCC8F2252E3C5F000564E9 /* Products */ = { + isa = PBXGroup; + children = ( + 5BFCC8F1252E3C5F000564E9 /* CoconutLib.framework */, + ); + name = Products; + sourceTree = ""; + }; + 5BFCC8F3252E3C5F000564E9 /* CoconutLib */ = { + isa = PBXGroup; + children = ( + 5BFCC8F4252E3C5F000564E9 /* CoconutLib.h */, + 5BFCC8F5252E3C5F000564E9 /* Info.plist */, + 5BFCC8FC252E3CA6000564E9 /* Coconut.h */, + 5BFCC8FD252E3CA6000564E9 /* Coconut.m */, + ); + path = CoconutLib; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 5BFCC8EC252E3C5F000564E9 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 5BFCC8FE252E3CA6000564E9 /* Coconut.h in Headers */, + 5BFCC8F6252E3C5F000564E9 /* CoconutLib.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 5BFCC8F0252E3C5F000564E9 /* CoconutLib */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5BFCC8F9252E3C5F000564E9 /* Build configuration list for PBXNativeTarget "CoconutLib" */; + buildPhases = ( + 5BFCC8EC252E3C5F000564E9 /* Headers */, + 5BFCC8ED252E3C5F000564E9 /* Sources */, + 5BFCC8EE252E3C5F000564E9 /* Frameworks */, + 5BFCC8EF252E3C5F000564E9 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = CoconutLib; + productName = CoconutLib; + productReference = 5BFCC8F1252E3C5F000564E9 /* CoconutLib.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 5BFCC8E8252E3C5F000564E9 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1170; + TargetAttributes = { + 5BFCC8F0252E3C5F000564E9 = { + CreatedOnToolsVersion = 11.7; + }; + }; + }; + buildConfigurationList = 5BFCC8EB252E3C5F000564E9 /* Build configuration list for PBXProject "CoconutLib" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 5BFCC8E7252E3C5F000564E9; + productRefGroup = 5BFCC8F2252E3C5F000564E9 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 5BFCC8F0252E3C5F000564E9 /* CoconutLib */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 5BFCC8EF252E3C5F000564E9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5BFCC8ED252E3C5F000564E9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5BFCC8FF252E3CA6000564E9 /* Coconut.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 5BFCC8F7252E3C5F000564E9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.7; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 5BFCC8F8252E3C5F000564E9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.7; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 5BFCC8FA252E3C5F000564E9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = CoconutLib/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.CoconutLib.CoconutLib; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 5BFCC8FB252E3C5F000564E9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = CoconutLib/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.CoconutLib.CoconutLib; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5BFCC8EB252E3C5F000564E9 /* Build configuration list for PBXProject "CoconutLib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5BFCC8F7252E3C5F000564E9 /* Debug */, + 5BFCC8F8252E3C5F000564E9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5BFCC8F9252E3C5F000564E9 /* Build configuration list for PBXNativeTarget "CoconutLib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5BFCC8FA252E3C5F000564E9 /* Debug */, + 5BFCC8FB252E3C5F000564E9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 5BFCC8E8252E3C5F000564E9 /* Project object */; +} diff --git a/examples/Excluded-Archs-Example/CoconutLib/CoconutLib/Coconut.h b/examples/Excluded-Archs-Example/CoconutLib/CoconutLib/Coconut.h new file mode 100644 index 0000000000..049eb6aeb0 --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/CoconutLib/Coconut.h @@ -0,0 +1,11 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface Coconut : NSObject + +- (void)makeCoconuts; + +@end + +NS_ASSUME_NONNULL_END diff --git a/examples/Excluded-Archs-Example/CoconutLib/CoconutLib/Coconut.m b/examples/Excluded-Archs-Example/CoconutLib/CoconutLib/Coconut.m new file mode 100644 index 0000000000..f5c5804a7a --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/CoconutLib/Coconut.m @@ -0,0 +1,9 @@ +#import "Coconut.h" + +@implementation Coconut + +- (void)makeCoconuts { + NSLog(@"Making coconuts!"); +} + +@end diff --git a/examples/Excluded-Archs-Example/CoconutLib/CoconutLib/CoconutLib.h b/examples/Excluded-Archs-Example/CoconutLib/CoconutLib/CoconutLib.h new file mode 100644 index 0000000000..afb871111d --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/CoconutLib/CoconutLib.h @@ -0,0 +1,11 @@ +#import + +//! Project version number for CoconutLib. +FOUNDATION_EXPORT double CoconutLibVersionNumber; + +//! Project version string for CoconutLib. +FOUNDATION_EXPORT const unsigned char CoconutLibVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import "Coconut.h" diff --git a/examples/Excluded-Archs-Example/CoconutLib/CoconutLib/Info.plist b/examples/Excluded-Archs-Example/CoconutLib/CoconutLib/Info.plist new file mode 100644 index 0000000000..9bcb244429 --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/CoconutLib/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/examples/Excluded-Archs-Example/CoconutLib/build.sh b/examples/Excluded-Archs-Example/CoconutLib/build.sh new file mode 100755 index 0000000000..5f5899b471 --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/build.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env sh +# +# This will build and export `CoconutLib.xcframework` to `build/CoconutLib.xcframework` including all supported slices. +# +# Note: This script expects to build using xcodebuild from Xcode 12.0 or later. +# + +set -eou pipefail + +rm -rf build/* + +settings="SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES" +archiveDir="build/DerivedData/" + +echo "Building xcframework slices" + +xcodebuild clean archive -project CoconutLib.xcodeproj -scheme "CoconutLib" -sdk iphoneos -archivePath "${archiveDir}/iOS" $settings +xcodebuild clean archive -project CoconutLib.xcodeproj -scheme "CoconutLib" -sdk iphonesimulator -arch x86_64 -archivePath "${archiveDir}/iOS-Simulator" $settings + +archives=(iOS iOS-Simulator) + +# NOTE: Debug symbol paths require absolute paths, so grab a reference to the working directory +pwd=`pwd` + +args="" +for archive in "${archives[@]}"; do + args="$args -framework ${archiveDir}/${archive}.xcarchive/Products/Library/Frameworks/CoconutLib.framework" + + # Append -debug-symbols argument for this archive's dSYM + args="$args -debug-symbols ${pwd}/${archiveDir}/${archive}.xcarchive/dSYMs/CoconutLib.framework.dSYM" + + # Append -debug-symbols argument for this archive's BCSymbolMaps, if they exist (device builds only) + bcsymbolMapDir="${archiveDir}/${archive}.xcarchive/BCSymbolMaps" + if test -d "${bcsymbolMapDir}"; then + for symbolMap in "${bcsymbolMapDir}"/*; do + args="$args -debug-symbols ${pwd}/${symbolMap}" + done + fi +done + +echo "xcodebuild -create-xcframework $args -output 'build/CoconutLib.xcframework'" +xcodebuild -create-xcframework $args -output 'build/CoconutLib.xcframework' + +echo "Done." diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/Info.plist b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/Info.plist new file mode 100644 index 0000000000..e63ba86097 --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/Info.plist @@ -0,0 +1,45 @@ + + + + + AvailableLibraries + + + BitcodeSymbolMapsPath + BCSymbolMaps + DebugSymbolsPath + dSYMs + LibraryIdentifier + ios-arm64 + LibraryPath + CoconutLib.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + DebugSymbolsPath + dSYMs + LibraryIdentifier + ios-x86_64-simulator + LibraryPath + CoconutLib.framework + SupportedArchitectures + + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/BCSymbolMaps/4C8FABD1-708D-30BD-B78F-145928BA5126.bcsymbolmap b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/BCSymbolMaps/4C8FABD1-708D-30BD-B78F-145928BA5126.bcsymbolmap new file mode 100644 index 0000000000..7099d0714d --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/BCSymbolMaps/4C8FABD1-708D-30BD-B78F-145928BA5126.bcsymbolmap @@ -0,0 +1,12 @@ +BCSymbolMap Version: 2.0 +Apple clang version 13.1.6 (clang-1316.0.21.1) +/Applications/Xcode-13.3-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.4.sdk +iPhoneOS15.4.sdk +/Users/Igor/Library/Developer/Xcode/DerivedData/CoconutLib-doqzauetjglrxlbwzqgshnstpjuq/Build/Intermediates.noindex/ArchiveIntermediates/CoconutLib/IntermediateBuildFilesPath/CoconutLib.build/Release-iphoneos/CoconutLib.build/DerivedSources/CoconutLib_vers.c +/Users/Igor/CocoaPods/CocoaPods/examples/Excluded-Archs-Example/CoconutLib +-[Coconut makeCoconuts] +__OBJC_METACLASS_RO_$_Coconut +__OBJC_$_INSTANCE_METHODS_Coconut +__OBJC_CLASS_RO_$_Coconut +/Users/Igor/CocoaPods/CocoaPods/examples/Excluded-Archs-Example/CoconutLib/CoconutLib/Coconut.m +CoconutLib/Coconut.m diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/CoconutLib b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/CoconutLib new file mode 100755 index 0000000000..b9f10e35f3 Binary files /dev/null and b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/CoconutLib differ diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/Headers/Coconut.h b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/Headers/Coconut.h new file mode 100644 index 0000000000..049eb6aeb0 --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/Headers/Coconut.h @@ -0,0 +1,11 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface Coconut : NSObject + +- (void)makeCoconuts; + +@end + +NS_ASSUME_NONNULL_END diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/Headers/CoconutLib.h b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/Headers/CoconutLib.h new file mode 100644 index 0000000000..afb871111d --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/Headers/CoconutLib.h @@ -0,0 +1,11 @@ +#import + +//! Project version number for CoconutLib. +FOUNDATION_EXPORT double CoconutLibVersionNumber; + +//! Project version string for CoconutLib. +FOUNDATION_EXPORT const unsigned char CoconutLibVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import "Coconut.h" diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/Info.plist b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/Info.plist new file mode 100644 index 0000000000..d3d3bf0088 Binary files /dev/null and b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/Info.plist differ diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/Modules/module.modulemap b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/Modules/module.modulemap new file mode 100644 index 0000000000..935662f517 --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/CoconutLib.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module CoconutLib { + umbrella header "CoconutLib.h" + + export * + module * { export * } +} diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/dSYMs/CoconutLib.framework.dSYM/Contents/Info.plist b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/dSYMs/CoconutLib.framework.dSYM/Contents/Info.plist new file mode 100644 index 0000000000..ef1134353c --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/dSYMs/CoconutLib.framework.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.org.cocoapods.CoconutLib.CoconutLib + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/dSYMs/CoconutLib.framework.dSYM/Contents/Resources/DWARF/CoconutLib b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/dSYMs/CoconutLib.framework.dSYM/Contents/Resources/DWARF/CoconutLib new file mode 100644 index 0000000000..1d8b60df37 Binary files /dev/null and b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-arm64/dSYMs/CoconutLib.framework.dSYM/Contents/Resources/DWARF/CoconutLib differ diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/CoconutLib b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/CoconutLib new file mode 100755 index 0000000000..4084859101 Binary files /dev/null and b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/CoconutLib differ diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/Headers/Coconut.h b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/Headers/Coconut.h new file mode 100644 index 0000000000..049eb6aeb0 --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/Headers/Coconut.h @@ -0,0 +1,11 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface Coconut : NSObject + +- (void)makeCoconuts; + +@end + +NS_ASSUME_NONNULL_END diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/Headers/CoconutLib.h b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/Headers/CoconutLib.h new file mode 100644 index 0000000000..afb871111d --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/Headers/CoconutLib.h @@ -0,0 +1,11 @@ +#import + +//! Project version number for CoconutLib. +FOUNDATION_EXPORT double CoconutLibVersionNumber; + +//! Project version string for CoconutLib. +FOUNDATION_EXPORT const unsigned char CoconutLibVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import "Coconut.h" diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/Info.plist b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/Info.plist new file mode 100644 index 0000000000..1a60f7917e Binary files /dev/null and b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/Info.plist differ diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/Modules/module.modulemap b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/Modules/module.modulemap new file mode 100644 index 0000000000..935662f517 --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module CoconutLib { + umbrella header "CoconutLib.h" + + export * + module * { export * } +} diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/_CodeSignature/CodeResources b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000000..3d7ce4a9d7 --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/CoconutLib.framework/_CodeSignature/CodeResources @@ -0,0 +1,135 @@ + + + + + files + + Headers/Coconut.h + + xRZ2gtR7a+JUu8vlrj6ucJo0HZw= + + Headers/CoconutLib.h + + XDeshhJadkBf1PW1H8vYTSz6anE= + + Info.plist + + N9NcTTnWEZj9OMp/CTa7WV/m3sk= + + Modules/module.modulemap + + XBUmhbp5sPDDR0vApgYJ0zALOWI= + + + files2 + + Headers/Coconut.h + + hash2 + + Nnv5eWfCRS7X8m8b9VJ4F75efQAqgC/nrc9DIwOJpqc= + + + Headers/CoconutLib.h + + hash2 + + 81D6Wtna7bDB0hL/8v0U7Cb2+giki+ubCf+3UCXkrOI= + + + Modules/module.modulemap + + hash2 + + mhxBFlNwG/ASIqNY6yYtxs7CuysII4NrdaoGkHwJLCA= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/dSYMs/CoconutLib.framework.dSYM/Contents/Info.plist b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/dSYMs/CoconutLib.framework.dSYM/Contents/Info.plist new file mode 100644 index 0000000000..ef1134353c --- /dev/null +++ b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/dSYMs/CoconutLib.framework.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.org.cocoapods.CoconutLib.CoconutLib + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/dSYMs/CoconutLib.framework.dSYM/Contents/Resources/DWARF/CoconutLib b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/dSYMs/CoconutLib.framework.dSYM/Contents/Resources/DWARF/CoconutLib new file mode 100644 index 0000000000..970fed90d3 Binary files /dev/null and b/examples/Excluded-Archs-Example/CoconutLib/build/CoconutLib.xcframework/ios-x86_64-simulator/dSYMs/CoconutLib.framework.dSYM/Contents/Resources/DWARF/CoconutLib differ diff --git a/examples/Excluded-Archs-Example/Examples.xcworkspace/contents.xcworkspacedata b/examples/Excluded-Archs-Example/Examples.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..20c43c27f7 --- /dev/null +++ b/examples/Excluded-Archs-Example/Examples.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/examples/Excluded-Archs-Example/Examples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/Excluded-Archs-Example/Examples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/examples/Excluded-Archs-Example/Examples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/examples/Excluded-Archs-Example/Podfile b/examples/Excluded-Archs-Example/Podfile new file mode 100644 index 0000000000..696408f722 --- /dev/null +++ b/examples/Excluded-Archs-Example/Podfile @@ -0,0 +1,14 @@ +project 'VendoredXCFrameworkExample.xcodeproj' + +workspace 'Examples' + +target 'VendoredXCFrameworkExample' do + platform :ios, '13.0' + use_frameworks! + + # XCFramework with Xcode 12 style inclusion of debug symbols + # To rebuild the xcframework: + # cd CoconutLib + # ./build.sh + pod 'CoconutLib', path: './CoconutLib' +end diff --git a/examples/Excluded-Archs-Example/VendoredXCFrameworkExample.xcodeproj/project.pbxproj b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..cd92507b4c --- /dev/null +++ b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample.xcodeproj/project.pbxproj @@ -0,0 +1,468 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXAggregateTarget section */ + 5BFCC900252E56C0000564E9 /* ArchiveAndValidate */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 5BFCC903252E56C0000564E9 /* Build configuration list for PBXAggregateTarget "ArchiveAndValidate" */; + buildPhases = ( + 5BFCC904252E56CB000564E9 /* ShellScript */, + ); + dependencies = ( + ); + name = ArchiveAndValidate; + productName = ArchiveAndValidate; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 4B92F4F948B2627D25C3B487 /* Pods_VendoredXCFrameworkExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FBF7E1F8F8EBA8AAED7B760 /* Pods_VendoredXCFrameworkExample.framework */; }; + 5BFCC8D4252E3B9D000564E9 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BFCC8D3252E3B9D000564E9 /* AppDelegate.swift */; }; + 5BFCC8D6252E3B9D000564E9 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BFCC8D5252E3B9D000564E9 /* SceneDelegate.swift */; }; + 5BFCC8D8252E3B9D000564E9 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BFCC8D7252E3B9D000564E9 /* ViewController.swift */; }; + 5BFCC8DB252E3B9D000564E9 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5BFCC8D9252E3B9D000564E9 /* Main.storyboard */; }; + 5BFCC8DD252E3BA0000564E9 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5BFCC8DC252E3BA0000564E9 /* Assets.xcassets */; }; + 5BFCC8E0252E3BA0000564E9 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5BFCC8DE252E3BA0000564E9 /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2FBF7E1F8F8EBA8AAED7B760 /* Pods_VendoredXCFrameworkExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_VendoredXCFrameworkExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5BFCC8D0252E3B9D000564E9 /* VendoredXCFrameworkExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = VendoredXCFrameworkExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 5BFCC8D3252E3B9D000564E9 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 5BFCC8D5252E3B9D000564E9 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 5BFCC8D7252E3B9D000564E9 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 5BFCC8DA252E3B9D000564E9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 5BFCC8DC252E3BA0000564E9 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 5BFCC8DF252E3BA0000564E9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 5BFCC8E1252E3BA0000564E9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + BCAE785A6DBB4A53A381B7A1 /* Pods-VendoredXCFrameworkExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VendoredXCFrameworkExample.release.xcconfig"; path = "Target Support Files/Pods-VendoredXCFrameworkExample/Pods-VendoredXCFrameworkExample.release.xcconfig"; sourceTree = ""; }; + D02A199032E77CA06241E6EB /* Pods-VendoredXCFrameworkExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VendoredXCFrameworkExample.debug.xcconfig"; path = "Target Support Files/Pods-VendoredXCFrameworkExample/Pods-VendoredXCFrameworkExample.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5BFCC8CD252E3B9D000564E9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4B92F4F948B2627D25C3B487 /* Pods_VendoredXCFrameworkExample.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5BFCC8C7252E3B9D000564E9 = { + isa = PBXGroup; + children = ( + 5BFCC8D2252E3B9D000564E9 /* VendoredXCFrameworkExample */, + 5BFCC8D1252E3B9D000564E9 /* Products */, + F2EC89055FB594BA7C06074D /* Pods */, + C2C9BACE7B3F22CC97B209D9 /* Frameworks */, + ); + sourceTree = ""; + }; + 5BFCC8D1252E3B9D000564E9 /* Products */ = { + isa = PBXGroup; + children = ( + 5BFCC8D0252E3B9D000564E9 /* VendoredXCFrameworkExample.app */, + ); + name = Products; + sourceTree = ""; + }; + 5BFCC8D2252E3B9D000564E9 /* VendoredXCFrameworkExample */ = { + isa = PBXGroup; + children = ( + 5BFCC8D3252E3B9D000564E9 /* AppDelegate.swift */, + 5BFCC8D5252E3B9D000564E9 /* SceneDelegate.swift */, + 5BFCC8D7252E3B9D000564E9 /* ViewController.swift */, + 5BFCC8D9252E3B9D000564E9 /* Main.storyboard */, + 5BFCC8DC252E3BA0000564E9 /* Assets.xcassets */, + 5BFCC8DE252E3BA0000564E9 /* LaunchScreen.storyboard */, + 5BFCC8E1252E3BA0000564E9 /* Info.plist */, + ); + path = VendoredXCFrameworkExample; + sourceTree = ""; + }; + C2C9BACE7B3F22CC97B209D9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2FBF7E1F8F8EBA8AAED7B760 /* Pods_VendoredXCFrameworkExample.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + F2EC89055FB594BA7C06074D /* Pods */ = { + isa = PBXGroup; + children = ( + D02A199032E77CA06241E6EB /* Pods-VendoredXCFrameworkExample.debug.xcconfig */, + BCAE785A6DBB4A53A381B7A1 /* Pods-VendoredXCFrameworkExample.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5BFCC8CF252E3B9D000564E9 /* VendoredXCFrameworkExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5BFCC8E4252E3BA0000564E9 /* Build configuration list for PBXNativeTarget "VendoredXCFrameworkExample" */; + buildPhases = ( + 549C45826CCDB10A13E121D5 /* [CP] Check Pods Manifest.lock */, + 5BFCC8CC252E3B9D000564E9 /* Sources */, + 5BFCC8CD252E3B9D000564E9 /* Frameworks */, + 5BFCC8CE252E3B9D000564E9 /* Resources */, + 3F2C7CF549E87E146ADF16E5 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = VendoredXCFrameworkExample; + productName = VendoredXCFrameworkExample; + productReference = 5BFCC8D0252E3B9D000564E9 /* VendoredXCFrameworkExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 5BFCC8C8252E3B9D000564E9 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1170; + LastUpgradeCheck = 1170; + TargetAttributes = { + 5BFCC8CF252E3B9D000564E9 = { + CreatedOnToolsVersion = 11.7; + }; + 5BFCC900252E56C0000564E9 = { + CreatedOnToolsVersion = 11.7; + }; + }; + }; + buildConfigurationList = 5BFCC8CB252E3B9D000564E9 /* Build configuration list for PBXProject "VendoredXCFrameworkExample" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 5BFCC8C7252E3B9D000564E9; + productRefGroup = 5BFCC8D1252E3B9D000564E9 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 5BFCC8CF252E3B9D000564E9 /* VendoredXCFrameworkExample */, + 5BFCC900252E56C0000564E9 /* ArchiveAndValidate */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 5BFCC8CE252E3B9D000564E9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5BFCC8E0252E3BA0000564E9 /* LaunchScreen.storyboard in Resources */, + 5BFCC8DD252E3BA0000564E9 /* Assets.xcassets in Resources */, + 5BFCC8DB252E3B9D000564E9 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3F2C7CF549E87E146ADF16E5 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-VendoredXCFrameworkExample/Pods-VendoredXCFrameworkExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-VendoredXCFrameworkExample/Pods-VendoredXCFrameworkExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-VendoredXCFrameworkExample/Pods-VendoredXCFrameworkExample-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 549C45826CCDB10A13E121D5 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-VendoredXCFrameworkExample-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 5BFCC904252E56CB000564E9 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PROJECT_DIR}\"/archiveAndValidate.sh\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5BFCC8CC252E3B9D000564E9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5BFCC8D8252E3B9D000564E9 /* ViewController.swift in Sources */, + 5BFCC8D4252E3B9D000564E9 /* AppDelegate.swift in Sources */, + 5BFCC8D6252E3B9D000564E9 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 5BFCC8D9252E3B9D000564E9 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 5BFCC8DA252E3B9D000564E9 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 5BFCC8DE252E3BA0000564E9 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 5BFCC8DF252E3BA0000564E9 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 5BFCC8E2252E3BA0000564E9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 5BFCC8E3252E3BA0000564E9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 5BFCC8E5252E3BA0000564E9 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D02A199032E77CA06241E6EB /* Pods-VendoredXCFrameworkExample.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = VendoredXCFrameworkExample/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.VendoredXCFrameworkExample.VendoredXCFrameworkExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 5BFCC8E6252E3BA0000564E9 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BCAE785A6DBB4A53A381B7A1 /* Pods-VendoredXCFrameworkExample.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = VendoredXCFrameworkExample/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.VendoredXCFrameworkExample.VendoredXCFrameworkExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 5BFCC901252E56C0000564E9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 5BFCC902252E56C0000564E9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5BFCC8CB252E3B9D000564E9 /* Build configuration list for PBXProject "VendoredXCFrameworkExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5BFCC8E2252E3BA0000564E9 /* Debug */, + 5BFCC8E3252E3BA0000564E9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5BFCC8E4252E3BA0000564E9 /* Build configuration list for PBXNativeTarget "VendoredXCFrameworkExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5BFCC8E5252E3BA0000564E9 /* Debug */, + 5BFCC8E6252E3BA0000564E9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5BFCC903252E56C0000564E9 /* Build configuration list for PBXAggregateTarget "ArchiveAndValidate" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5BFCC901252E56C0000564E9 /* Debug */, + 5BFCC902252E56C0000564E9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 5BFCC8C8252E3B9D000564E9 /* Project object */; +} diff --git a/examples/Excluded-Archs-Example/VendoredXCFrameworkExample.xcodeproj/xcshareddata/xcschemes/ArchiveAndValidate.xcscheme b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample.xcodeproj/xcshareddata/xcschemes/ArchiveAndValidate.xcscheme new file mode 100644 index 0000000000..f9f2a11f22 --- /dev/null +++ b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample.xcodeproj/xcshareddata/xcschemes/ArchiveAndValidate.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/AppDelegate.swift b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/AppDelegate.swift new file mode 100644 index 0000000000..5bf5dea2a0 --- /dev/null +++ b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/AppDelegate.swift @@ -0,0 +1,24 @@ +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } +} diff --git a/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..9221b9bb1a --- /dev/null +++ b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Assets.xcassets/Contents.json b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Assets.xcassets/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Base.lproj/LaunchScreen.storyboard b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000000..865e9329f3 --- /dev/null +++ b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Base.lproj/Main.storyboard b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Base.lproj/Main.storyboard new file mode 100644 index 0000000000..25a763858e --- /dev/null +++ b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Info.plist b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Info.plist new file mode 100644 index 0000000000..2a3483c0d2 --- /dev/null +++ b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/Info.plist @@ -0,0 +1,64 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/SceneDelegate.swift b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/SceneDelegate.swift new file mode 100644 index 0000000000..813c432f21 --- /dev/null +++ b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/SceneDelegate.swift @@ -0,0 +1,41 @@ +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } +} diff --git a/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/ViewController.swift b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/ViewController.swift new file mode 100644 index 0000000000..7463157494 --- /dev/null +++ b/examples/Excluded-Archs-Example/VendoredXCFrameworkExample/ViewController.swift @@ -0,0 +1,11 @@ +import CoconutLib +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + Coconut().makeCoconuts() + } +} diff --git a/examples/Excluded-Archs-Example/archiveAndValidate.sh b/examples/Excluded-Archs-Example/archiveAndValidate.sh new file mode 100755 index 0000000000..3f52fcc0f0 --- /dev/null +++ b/examples/Excluded-Archs-Example/archiveAndValidate.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env sh +# +# This script is executed by the ArchiveAndValidate target in the Xcode project. +# It will generate an archive build of the example project and then validate +# that the expected debug symbols (dSYMs and BCSymbolMaps) are present in the +# built archive. It will also validate that the symbols are not present in the +# embedded copy of the .frameworks. +# + +archivePath="${BUILD_DIR}/VendoredXCFrameworkExample.xcarchive" + +xcodebuild archive \ + -workspace "${PROJECT_DIR}/Examples.xcworkspace" \ + -scheme "VendoredXCFrameworkExample" \ + -configuration "Release" \ + -archivePath "${archivePath}" \ + CODE_SIGN_IDENTITY="" \ + CODE_SIGNING_REQUIRED=NO \ + CODE_SIGN_ENTITLEMENTS="" \ + CODE_SIGNING_ALLOWED="NO" + +# --------------------------------------- +# Collecting debug symbols in archive +# --------------------------------------- +exitCode=0 + +bcSymbolMapsPath="${archivePath}/BCSymbolMaps" + +# Ensure the expected Xcode 12-style CoconutLib BCSymbolMaps are in the root of the archive +libraryBCSymbolMapDir="${PROJECT_DIR}/CoconutLib/build/CoconutLib.xcframework/ios-arm64/BCSymbolMaps" +for file in "${libraryBCSymbolMapDir}"/*; do + filename="${file##*/}" + if ! test -f "${bcSymbolMapsPath}/${filename}"; then + echo "error: Missing BCSymbolMap for CoconutLib: ${filename}" + exitCode=1 + fi +done + +# Ensure the expected dSYMs are in the root of the archive +dsymsPath="${archivePath}/dSYMs" + +if ! test -d "$dsymsPath/VendoredXCFrameworkExample.app.dSYM"; then + echo "error: Missing dSYM: VendoredXCFrameworkExample.app.dSYM" + exitCode=1 +fi + +if ! test -d "$dsymsPath/CoconutLib.framework.dSYM"; then + echo "error: Missing dSYM: CoconutLib.framework.dSYM" + exitCode=1 +fi + +exit $exitCode diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib.podspec b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib.podspec new file mode 100644 index 0000000000..2668027321 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib.podspec @@ -0,0 +1,18 @@ +Pod::Spec.new do |s| + s.name = 'CoconutLib' + s.version = '1.0' + s.authors = 'Coconut Corp', { 'Monkey Boy' => 'monkey@coconut-corp.local' } + s.homepage = 'http://coconut-corp.local/coconut-lib.html' + s.summary = 'Coconuts For the Win.' + s.description = 'All the Coconuts' + s.source = { :git => 'http://coconut-corp.local/coconut-lib.git', :tag => 'v1.0' } + s.license = { + :type => 'MIT', + :text => 'Permission is hereby granted ...' + } + + s.ios.deployment_target = '13.0' + s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } + s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } + s.vendored_frameworks = 'build/CoconutLib.xcframework' +end diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib.xcodeproj/project.pbxproj b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..97d954aaff --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib.xcodeproj/project.pbxproj @@ -0,0 +1,339 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 5BFCC8F6252E3C5F000564E9 /* CoconutLib.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BFCC8F4252E3C5F000564E9 /* CoconutLib.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BFCC8FE252E3CA6000564E9 /* Coconut.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BFCC8FC252E3CA6000564E9 /* Coconut.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BFCC8FF252E3CA6000564E9 /* Coconut.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BFCC8FD252E3CA6000564E9 /* Coconut.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 5BFCC8F1252E3C5F000564E9 /* CoconutLib.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoconutLib.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5BFCC8F4252E3C5F000564E9 /* CoconutLib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoconutLib.h; sourceTree = ""; }; + 5BFCC8F5252E3C5F000564E9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5BFCC8FC252E3CA6000564E9 /* Coconut.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Coconut.h; sourceTree = ""; }; + 5BFCC8FD252E3CA6000564E9 /* Coconut.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Coconut.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5BFCC8EE252E3C5F000564E9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5BFCC8E7252E3C5F000564E9 = { + isa = PBXGroup; + children = ( + 5BFCC8F3252E3C5F000564E9 /* CoconutLib */, + 5BFCC8F2252E3C5F000564E9 /* Products */, + ); + sourceTree = ""; + }; + 5BFCC8F2252E3C5F000564E9 /* Products */ = { + isa = PBXGroup; + children = ( + 5BFCC8F1252E3C5F000564E9 /* CoconutLib.framework */, + ); + name = Products; + sourceTree = ""; + }; + 5BFCC8F3252E3C5F000564E9 /* CoconutLib */ = { + isa = PBXGroup; + children = ( + 5BFCC8F4252E3C5F000564E9 /* CoconutLib.h */, + 5BFCC8F5252E3C5F000564E9 /* Info.plist */, + 5BFCC8FC252E3CA6000564E9 /* Coconut.h */, + 5BFCC8FD252E3CA6000564E9 /* Coconut.m */, + ); + path = CoconutLib; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 5BFCC8EC252E3C5F000564E9 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 5BFCC8FE252E3CA6000564E9 /* Coconut.h in Headers */, + 5BFCC8F6252E3C5F000564E9 /* CoconutLib.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 5BFCC8F0252E3C5F000564E9 /* CoconutLib */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5BFCC8F9252E3C5F000564E9 /* Build configuration list for PBXNativeTarget "CoconutLib" */; + buildPhases = ( + 5BFCC8EC252E3C5F000564E9 /* Headers */, + 5BFCC8ED252E3C5F000564E9 /* Sources */, + 5BFCC8EE252E3C5F000564E9 /* Frameworks */, + 5BFCC8EF252E3C5F000564E9 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = CoconutLib; + productName = CoconutLib; + productReference = 5BFCC8F1252E3C5F000564E9 /* CoconutLib.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 5BFCC8E8252E3C5F000564E9 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1170; + TargetAttributes = { + 5BFCC8F0252E3C5F000564E9 = { + CreatedOnToolsVersion = 11.7; + }; + }; + }; + buildConfigurationList = 5BFCC8EB252E3C5F000564E9 /* Build configuration list for PBXProject "CoconutLib" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 5BFCC8E7252E3C5F000564E9; + productRefGroup = 5BFCC8F2252E3C5F000564E9 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 5BFCC8F0252E3C5F000564E9 /* CoconutLib */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 5BFCC8EF252E3C5F000564E9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5BFCC8ED252E3C5F000564E9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5BFCC8FF252E3CA6000564E9 /* Coconut.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 5BFCC8F7252E3C5F000564E9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.7; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 5BFCC8F8252E3C5F000564E9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.7; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 5BFCC8FA252E3C5F000564E9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = CoconutLib/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.CoconutLib.CoconutLib; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 5BFCC8FB252E3C5F000564E9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = CoconutLib/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.CoconutLib.CoconutLib; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5BFCC8EB252E3C5F000564E9 /* Build configuration list for PBXProject "CoconutLib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5BFCC8F7252E3C5F000564E9 /* Debug */, + 5BFCC8F8252E3C5F000564E9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5BFCC8F9252E3C5F000564E9 /* Build configuration list for PBXNativeTarget "CoconutLib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5BFCC8FA252E3C5F000564E9 /* Debug */, + 5BFCC8FB252E3C5F000564E9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 5BFCC8E8252E3C5F000564E9 /* Project object */; +} diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib/Coconut.h b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib/Coconut.h new file mode 100644 index 0000000000..049eb6aeb0 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib/Coconut.h @@ -0,0 +1,11 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface Coconut : NSObject + +- (void)makeCoconuts; + +@end + +NS_ASSUME_NONNULL_END diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib/Coconut.m b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib/Coconut.m new file mode 100644 index 0000000000..f5c5804a7a --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib/Coconut.m @@ -0,0 +1,9 @@ +#import "Coconut.h" + +@implementation Coconut + +- (void)makeCoconuts { + NSLog(@"Making coconuts!"); +} + +@end diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib/CoconutLib.h b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib/CoconutLib.h new file mode 100644 index 0000000000..afb871111d --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib/CoconutLib.h @@ -0,0 +1,11 @@ +#import + +//! Project version number for CoconutLib. +FOUNDATION_EXPORT double CoconutLibVersionNumber; + +//! Project version string for CoconutLib. +FOUNDATION_EXPORT const unsigned char CoconutLibVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import "Coconut.h" diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib/Info.plist b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib/Info.plist new file mode 100644 index 0000000000..9bcb244429 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/CoconutLib/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build.sh b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build.sh new file mode 100755 index 0000000000..856c0ea456 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env sh +# +# This will build and export `CoconutLib.xcframework` to `build/CoconutLib.xcframework` including all supported slices. +# +# Note: This script expects to build using xcodebuild from Xcode 12.0 or later. +# + +set -eou pipefail + +rm -rf build/* + +settings="SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES" +archiveDir="build/DerivedData/" + +echo "Building xcframework slices" + +xcodebuild clean archive -project CoconutLib.xcodeproj -scheme "CoconutLib" -sdk iphoneos -archivePath "${archiveDir}/iOS" $settings +xcodebuild clean archive -project CoconutLib.xcodeproj -scheme "CoconutLib" -sdk iphonesimulator -archivePath "${archiveDir}/iOS-Simulator" $settings + +archives=(iOS iOS-Simulator) + +# NOTE: Debug symbol paths require absolute paths, so grab a reference to the working directory +pwd=`pwd` + +args="" +for archive in "${archives[@]}"; do + args="$args -framework ${archiveDir}/${archive}.xcarchive/Products/Library/Frameworks/CoconutLib.framework" + + # Append -debug-symbols argument for this archive's dSYM + args="$args -debug-symbols ${pwd}/${archiveDir}/${archive}.xcarchive/dSYMs/CoconutLib.framework.dSYM" +done + +echo "xcodebuild -create-xcframework $args -output 'build/CoconutLib.xcframework'" +xcodebuild -create-xcframework $args -output 'build/CoconutLib.xcframework' + +sed -i '' 's/ios-arm64_x86_64-simulator/coconut-water/g' 'build/CoconutLib.xcframework/Info.plist' +mv 'build/CoconutLib.xcframework/ios-arm64_x86_64-simulator' 'build/CoconutLib.xcframework/coconut-water' +sed -i '' 's/ios-arm64/coconut-liquid/g' 'build/CoconutLib.xcframework/Info.plist' +mv 'build/CoconutLib.xcframework/ios-arm64' 'build/CoconutLib.xcframework/coconut-liquid' + +echo "Done." diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/Info.plist b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/Info.plist new file mode 100644 index 0000000000..3f0eb85ff8 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + DebugSymbolsPath + dSYMs + LibraryIdentifier + coconut-water + LibraryPath + CoconutLib.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + DebugSymbolsPath + dSYMs + LibraryIdentifier + coconut-liquid + LibraryPath + CoconutLib.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/CoconutLib b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/CoconutLib new file mode 100755 index 0000000000..9d119aeef9 Binary files /dev/null and b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/CoconutLib differ diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/Headers/Coconut.h b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/Headers/Coconut.h new file mode 100644 index 0000000000..049eb6aeb0 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/Headers/Coconut.h @@ -0,0 +1,11 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface Coconut : NSObject + +- (void)makeCoconuts; + +@end + +NS_ASSUME_NONNULL_END diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/Headers/CoconutLib.h b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/Headers/CoconutLib.h new file mode 100644 index 0000000000..afb871111d --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/Headers/CoconutLib.h @@ -0,0 +1,11 @@ +#import + +//! Project version number for CoconutLib. +FOUNDATION_EXPORT double CoconutLibVersionNumber; + +//! Project version string for CoconutLib. +FOUNDATION_EXPORT const unsigned char CoconutLibVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import "Coconut.h" diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/Info.plist b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/Info.plist new file mode 100644 index 0000000000..d3d3bf0088 Binary files /dev/null and b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/Info.plist differ diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/Modules/module.modulemap b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/Modules/module.modulemap new file mode 100644 index 0000000000..935662f517 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/CoconutLib.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module CoconutLib { + umbrella header "CoconutLib.h" + + export * + module * { export * } +} diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/dSYMs/CoconutLib.framework.dSYM/Contents/Info.plist b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/dSYMs/CoconutLib.framework.dSYM/Contents/Info.plist new file mode 100644 index 0000000000..ef1134353c --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/dSYMs/CoconutLib.framework.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.org.cocoapods.CoconutLib.CoconutLib + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/dSYMs/CoconutLib.framework.dSYM/Contents/Resources/DWARF/CoconutLib b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/dSYMs/CoconutLib.framework.dSYM/Contents/Resources/DWARF/CoconutLib new file mode 100644 index 0000000000..6b6bdc7809 Binary files /dev/null and b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-liquid/dSYMs/CoconutLib.framework.dSYM/Contents/Resources/DWARF/CoconutLib differ diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/CoconutLib b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/CoconutLib new file mode 100755 index 0000000000..b693ea15f0 Binary files /dev/null and b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/CoconutLib differ diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/Headers/Coconut.h b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/Headers/Coconut.h new file mode 100644 index 0000000000..049eb6aeb0 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/Headers/Coconut.h @@ -0,0 +1,11 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface Coconut : NSObject + +- (void)makeCoconuts; + +@end + +NS_ASSUME_NONNULL_END diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/Headers/CoconutLib.h b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/Headers/CoconutLib.h new file mode 100644 index 0000000000..afb871111d --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/Headers/CoconutLib.h @@ -0,0 +1,11 @@ +#import + +//! Project version number for CoconutLib. +FOUNDATION_EXPORT double CoconutLibVersionNumber; + +//! Project version string for CoconutLib. +FOUNDATION_EXPORT const unsigned char CoconutLibVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import "Coconut.h" diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/Info.plist b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/Info.plist new file mode 100644 index 0000000000..1a60f7917e Binary files /dev/null and b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/Info.plist differ diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/Modules/module.modulemap b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/Modules/module.modulemap new file mode 100644 index 0000000000..935662f517 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module CoconutLib { + umbrella header "CoconutLib.h" + + export * + module * { export * } +} diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/_CodeSignature/CodeResources b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000000..3d7ce4a9d7 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/CoconutLib.framework/_CodeSignature/CodeResources @@ -0,0 +1,135 @@ + + + + + files + + Headers/Coconut.h + + xRZ2gtR7a+JUu8vlrj6ucJo0HZw= + + Headers/CoconutLib.h + + XDeshhJadkBf1PW1H8vYTSz6anE= + + Info.plist + + N9NcTTnWEZj9OMp/CTa7WV/m3sk= + + Modules/module.modulemap + + XBUmhbp5sPDDR0vApgYJ0zALOWI= + + + files2 + + Headers/Coconut.h + + hash2 + + Nnv5eWfCRS7X8m8b9VJ4F75efQAqgC/nrc9DIwOJpqc= + + + Headers/CoconutLib.h + + hash2 + + 81D6Wtna7bDB0hL/8v0U7Cb2+giki+ubCf+3UCXkrOI= + + + Modules/module.modulemap + + hash2 + + mhxBFlNwG/ASIqNY6yYtxs7CuysII4NrdaoGkHwJLCA= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/dSYMs/CoconutLib.framework.dSYM/Contents/Info.plist b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/dSYMs/CoconutLib.framework.dSYM/Contents/Info.plist new file mode 100644 index 0000000000..ef1134353c --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/dSYMs/CoconutLib.framework.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.org.cocoapods.CoconutLib.CoconutLib + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/dSYMs/CoconutLib.framework.dSYM/Contents/Resources/DWARF/CoconutLib b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/dSYMs/CoconutLib.framework.dSYM/Contents/Resources/DWARF/CoconutLib new file mode 100644 index 0000000000..59f47257b8 Binary files /dev/null and b/examples/Oddly-Named-XCF-Slices-Example/CoconutLib/build/CoconutLib.xcframework/coconut-water/dSYMs/CoconutLib.framework.dSYM/Contents/Resources/DWARF/CoconutLib differ diff --git a/examples/Oddly-Named-XCF-Slices-Example/Examples.xcworkspace/contents.xcworkspacedata b/examples/Oddly-Named-XCF-Slices-Example/Examples.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..20c43c27f7 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/Examples.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/examples/Oddly-Named-XCF-Slices-Example/Examples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/Oddly-Named-XCF-Slices-Example/Examples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/Examples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/examples/Oddly-Named-XCF-Slices-Example/Podfile b/examples/Oddly-Named-XCF-Slices-Example/Podfile new file mode 100644 index 0000000000..696408f722 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/Podfile @@ -0,0 +1,14 @@ +project 'VendoredXCFrameworkExample.xcodeproj' + +workspace 'Examples' + +target 'VendoredXCFrameworkExample' do + platform :ios, '13.0' + use_frameworks! + + # XCFramework with Xcode 12 style inclusion of debug symbols + # To rebuild the xcframework: + # cd CoconutLib + # ./build.sh + pod 'CoconutLib', path: './CoconutLib' +end diff --git a/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample.xcodeproj/project.pbxproj b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..b061971022 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample.xcodeproj/project.pbxproj @@ -0,0 +1,468 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXAggregateTarget section */ + 5BFCC900252E56C0000564E9 /* ArchiveAndValidate */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 5BFCC903252E56C0000564E9 /* Build configuration list for PBXAggregateTarget "ArchiveAndValidate" */; + buildPhases = ( + 5BFCC904252E56CB000564E9 /* ShellScript */, + ); + dependencies = ( + ); + name = ArchiveAndValidate; + productName = ArchiveAndValidate; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 5BFCC8D4252E3B9D000564E9 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BFCC8D3252E3B9D000564E9 /* AppDelegate.swift */; }; + 5BFCC8D6252E3B9D000564E9 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BFCC8D5252E3B9D000564E9 /* SceneDelegate.swift */; }; + 5BFCC8D8252E3B9D000564E9 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BFCC8D7252E3B9D000564E9 /* ViewController.swift */; }; + 5BFCC8DB252E3B9D000564E9 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5BFCC8D9252E3B9D000564E9 /* Main.storyboard */; }; + 5BFCC8DD252E3BA0000564E9 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5BFCC8DC252E3BA0000564E9 /* Assets.xcassets */; }; + 5BFCC8E0252E3BA0000564E9 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5BFCC8DE252E3BA0000564E9 /* LaunchScreen.storyboard */; }; + E8804959E79C141BDBC1EA27 /* Pods_VendoredXCFrameworkExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC757F4BE5B663DB11D87BBC /* Pods_VendoredXCFrameworkExample.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0D045E4A577FAB4E914EE2DD /* Pods-VendoredXCFrameworkExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VendoredXCFrameworkExample.release.xcconfig"; path = "Target Support Files/Pods-VendoredXCFrameworkExample/Pods-VendoredXCFrameworkExample.release.xcconfig"; sourceTree = ""; }; + 2574F357C51618E90C6EC20B /* Pods-VendoredXCFrameworkExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VendoredXCFrameworkExample.debug.xcconfig"; path = "Target Support Files/Pods-VendoredXCFrameworkExample/Pods-VendoredXCFrameworkExample.debug.xcconfig"; sourceTree = ""; }; + 5BFCC8D0252E3B9D000564E9 /* VendoredXCFrameworkExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = VendoredXCFrameworkExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 5BFCC8D3252E3B9D000564E9 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 5BFCC8D5252E3B9D000564E9 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 5BFCC8D7252E3B9D000564E9 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 5BFCC8DA252E3B9D000564E9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 5BFCC8DC252E3BA0000564E9 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 5BFCC8DF252E3BA0000564E9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 5BFCC8E1252E3BA0000564E9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + FC757F4BE5B663DB11D87BBC /* Pods_VendoredXCFrameworkExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_VendoredXCFrameworkExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5BFCC8CD252E3B9D000564E9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E8804959E79C141BDBC1EA27 /* Pods_VendoredXCFrameworkExample.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5BFCC8C7252E3B9D000564E9 = { + isa = PBXGroup; + children = ( + 5BFCC8D2252E3B9D000564E9 /* VendoredXCFrameworkExample */, + 5BFCC8D1252E3B9D000564E9 /* Products */, + F2EC89055FB594BA7C06074D /* Pods */, + E7A0A73DF4AE3A362BF2C461 /* Frameworks */, + ); + sourceTree = ""; + }; + 5BFCC8D1252E3B9D000564E9 /* Products */ = { + isa = PBXGroup; + children = ( + 5BFCC8D0252E3B9D000564E9 /* VendoredXCFrameworkExample.app */, + ); + name = Products; + sourceTree = ""; + }; + 5BFCC8D2252E3B9D000564E9 /* VendoredXCFrameworkExample */ = { + isa = PBXGroup; + children = ( + 5BFCC8D3252E3B9D000564E9 /* AppDelegate.swift */, + 5BFCC8D5252E3B9D000564E9 /* SceneDelegate.swift */, + 5BFCC8D7252E3B9D000564E9 /* ViewController.swift */, + 5BFCC8D9252E3B9D000564E9 /* Main.storyboard */, + 5BFCC8DC252E3BA0000564E9 /* Assets.xcassets */, + 5BFCC8DE252E3BA0000564E9 /* LaunchScreen.storyboard */, + 5BFCC8E1252E3BA0000564E9 /* Info.plist */, + ); + path = VendoredXCFrameworkExample; + sourceTree = ""; + }; + E7A0A73DF4AE3A362BF2C461 /* Frameworks */ = { + isa = PBXGroup; + children = ( + FC757F4BE5B663DB11D87BBC /* Pods_VendoredXCFrameworkExample.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + F2EC89055FB594BA7C06074D /* Pods */ = { + isa = PBXGroup; + children = ( + 2574F357C51618E90C6EC20B /* Pods-VendoredXCFrameworkExample.debug.xcconfig */, + 0D045E4A577FAB4E914EE2DD /* Pods-VendoredXCFrameworkExample.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5BFCC8CF252E3B9D000564E9 /* VendoredXCFrameworkExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5BFCC8E4252E3BA0000564E9 /* Build configuration list for PBXNativeTarget "VendoredXCFrameworkExample" */; + buildPhases = ( + 6860D7C68856622DD7D970D3 /* [CP] Check Pods Manifest.lock */, + 5BFCC8CC252E3B9D000564E9 /* Sources */, + 5BFCC8CD252E3B9D000564E9 /* Frameworks */, + 5BFCC8CE252E3B9D000564E9 /* Resources */, + EE937D12F1B4513467012FEA /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = VendoredXCFrameworkExample; + productName = VendoredXCFrameworkExample; + productReference = 5BFCC8D0252E3B9D000564E9 /* VendoredXCFrameworkExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 5BFCC8C8252E3B9D000564E9 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1170; + LastUpgradeCheck = 1170; + TargetAttributes = { + 5BFCC8CF252E3B9D000564E9 = { + CreatedOnToolsVersion = 11.7; + }; + 5BFCC900252E56C0000564E9 = { + CreatedOnToolsVersion = 11.7; + }; + }; + }; + buildConfigurationList = 5BFCC8CB252E3B9D000564E9 /* Build configuration list for PBXProject "VendoredXCFrameworkExample" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 5BFCC8C7252E3B9D000564E9; + productRefGroup = 5BFCC8D1252E3B9D000564E9 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 5BFCC8CF252E3B9D000564E9 /* VendoredXCFrameworkExample */, + 5BFCC900252E56C0000564E9 /* ArchiveAndValidate */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 5BFCC8CE252E3B9D000564E9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5BFCC8E0252E3BA0000564E9 /* LaunchScreen.storyboard in Resources */, + 5BFCC8DD252E3BA0000564E9 /* Assets.xcassets in Resources */, + 5BFCC8DB252E3B9D000564E9 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 5BFCC904252E56CB000564E9 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PROJECT_DIR}\"/archiveAndValidate.sh\n"; + }; + 6860D7C68856622DD7D970D3 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-VendoredXCFrameworkExample-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + EE937D12F1B4513467012FEA /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-VendoredXCFrameworkExample/Pods-VendoredXCFrameworkExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-VendoredXCFrameworkExample/Pods-VendoredXCFrameworkExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-VendoredXCFrameworkExample/Pods-VendoredXCFrameworkExample-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5BFCC8CC252E3B9D000564E9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5BFCC8D8252E3B9D000564E9 /* ViewController.swift in Sources */, + 5BFCC8D4252E3B9D000564E9 /* AppDelegate.swift in Sources */, + 5BFCC8D6252E3B9D000564E9 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 5BFCC8D9252E3B9D000564E9 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 5BFCC8DA252E3B9D000564E9 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 5BFCC8DE252E3BA0000564E9 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 5BFCC8DF252E3BA0000564E9 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 5BFCC8E2252E3BA0000564E9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 5BFCC8E3252E3BA0000564E9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 5BFCC8E5252E3BA0000564E9 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2574F357C51618E90C6EC20B /* Pods-VendoredXCFrameworkExample.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = VendoredXCFrameworkExample/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.VendoredXCFrameworkExample.VendoredXCFrameworkExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 5BFCC8E6252E3BA0000564E9 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0D045E4A577FAB4E914EE2DD /* Pods-VendoredXCFrameworkExample.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = VendoredXCFrameworkExample/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.VendoredXCFrameworkExample.VendoredXCFrameworkExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 5BFCC901252E56C0000564E9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 5BFCC902252E56C0000564E9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5BFCC8CB252E3B9D000564E9 /* Build configuration list for PBXProject "VendoredXCFrameworkExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5BFCC8E2252E3BA0000564E9 /* Debug */, + 5BFCC8E3252E3BA0000564E9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5BFCC8E4252E3BA0000564E9 /* Build configuration list for PBXNativeTarget "VendoredXCFrameworkExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5BFCC8E5252E3BA0000564E9 /* Debug */, + 5BFCC8E6252E3BA0000564E9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5BFCC903252E56C0000564E9 /* Build configuration list for PBXAggregateTarget "ArchiveAndValidate" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5BFCC901252E56C0000564E9 /* Debug */, + 5BFCC902252E56C0000564E9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 5BFCC8C8252E3B9D000564E9 /* Project object */; +} diff --git a/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample.xcodeproj/xcshareddata/xcschemes/ArchiveAndValidate.xcscheme b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample.xcodeproj/xcshareddata/xcschemes/ArchiveAndValidate.xcscheme new file mode 100644 index 0000000000..f9f2a11f22 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample.xcodeproj/xcshareddata/xcschemes/ArchiveAndValidate.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/AppDelegate.swift b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/AppDelegate.swift new file mode 100644 index 0000000000..5bf5dea2a0 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/AppDelegate.swift @@ -0,0 +1,24 @@ +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } +} diff --git a/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..9221b9bb1a --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Assets.xcassets/Contents.json b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Assets.xcassets/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Base.lproj/LaunchScreen.storyboard b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000000..865e9329f3 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Base.lproj/Main.storyboard b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Base.lproj/Main.storyboard new file mode 100644 index 0000000000..25a763858e --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Info.plist b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Info.plist new file mode 100644 index 0000000000..2a3483c0d2 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/Info.plist @@ -0,0 +1,64 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/SceneDelegate.swift b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/SceneDelegate.swift new file mode 100644 index 0000000000..813c432f21 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/SceneDelegate.swift @@ -0,0 +1,41 @@ +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } +} diff --git a/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/ViewController.swift b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/ViewController.swift new file mode 100644 index 0000000000..7463157494 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/VendoredXCFrameworkExample/ViewController.swift @@ -0,0 +1,11 @@ +import CoconutLib +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + Coconut().makeCoconuts() + } +} diff --git a/examples/Oddly-Named-XCF-Slices-Example/archiveAndValidate.sh b/examples/Oddly-Named-XCF-Slices-Example/archiveAndValidate.sh new file mode 100755 index 0000000000..120e32fc64 --- /dev/null +++ b/examples/Oddly-Named-XCF-Slices-Example/archiveAndValidate.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env sh +# +# This script is executed by the ArchiveAndValidate target in the Xcode project. +# It will generate an archive build of the example project and then validate +# that the expected debug symbols (dSYMs and BCSymbolMaps) are present in the +# built archive. It will also validate that the symbols are not present in the +# embedded copy of the .frameworks. +# + +exitCode=0 + +archivePath="${BUILD_DIR}/VendoredXCFrameworkExample.xcarchive" + +xcodebuild archive \ + -workspace "${PROJECT_DIR}/Examples.xcworkspace" \ + -scheme "VendoredXCFrameworkExample" \ + -configuration "Release" \ + -archivePath "${archivePath}" \ + CODE_SIGN_IDENTITY="" \ + CODE_SIGNING_REQUIRED=NO \ + CODE_SIGN_ENTITLEMENTS="" \ + CODE_SIGNING_ALLOWED="NO" + +# --------------------------------------- +# Collecting debug symbols in archive +# --------------------------------------- + +# Ensure the expected dSYMs are in the root of the archive +dsymsPath="${archivePath}/dSYMs" + +if ! test -d "$dsymsPath/VendoredXCFrameworkExample.app.dSYM"; then + echo "error: Missing dSYM: VendoredXCFrameworkExample.app.dSYM" + exitCode=1 +fi + +if ! test -d "$dsymsPath/CoconutLib.framework.dSYM"; then + echo "error: Missing dSYM: CoconutLib.framework.dSYM" + exitCode=1 +fi + +appPath="${archivePath}/Products/Applications/VendoredXCFrameworkExample.app" + +if ! [[ "$(file -b "${appPath}/Frameworks/CoconutLib.framework/CoconutLib")" == *"arm64"* ]]; then + echo "error: wrong arch: $(file -b "${appPath}/Frameworks/CoconutLib.framework/CoconutLib")" + exitCode=1 +fi + +archivePath="${BUILD_DIR}/VendoredXCFrameworkExample-Simulator.xcarchive" + +xcodebuild archive \ + -workspace "${PROJECT_DIR}/Examples.xcworkspace" \ + -scheme "VendoredXCFrameworkExample" \ + -configuration "Release" \ + -sdk iphonesimulator \ + -archivePath "${archivePath}" \ + CODE_SIGN_IDENTITY="" \ + CODE_SIGNING_REQUIRED=NO \ + CODE_SIGN_ENTITLEMENTS="" \ + CODE_SIGNING_ALLOWED="NO" + +# --------------------------------------- +# Collecting debug symbols in archive +# --------------------------------------- + +# Ensure the expected dSYMs are in the root of the archive +dsymsPath="${archivePath}/dSYMs" + +if ! test -d "$dsymsPath/VendoredXCFrameworkExample.app.dSYM"; then + echo "error: Missing dSYM: VendoredXCFrameworkExample.app.dSYM" + exitCode=1 +fi + +if ! test -d "$dsymsPath/CoconutLib.framework.dSYM"; then + echo "error: Missing dSYM: CoconutLib.framework.dSYM" + exitCode=1 +fi + +appPath="${archivePath}/Products/Applications/VendoredXCFrameworkExample.app" + +if ! [[ "$(file -b "${appPath}/Frameworks/CoconutLib.framework/CoconutLib")" == *"x86_64"* ]]; then + echo "error: wrong arch: $(file -b "${appPath}/Frameworks/CoconutLib.framework/CoconutLib")" + exitCode=1 +fi + +exit $exitCode diff --git a/lib/cocoapods/generator/copy_xcframework_script.rb b/lib/cocoapods/generator/copy_xcframework_script.rb index 4f744f1682..5164bd04f4 100644 --- a/lib/cocoapods/generator/copy_xcframework_script.rb +++ b/lib/cocoapods/generator/copy_xcframework_script.rb @@ -64,6 +64,10 @@ def script #{Pod::Generator::ScriptPhaseConstants::RSYNC_PROTECT_TMP_FILES} +#{variant_for_slice} + +#{archs_for_slice} + copy_dir() { local source="$1" @@ -77,7 +81,9 @@ def script SELECT_SLICE_RETVAL="" select_slice() { - local paths=("$@") + local xcframework_name="$1" + xcframework_name="${xcframework_name##*/}" + local paths=("${@:2}") # Locate the correct slice of the .xcframework for the current architectures local target_path="" @@ -93,29 +99,15 @@ def script fi for i in ${!paths[@]}; do local matched_all_archs="1" - for target_arch in $target_archs - do - if ! [[ "${paths[$i]}" == *"$target_variant"* ]]; then + local slice_archs="$(archs_for_slice "${xcframework_name}/${paths[$i]}")" + local slice_variant="$(variant_for_slice "${xcframework_name}/${paths[$i]}")" + for target_arch in $target_archs; do + if ! [[ "${slice_variant}" == "$target_variant" ]]; then matched_all_archs="0" break fi - # Verifies that the path contains the variant string (simulator or maccatalyst) if the variant is set. - if [[ -z "$target_variant" && ("${paths[$i]}" == *"simulator"* || "${paths[$i]}" == *"maccatalyst"*) ]]; then - matched_all_archs="0" - break - fi - - # This regex matches all possible variants of the arch in the folder name: - # Let's say the folder name is: ios-armv7_armv7s_arm64_arm64e/CoconutLib.framework - # We match the following: -armv7_, _armv7s_, _arm64_ and _arm64e/. - # If we have a specific variant: ios-i386_x86_64-simulator/CoconutLib.framework - # We match the following: -i386_ and _x86_64- - # When the .xcframework wraps a static library, the folder name does not include - # any .framework. In that case, the folder name can be: ios-arm64_armv7 - # We also match _armv7$ to handle that case. - local target_arch_regex="[_\\-]${target_arch}([\\/_\\-]|$)" - if ! [[ "${paths[$i]}" =~ $target_arch_regex ]]; then + if ! echo "${slice_archs}" | tr " " "\\n" | grep -F -q -x "$target_arch"; then matched_all_archs="0" break fi @@ -137,10 +129,10 @@ def script local paths=("${@:4}") # Locate the correct slice of the .xcframework for the current architectures - select_slice "${paths[@]}" + select_slice "${basepath}" "${paths[@]}" local target_path="$SELECT_SLICE_RETVAL" if [[ -z "$target_path" ]]; then - echo "warning: [CP] Unable to find matching .xcframework slice in '${paths[@]}' for the current build architectures ($ARCHS)." + echo "warning: [CP] $(basename ${basepath}): Unable to find matching slice in '${paths[@]}' for the current build architectures ($ARCHS) and platform ($EFFECTIVE_PLATFORM_NAME)." return fi local source="$basepath/$target_path" @@ -183,6 +175,40 @@ def install_xcframework_args(xcframework, slices) args.join(' ') end + def variant_for_slice + script = '' + script << "variant_for_slice()\n" + script << "{\n" + script << " case \"$1\" in\n" + xcframeworks.each do |xcframework| + root = xcframework.path + xcframework.slices.each do |slice| + script << " #{shell_escape(root.basename.join(slice.path.dirname.relative_path_from(root)))})\n" + script << " echo \"#{slice.platform_variant}\"\n" + script << " ;;\n" + end + end + script << " esac\n" + script << '}' + end + + def archs_for_slice + script = '' + script << "archs_for_slice()\n" + script << "{\n" + script << " case \"$1\" in\n" + xcframeworks.each do |xcframework| + root = xcframework.path + xcframework.slices.each do |slice| + script << " #{shell_escape(root.basename.join(slice.path.dirname.relative_path_from(root)))})\n" + script << " echo \"#{slice.supported_archs.sort.join(' ')}\"\n" + script << " ;;\n" + end + end + script << " esac\n" + script << '}' + end + class << self # @param [Pathname] xcframework_path # the base path of the .xcframework bundle diff --git a/spec/cocoapods-integration-specs b/spec/cocoapods-integration-specs index b302d88642..f7b6480435 160000 --- a/spec/cocoapods-integration-specs +++ b/spec/cocoapods-integration-specs @@ -1 +1 @@ -Subproject commit b302d88642a824f0389fd40e4ecb5f4c89235df1 +Subproject commit f7b6480435535f1ccd8776ffc5991546b0856c5f