Add basic xcconfigs with support for user build settings

Could be used to, e.g., disable treating warnings as errors locally, but still
have new warnings caught on CI.
This commit is contained in:
Adam Sharp
2024-10-23 11:12:08 -04:00
parent 3d8eb76994
commit 34ceacb2a9
5 changed files with 53 additions and 16 deletions

3
.gitignore vendored
View File

@@ -1,3 +1,6 @@
# Exclude user build config files
Config/User*.xcconfig
# Exclude the build directory
build/*
# Exclude temp nibs and swap files

View File

@@ -0,0 +1,9 @@
//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
#include "Project.xcconfig"
// User-specific overrides
#include? "User-Debug.xcconfig"

View File

@@ -0,0 +1,9 @@
//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
#include "Project.xcconfig"
// User-specific overrides
#include? "User-Release.xcconfig"

12
Config/Project.xcconfig Normal file
View File

@@ -0,0 +1,12 @@
//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES
GCC_TREAT_WARNINGS_AS_ERRORS = YES
MTL_TREAT_WARNINGS_AS_ERRORS = YES
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES
// User-specific overrides
#include? "User.xcconfig"

View File

@@ -3600,6 +3600,10 @@
059982632C6D0C4F00C87533 /* ChatListPinInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListPinInfo.swift; sourceTree = "<group>"; };
05B411242C62845000A1EDBC /* ChatListInboxFilterSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListInboxFilterSection.swift; sourceTree = "<group>"; };
05E3A4DD8B4442530268AFC1 /* Pods-SignalShareExtension.app store release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalShareExtension.app store release.xcconfig"; path = "Target Support Files/Pods-SignalShareExtension/Pods-SignalShareExtension.app store release.xcconfig"; sourceTree = "<group>"; };
05EA61422CC9437F00B16D4E /* Project-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Project-Debug.xcconfig"; sourceTree = "<group>"; };
05EA61432CC943D200B16D4E /* Project-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Project-Release.xcconfig"; sourceTree = "<group>"; };
05EA61442CC943DD00B16D4E /* Project.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = "<group>"; };
05EA61472CC9491400B16D4E /* User.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = User.xcconfig; sourceTree = "<group>"; };
0BADD293DAFC82BF3274F0F6 /* Pods_SignalTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SignalTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
1404D8B2276A353A0068E2F6 /* ChatListViewController+Multiselect.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ChatListViewController+Multiselect.swift"; sourceTree = "<group>"; };
1466AB272817F7E7003B3D9F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = translations/en.lproj/PluralAware.stringsdict; sourceTree = "<group>"; };
@@ -7288,6 +7292,17 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
05EA61412CC9437300B16D4E /* Config */ = {
isa = PBXGroup;
children = (
05EA61422CC9437F00B16D4E /* Project-Debug.xcconfig */,
05EA61432CC943D200B16D4E /* Project-Release.xcconfig */,
05EA61442CC943DD00B16D4E /* Project.xcconfig */,
05EA61472CC9491400B16D4E /* User.xcconfig */,
);
path = Config;
sourceTree = "<group>";
};
07B6BFA4D17E1353B0696C14 /* Pods */ = {
isa = PBXGroup;
children = (
@@ -10955,6 +10970,7 @@
453518691FC635DD00210559 /* SignalShareExtension */,
34A954A9271A471200B05242 /* SignalUI */,
F9C5C898289451B900548EEE /* SignalServiceKit */,
05EA61412CC9437300B16D4E /* Config */,
D221A08C169C9E5E00537ABF /* Frameworks */,
D221A08A169C9E5E00537ABF /* Products */,
07B6BFA4D17E1353B0696C14 /* Pods */,
@@ -19065,6 +19081,7 @@
};
4C10B17A23176CEB0099396B /* Testable Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 05EA61432CC943D200B16D4E /* Project-Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_GCD_PERFORMANCE = YES;
@@ -19106,8 +19123,6 @@
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = "TESTABLE_BUILD=1";
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
@@ -19133,7 +19148,6 @@
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Signal Messenger, LLC";
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_TREAT_WARNINGS_AS_ERRORS = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = (
"-DNS_BLOCK_ASSERTIONS=1",
@@ -19145,7 +19159,6 @@
SIGNAL_MERCHANTID = org.signalfoundation;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_UPCOMING_FEATURE_CONCISE_MAGIC_FILE = YES;
SWIFT_UPCOMING_FEATURE_DEPRECATE_APPLICATION_MAIN = YES;
SWIFT_UPCOMING_FEATURE_DISABLE_OUTWARD_ACTOR_ISOLATION = YES;
@@ -19324,6 +19337,7 @@
};
88238EA724EAD2FD00F28079 /* Profiling */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 05EA61432CC943D200B16D4E /* Project-Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_GCD_PERFORMANCE = YES;
@@ -19364,8 +19378,6 @@
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = "TESTABLE_BUILD=1";
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
@@ -19391,7 +19403,6 @@
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Signal Messenger, LLC";
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_TREAT_WARNINGS_AS_ERRORS = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
OTHER_SWIFT_FLAGS = "-DTESTABLE_BUILD";
@@ -19400,7 +19411,6 @@
SIGNAL_MERCHANTID = org.signalfoundation;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_UPCOMING_FEATURE_CONCISE_MAGIC_FILE = YES;
SWIFT_UPCOMING_FEATURE_DEPRECATE_APPLICATION_MAIN = YES;
SWIFT_UPCOMING_FEATURE_DISABLE_OUTWARD_ACTOR_ISOLATION = YES;
@@ -19579,6 +19589,7 @@
};
D221A0BA169C9E5F00537ABF /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 05EA61422CC9437F00B16D4E /* Project-Debug.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_GCD_PERFORMANCE = YES;
@@ -19625,8 +19636,6 @@
USE_DEBUG_UI,
);
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
@@ -19652,14 +19661,12 @@
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Signal Messenger, LLC";
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_TREAT_WARNINGS_AS_ERRORS = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_SWIFT_FLAGS = "-DTESTABLE_BUILD -DUSE_DEBUG_UI";
SDKROOT = iphoneos;
SIGNAL_BUNDLEID_PREFIX = org.whispersystems;
SIGNAL_MERCHANTID = org.signalfoundation;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_UPCOMING_FEATURE_CONCISE_MAGIC_FILE = YES;
SWIFT_UPCOMING_FEATURE_DEPRECATE_APPLICATION_MAIN = YES;
SWIFT_UPCOMING_FEATURE_DISABLE_OUTWARD_ACTOR_ISOLATION = YES;
@@ -19686,6 +19693,7 @@
};
D221A0BB169C9E5F00537ABF /* App Store Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 05EA61432CC943D200B16D4E /* Project-Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_GCD_PERFORMANCE = YES;
@@ -19725,8 +19733,6 @@
GCC_ENABLE_OBJC_EXCEPTIONS = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
@@ -19752,7 +19758,6 @@
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Signal Messenger, LLC";
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_TREAT_WARNINGS_AS_ERRORS = YES;
ONLY_ACTIVE_ARCH = NO;
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
SDKROOT = iphoneos;
@@ -19760,7 +19765,6 @@
SIGNAL_MERCHANTID = org.signalfoundation;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_UPCOMING_FEATURE_CONCISE_MAGIC_FILE = YES;
SWIFT_UPCOMING_FEATURE_DEPRECATE_APPLICATION_MAIN = YES;
SWIFT_UPCOMING_FEATURE_DISABLE_OUTWARD_ACTOR_ISOLATION = YES;