From 3686dd64ca3743fc96e2c5fa93d0fafdddb6812e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 16 Aug 2018 15:26:24 +0200 Subject: [PATCH] Create initial project structure --- .gitignore | 5 + Framework/Info.plist | 24 ++ .../Sources/Helpers/NSBundle+SRGDiagnostics.h | 20 + .../Sources/Helpers/NSBundle+SRGDiagnostics.m | 25 ++ .../Sources/Player/SRGDiagnosticsService.h | 15 + .../Sources/Player/SRGDiagnosticsService.m | 11 + Framework/Sources/SRGDiagnostics.h | 10 + Framework/Sources/SRGDiagnostics.m | 14 + LICENSE | 3 + SRGDiagnostics.xcodeproj/project.pbxproj | 371 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcschemes/SRGDiagnostics.xcscheme | 80 ++++ docs/README-images/logo.png | Bin 0 -> 54077 bytes docs/README.md | 74 ++++ 15 files changed, 667 insertions(+) create mode 100644 .gitignore create mode 100644 Framework/Info.plist create mode 100644 Framework/Sources/Helpers/NSBundle+SRGDiagnostics.h create mode 100644 Framework/Sources/Helpers/NSBundle+SRGDiagnostics.m create mode 100644 Framework/Sources/Player/SRGDiagnosticsService.h create mode 100644 Framework/Sources/Player/SRGDiagnosticsService.m create mode 100644 Framework/Sources/SRGDiagnostics.h create mode 100644 Framework/Sources/SRGDiagnostics.m create mode 100644 LICENSE create mode 100644 SRGDiagnostics.xcodeproj/project.pbxproj create mode 100644 SRGDiagnostics.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 SRGDiagnostics.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 SRGDiagnostics.xcodeproj/xcshareddata/xcschemes/SRGDiagnostics.xcscheme create mode 100644 docs/README-images/logo.png create mode 100644 docs/README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..64048d3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +Carthage +xcuserdata +.DS_Store +report.xml +test_output \ No newline at end of file diff --git a/Framework/Info.plist b/Framework/Info.plist new file mode 100644 index 0000000..fcd3639 --- /dev/null +++ b/Framework/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Framework/Sources/Helpers/NSBundle+SRGDiagnostics.h b/Framework/Sources/Helpers/NSBundle+SRGDiagnostics.h new file mode 100644 index 0000000..67b5de8 --- /dev/null +++ b/Framework/Sources/Helpers/NSBundle+SRGDiagnostics.h @@ -0,0 +1,20 @@ +// +// Copyright (c) SRG SSR. All rights reserved. +// +// License information is available from the LICENSE file. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NSBundle (SRGDiagnostics) + +/** + * The SRGDiagnostics resource bundle. + */ ++ (NSBundle *)srg_diagnosticsBundle; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Framework/Sources/Helpers/NSBundle+SRGDiagnostics.m b/Framework/Sources/Helpers/NSBundle+SRGDiagnostics.m new file mode 100644 index 0000000..e2f0eb4 --- /dev/null +++ b/Framework/Sources/Helpers/NSBundle+SRGDiagnostics.m @@ -0,0 +1,25 @@ +// +// Copyright (c) SRG SSR. All rights reserved. +// +// License information is available from the LICENSE file. +// + +#import "NSBundle+SRGDiagnostics.h" + +#import "SRGDiagnosticsService.h" + +@implementation NSBundle (SRGDiagnostics) + +#pragma mark Class methods + ++ (instancetype)srg_diagnosticsBundle +{ + static NSBundle *s_bundle; + static dispatch_once_t s_onceToken; + dispatch_once(&s_onceToken, ^{ + s_bundle = [NSBundle bundleForClass:[SRGDiagnosticsService class]]; + }); + return s_bundle; +} + +@end diff --git a/Framework/Sources/Player/SRGDiagnosticsService.h b/Framework/Sources/Player/SRGDiagnosticsService.h new file mode 100644 index 0000000..036ddb5 --- /dev/null +++ b/Framework/Sources/Player/SRGDiagnosticsService.h @@ -0,0 +1,15 @@ +// +// Copyright (c) SRG SSR. All rights reserved. +// +// License information is available from the LICENSE file. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SRGDiagnosticsService : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/Framework/Sources/Player/SRGDiagnosticsService.m b/Framework/Sources/Player/SRGDiagnosticsService.m new file mode 100644 index 0000000..5bad4e7 --- /dev/null +++ b/Framework/Sources/Player/SRGDiagnosticsService.m @@ -0,0 +1,11 @@ +// +// Copyright (c) SRG SSR. All rights reserved. +// +// License information is available from the LICENSE file. +// + +#import "SRGDiagnosticsService.h" + +@implementation SRGDiagnosticsService + +@end diff --git a/Framework/Sources/SRGDiagnostics.h b/Framework/Sources/SRGDiagnostics.h new file mode 100644 index 0000000..ef1c740 --- /dev/null +++ b/Framework/Sources/SRGDiagnostics.h @@ -0,0 +1,10 @@ +// +// Copyright (c) SRG SSR. All rights reserved. +// +// License information is available from the LICENSE file. +// + +#import + +// Official version number. +FOUNDATION_EXPORT NSString *SRGDiagnosticsMarketingVersion(void); diff --git a/Framework/Sources/SRGDiagnostics.m b/Framework/Sources/SRGDiagnostics.m new file mode 100644 index 0000000..b5cbb15 --- /dev/null +++ b/Framework/Sources/SRGDiagnostics.m @@ -0,0 +1,14 @@ +// +// Copyright (c) SRG SSR. All rights reserved. +// +// License information is available from the LICENSE file. +// + +#import "SRGDiagnostics.h" + +#import "NSBundle+SRGDiagnostics.h" + +NSString *SRGDiagnosticsMarketingVersion(void) +{ + return [NSBundle srg_diagnosticsBundle].infoDictionary[@"CFBundleShortVersionString"]; +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..57cc62c --- /dev/null +++ b/LICENSE @@ -0,0 +1,3 @@ +(c) SRG SSR, all rights reserved. + +This library can not be copied and/or distributed without express permission. \ No newline at end of file diff --git a/SRGDiagnostics.xcodeproj/project.pbxproj b/SRGDiagnostics.xcodeproj/project.pbxproj new file mode 100644 index 0000000..964e71c --- /dev/null +++ b/SRGDiagnostics.xcodeproj/project.pbxproj @@ -0,0 +1,371 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 6F0EB54020FC7FA9009C02CF /* SRGDiagnostics.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F0EB53E20FC7FA9009C02CF /* SRGDiagnostics.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6F0EB54320FC7FF4009C02CF /* SRGDiagnostics.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F0EB54220FC7FF4009C02CF /* SRGDiagnostics.m */; }; + 6F0EB54720FC8049009C02CF /* NSBundle+SRGDiagnostics.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F0EB54520FC8049009C02CF /* NSBundle+SRGDiagnostics.m */; }; + 6F0EB54820FC8049009C02CF /* NSBundle+SRGDiagnostics.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F0EB54620FC8049009C02CF /* NSBundle+SRGDiagnostics.h */; }; + 6F0EB54C20FC80E2009C02CF /* SRGDiagnosticsService.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F0EB54A20FC80E2009C02CF /* SRGDiagnosticsService.h */; }; + 6F0EB54D20FC80E2009C02CF /* SRGDiagnosticsService.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F0EB54B20FC80E2009C02CF /* SRGDiagnosticsService.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 6F0EB53120FC7F58009C02CF /* SRGDiagnostics.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SRGDiagnostics.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6F0EB53E20FC7FA9009C02CF /* SRGDiagnostics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SRGDiagnostics.h; sourceTree = ""; }; + 6F0EB53F20FC7FA9009C02CF /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 6F0EB54220FC7FF4009C02CF /* SRGDiagnostics.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SRGDiagnostics.m; sourceTree = ""; }; + 6F0EB54520FC8049009C02CF /* NSBundle+SRGDiagnostics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSBundle+SRGDiagnostics.m"; sourceTree = ""; }; + 6F0EB54620FC8049009C02CF /* NSBundle+SRGDiagnostics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSBundle+SRGDiagnostics.h"; sourceTree = ""; }; + 6F0EB54A20FC80E2009C02CF /* SRGDiagnosticsService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SRGDiagnosticsService.h; sourceTree = ""; }; + 6F0EB54B20FC80E2009C02CF /* SRGDiagnosticsService.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SRGDiagnosticsService.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 6F0EB52D20FC7F58009C02CF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 6F0EB52720FC7F58009C02CF = { + isa = PBXGroup; + children = ( + 6F0EB53C20FC7FA9009C02CF /* Framework */, + 6F0EB53220FC7F58009C02CF /* Products */, + ); + sourceTree = ""; + }; + 6F0EB53220FC7F58009C02CF /* Products */ = { + isa = PBXGroup; + children = ( + 6F0EB53120FC7F58009C02CF /* SRGDiagnostics.framework */, + ); + name = Products; + sourceTree = ""; + }; + 6F0EB53C20FC7FA9009C02CF /* Framework */ = { + isa = PBXGroup; + children = ( + 6F0EB53D20FC7FA9009C02CF /* Sources */, + 6F0EB53F20FC7FA9009C02CF /* Info.plist */, + ); + path = Framework; + sourceTree = ""; + }; + 6F0EB53D20FC7FA9009C02CF /* Sources */ = { + isa = PBXGroup; + children = ( + 6F0EB54920FC8097009C02CF /* Player */, + 6F0EB54420FC8049009C02CF /* Helpers */, + 6F0EB53E20FC7FA9009C02CF /* SRGDiagnostics.h */, + 6F0EB54220FC7FF4009C02CF /* SRGDiagnostics.m */, + ); + path = Sources; + sourceTree = ""; + }; + 6F0EB54420FC8049009C02CF /* Helpers */ = { + isa = PBXGroup; + children = ( + 6F0EB54620FC8049009C02CF /* NSBundle+SRGDiagnostics.h */, + 6F0EB54520FC8049009C02CF /* NSBundle+SRGDiagnostics.m */, + ); + path = Helpers; + sourceTree = ""; + }; + 6F0EB54920FC8097009C02CF /* Player */ = { + isa = PBXGroup; + children = ( + 6F0EB54A20FC80E2009C02CF /* SRGDiagnosticsService.h */, + 6F0EB54B20FC80E2009C02CF /* SRGDiagnosticsService.m */, + ); + path = Player; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 6F0EB52E20FC7F58009C02CF /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 6F0EB54020FC7FA9009C02CF /* SRGDiagnostics.h in Headers */, + 6F0EB54820FC8049009C02CF /* NSBundle+SRGDiagnostics.h in Headers */, + 6F0EB54C20FC80E2009C02CF /* SRGDiagnosticsService.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 6F0EB53020FC7F58009C02CF /* SRGDiagnostics */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6F0EB53920FC7F58009C02CF /* Build configuration list for PBXNativeTarget "SRGDiagnostics" */; + buildPhases = ( + 6F0EB52C20FC7F58009C02CF /* Sources */, + 6F0EB52D20FC7F58009C02CF /* Frameworks */, + 6F0EB52E20FC7F58009C02CF /* Headers */, + 6F0EB52F20FC7F58009C02CF /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SRGDiagnostics; + productName = SRGDiagnostics; + productReference = 6F0EB53120FC7F58009C02CF /* SRGDiagnostics.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 6F0EB52820FC7F58009C02CF /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0940; + ORGANIZATIONNAME = "SRG SSR"; + TargetAttributes = { + 6F0EB53020FC7F58009C02CF = { + CreatedOnToolsVersion = 9.4; + }; + }; + }; + buildConfigurationList = 6F0EB52B20FC7F58009C02CF /* Build configuration list for PBXProject "SRGDiagnostics" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 6F0EB52720FC7F58009C02CF; + productRefGroup = 6F0EB53220FC7F58009C02CF /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 6F0EB53020FC7F58009C02CF /* SRGDiagnostics */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 6F0EB52F20FC7F58009C02CF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 6F0EB52C20FC7F58009C02CF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6F0EB54720FC8049009C02CF /* NSBundle+SRGDiagnostics.m in Sources */, + 6F0EB54320FC7FF4009C02CF /* SRGDiagnostics.m in Sources */, + 6F0EB54D20FC80E2009C02CF /* SRGDiagnosticsService.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 6F0EB53720FC7F58009C02CF /* 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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + 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 = 9.0; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 6F0EB53820FC7F58009C02CF /* 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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + 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 = 9.0; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 6F0EB53A20FC7F58009C02CF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = ch.srgssr.SRGDiagnostics; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 6F0EB53B20FC7F58009C02CF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = ch.srgssr.SRGDiagnostics; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6F0EB52B20FC7F58009C02CF /* Build configuration list for PBXProject "SRGDiagnostics" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6F0EB53720FC7F58009C02CF /* Debug */, + 6F0EB53820FC7F58009C02CF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6F0EB53920FC7F58009C02CF /* Build configuration list for PBXNativeTarget "SRGDiagnostics" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6F0EB53A20FC7F58009C02CF /* Debug */, + 6F0EB53B20FC7F58009C02CF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 6F0EB52820FC7F58009C02CF /* Project object */; +} diff --git a/SRGDiagnostics.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SRGDiagnostics.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..e11e57f --- /dev/null +++ b/SRGDiagnostics.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/SRGDiagnostics.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/SRGDiagnostics.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/SRGDiagnostics.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/SRGDiagnostics.xcodeproj/xcshareddata/xcschemes/SRGDiagnostics.xcscheme b/SRGDiagnostics.xcodeproj/xcshareddata/xcschemes/SRGDiagnostics.xcscheme new file mode 100644 index 0000000..5a7c95a --- /dev/null +++ b/SRGDiagnostics.xcodeproj/xcshareddata/xcschemes/SRGDiagnostics.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/README-images/logo.png b/docs/README-images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fd6b12278e38561647bae828522aeae40ff93 GIT binary patch literal 54077 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

Xej})GD;$lO_@o9#0-$pKbuQNYG(h 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

+ +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) + +## About + +## Compatibility + +The library is suitable for applications running on iOS 9 and above. The project is meant to be opened with the latest Xcode version (currently Xcode 9). + +## Installation + +The library can be added to a project using [Carthage](https://github.com/Carthage/Carthage) by adding the following dependency to your `Cartfile`: + +``` +github "SRGSSR/srgdiagnostics-ios" +``` + +Until Carthage 0.30, only dynamic frameworks could be integrated. Starting with Carthage 0.30, though, frameworks can be integrated statically as well, which avoids slow application startups usually associated with the use of too many dynamic frameworks. + +For more information about Carthage and its use, refer to the [official documentation](https://github.com/Carthage/Carthage). + +### Dependencies + +The library requires the following frameworks to be added to any target requiring it: + +* `SRGDiagnostics`: The main library framework. + +### Dynamic framework integration + +1. Run `carthage update` to update the dependencies (which is equivalent to `carthage update --configuration Release`). +2. Add the frameworks listed above and generated in the `Carthage/Build/iOS` folder to your target _Embedded binaries_. + +If your target is building an application, a few more steps are required: + +1. Add a _Run script_ build phase to your target, with `/usr/local/bin/carthage copy-frameworks` as command. +2. Add each of the required frameworks above as input file `$(SRCROOT)/Carthage/Build/iOS/FrameworkName.framework`. + +### Static framework integration + +1. Run `carthage update --configuration Release-static` to update the dependencies. +2. Add the frameworks listed above and generated in the `Carthage/Build/iOS/Static` folder to the _Linked frameworks and libraries_ list of your target. +3. Also add any resource bundle `.bundle` found within the `.framework` folders to your target directly. +4. Add the `-all_load` flag to your target _Other linker flags_. + +## Usage + +When you want to use classes or functions provided by the library in your code, you must import it from your source files first. + +### Usage from Objective-C source files + +Import the global header file using: + +```objective-c +#import +``` + +or directly import the module itself: + +```objective-c +@import SRGDiagnostics; +``` + +### Usage from Swift source files + +Import the module where needed: + +```swift +import SRGDiagnostics +``` + +## License + +See the [LICENSE](../LICENSE) file for more information.