Skip to content

Commit cac4797

Browse files
committed
Updated project to support macOS 13.3 and Xcode 14.3
Updated codebase to drop deprecated APIs Used llvm version 15.0.0 instead of 10.0.0 Updated configure script to support arm64(M1/M2)
1 parent 5eae170 commit cac4797

File tree

6 files changed

+75
-31
lines changed

6 files changed

+75
-31
lines changed

XcodeClangFormat.xcodeproj/project.pbxproj

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
01A2121929F1D46000639A2B /* UniformTypeIdentifiers.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 01A2121829F1D46000639A2B /* UniformTypeIdentifiers.framework */; };
11+
01A2121A29F1D47D00639A2B /* XcodeKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 01A2120E29F1C40400639A2B /* XcodeKit.framework */; };
12+
01A2121B29F1D47D00639A2B /* XcodeKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 01A2120E29F1C40400639A2B /* XcodeKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1013
559B23E31D7EBDA300937AB3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 559B23E21D7EBDA300937AB3 /* AppDelegate.m */; };
1114
559B23E61D7EBDA300937AB3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 559B23E51D7EBDA300937AB3 /* main.m */; };
1215
559B23E81D7EBDA300937AB3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 559B23E71D7EBDA300937AB3 /* Assets.xcassets */; };
@@ -29,6 +32,17 @@
2932
/* End PBXContainerItemProxy section */
3033

3134
/* Begin PBXCopyFilesBuildPhase section */
35+
01A2121C29F1D47E00639A2B /* Embed Frameworks */ = {
36+
isa = PBXCopyFilesBuildPhase;
37+
buildActionMask = 2147483647;
38+
dstPath = "";
39+
dstSubfolderSpec = 10;
40+
files = (
41+
01A2121B29F1D47D00639A2B /* XcodeKit.framework in Embed Frameworks */,
42+
);
43+
name = "Embed Frameworks";
44+
runOnlyForDeploymentPostprocessing = 0;
45+
};
3246
559B240A1D7EBDB700937AB3 /* Embed App Extensions */ = {
3347
isa = PBXCopyFilesBuildPhase;
3448
buildActionMask = 2147483647;
@@ -43,6 +57,9 @@
4357
/* End PBXCopyFilesBuildPhase section */
4458

4559
/* Begin PBXFileReference section */
60+
01A2120E29F1C40400639A2B /* XcodeKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XcodeKit.framework; path = Library/Frameworks/XcodeKit.framework; sourceTree = DEVELOPER_DIR; };
61+
01A2121229F1C4D900639A2B /* configure */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure; sourceTree = "<group>"; };
62+
01A2121829F1D46000639A2B /* UniformTypeIdentifiers.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UniformTypeIdentifiers.framework; path = System/Library/Frameworks/UniformTypeIdentifiers.framework; sourceTree = SDKROOT; };
4663
552396A22473BCCB002F4098 /* ClangFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClangFormat.h; sourceTree = "<group>"; };
4764
556DCDEF1D7EF694005956C8 /* XcodeClangFormat.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = XcodeClangFormat.entitlements; sourceTree = "<group>"; };
4865
557D38B71D7F270E00708269 /* libcurses.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libcurses.tbd; path = usr/lib/libcurses.tbd; sourceTree = SDKROOT; };
@@ -77,6 +94,8 @@
7794
isa = PBXFrameworksBuildPhase;
7895
buildActionMask = 2147483647;
7996
files = (
97+
01A2121929F1D46000639A2B /* UniformTypeIdentifiers.framework in Frameworks */,
98+
01A2121A29F1D47D00639A2B /* XcodeKit.framework in Frameworks */,
8099
55BCFFFA1D80170F000EDB05 /* libcurses.tbd in Frameworks */,
81100
559B24101D7EBDC400937AB3 /* Cocoa.framework in Frameworks */,
82101
);
@@ -90,6 +109,7 @@
90109
children = (
91110
55BCFFF71D801362000EDB05 /* config.xcconfig */,
92111
55C8203F1D87F81300006D07 /* LICENSE.md */,
112+
01A2121229F1C4D900639A2B /* configure */,
93113
559B23E01D7EBDA300937AB3 /* XcodeClangFormat */,
94114
559B24111D7EBDC400937AB3 /* clang-format */,
95115
559B23F71D7EBDB700937AB3 /* Frameworks */,
@@ -131,6 +151,8 @@
131151
559B23F71D7EBDB700937AB3 /* Frameworks */ = {
132152
isa = PBXGroup;
133153
children = (
154+
01A2121829F1D46000639A2B /* UniformTypeIdentifiers.framework */,
155+
01A2120E29F1C40400639A2B /* XcodeKit.framework */,
134156
557D38B71D7F270E00708269 /* libcurses.tbd */,
135157
559B23F81D7EBDB700937AB3 /* Cocoa.framework */,
136158
);
@@ -188,6 +210,7 @@
188210
559B240B1D7EBDC400937AB3 /* Sources */,
189211
559B240C1D7EBDC400937AB3 /* Frameworks */,
190212
559B240D1D7EBDC400937AB3 /* Resources */,
213+
01A2121C29F1D47E00639A2B /* Embed Frameworks */,
191214
);
192215
buildRules = (
193216
);
@@ -311,11 +334,12 @@
311334
/* Begin XCBuildConfiguration section */
312335
559B23ED1D7EBDA300937AB3 /* Debug */ = {
313336
isa = XCBuildConfiguration;
337+
baseConfigurationReference = 55BCFFF71D801362000EDB05 /* config.xcconfig */;
314338
buildSettings = {
315339
ALWAYS_SEARCH_USER_PATHS = NO;
316340
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
317341
CLANG_ANALYZER_NONNULL = YES;
318-
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
342+
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
319343
CLANG_CXX_LIBRARY = "libc++";
320344
CLANG_ENABLE_MODULES = YES;
321345
CLANG_ENABLE_OBJC_ARC = YES;
@@ -345,7 +369,6 @@
345369
DEBUG_INFORMATION_FORMAT = dwarf;
346370
ENABLE_STRICT_OBJC_MSGSEND = YES;
347371
ENABLE_TESTABILITY = YES;
348-
GCC_C_LANGUAGE_STANDARD = gnu99;
349372
GCC_DYNAMIC_NO_PIC = NO;
350373
GCC_NO_COMMON_BLOCKS = YES;
351374
GCC_OPTIMIZATION_LEVEL = 0;
@@ -359,7 +382,7 @@
359382
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
360383
GCC_WARN_UNUSED_FUNCTION = YES;
361384
GCC_WARN_UNUSED_VARIABLE = YES;
362-
MACOSX_DEPLOYMENT_TARGET = 10.11;
385+
MACOSX_DEPLOYMENT_TARGET = 13.0;
363386
MTL_ENABLE_DEBUG_INFO = YES;
364387
ONLY_ACTIVE_ARCH = YES;
365388
SDKROOT = macosx;
@@ -368,11 +391,12 @@
368391
};
369392
559B23EE1D7EBDA300937AB3 /* Release */ = {
370393
isa = XCBuildConfiguration;
394+
baseConfigurationReference = 55BCFFF71D801362000EDB05 /* config.xcconfig */;
371395
buildSettings = {
372396
ALWAYS_SEARCH_USER_PATHS = NO;
373397
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
374398
CLANG_ANALYZER_NONNULL = YES;
375-
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
399+
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
376400
CLANG_CXX_LIBRARY = "libc++";
377401
CLANG_ENABLE_MODULES = YES;
378402
CLANG_ENABLE_OBJC_ARC = YES;
@@ -402,15 +426,14 @@
402426
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
403427
ENABLE_NS_ASSERTIONS = NO;
404428
ENABLE_STRICT_OBJC_MSGSEND = YES;
405-
GCC_C_LANGUAGE_STANDARD = gnu99;
406429
GCC_NO_COMMON_BLOCKS = YES;
407430
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
408431
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
409432
GCC_WARN_UNDECLARED_SELECTOR = YES;
410433
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
411434
GCC_WARN_UNUSED_FUNCTION = YES;
412435
GCC_WARN_UNUSED_VARIABLE = YES;
413-
MACOSX_DEPLOYMENT_TARGET = 10.11;
436+
MACOSX_DEPLOYMENT_TARGET = 13.0;
414437
MTL_ENABLE_DEBUG_INFO = NO;
415438
SDKROOT = macosx;
416439
};
@@ -469,7 +492,6 @@
469492
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
470493
INFOPLIST_FILE = "clang-format/Info.plist";
471494
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
472-
MACOSX_DEPLOYMENT_TARGET = 10.11;
473495
MARKETING_VERSION = 1.2.1;
474496
OTHER_CPLUSPLUSFLAGS = (
475497
"--system-header-prefix=$(LLVM_INCLUDE_DIR)",
@@ -514,7 +536,6 @@
514536
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
515537
INFOPLIST_FILE = "clang-format/Info.plist";
516538
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
517-
MACOSX_DEPLOYMENT_TARGET = 10.11;
518539
MARKETING_VERSION = 1.2.1;
519540
OTHER_CPLUSPLUSFLAGS = (
520541
"--system-header-prefix=$(LLVM_INCLUDE_DIR)",

XcodeClangFormat.xcodeproj/xcshareddata/xcschemes/XcodeClangFormat.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1140"
3+
LastUpgradeVersion = "1430"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

XcodeClangFormat.xcodeproj/xcshareddata/xcschemes/clang-format.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1140"
3+
LastUpgradeVersion = "1430"
44
wasCreatedForAppExtension = "YES"
55
version = "1.3">
66
<BuildAction

XcodeClangFormat/AppDelegate.m

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,17 @@ - (void)applicationWillFinishLaunching:(NSNotification*)notification {
2626
}
2727

2828
if ([style isEqualToString:@"custom"]) {
29-
self.customStyle.state = NSOnState;
29+
self.customStyle.state = NSControlStateValueOn;
3030
} else if ([style isEqualToString:@"google"]) {
31-
self.googleStyle.state = NSOnState;
31+
self.googleStyle.state = NSControlStateValueOn;
3232
} else if ([style isEqualToString:@"chromium"]) {
33-
self.chromiumStyle.state = NSOnState;
33+
self.chromiumStyle.state = NSControlStateValueOn;
3434
} else if ([style isEqualToString:@"mozilla"]) {
35-
self.mozillaStyle.state = NSOnState;
35+
self.mozillaStyle.state = NSControlStateValueOn;
3636
} else if ([style isEqualToString:@"webkit"]) {
37-
self.webkitStyle.state = NSOnState;
37+
self.webkitStyle.state = NSControlStateValueOn;
3838
} else {
39-
self.llvmStyle.state = NSOnState;
39+
self.llvmStyle.state = NSControlStateValueOn;
4040
}
4141

4242
NSData* bookmark = [defaults dataForKey:@"file"];
@@ -65,7 +65,7 @@ - (void)applicationWillFinishLaunching:(NSNotification*)notification {
6565
self.secondaryPathControl.URL = url;
6666
} else {
6767
// Remove the bookmark value from the storage
68-
[defaults setNilValueForKey:@"regularBookmark"];
68+
[defaults removeObjectForKey:@"regularBookmark"];
6969
}
7070
[defaults synchronize];
7171
}
@@ -149,7 +149,7 @@ - (BOOL)selectURL:(NSURL*)url {
149149
} else {
150150
self.primaryPathControl.URL = url;
151151
self.secondaryPathControl.URL = url;
152-
self.customStyle.state = NSOnState;
152+
self.customStyle.state = NSControlStateValueOn;
153153

154154
[defaults setValue:@"custom" forKey:@"style"];
155155
[defaults setObject:bookmark forKey:@"file"];

clang-format/ClangFormatCommand.mm

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#import "ClangFormatCommand.h"
22

33
#import <AppKit/AppKit.h>
4+
#import <UniformTypeIdentifiers/UniformTypeIdentifiers.h>
45

56
#include "ClangFormat.h"
67

@@ -17,8 +18,8 @@ void updateOffsets(std::vector<size_t>& offsets, NSMutableArray<NSString*>* line
1718
}
1819

1920
clang::format::FormatStyle::LanguageKind getLanguageKind(XCSourceTextBuffer* buffer) {
20-
CFStringRef uti = (__bridge CFStringRef)buffer.contentUTI;
21-
if (UTTypeEqual(uti, kUTTypeCHeader)) {
21+
NSString *uti = buffer.contentUTI;
22+
if ([UTTypeCHeader.identifier isEqualToString:uti]) {
2223
// C header files could also be Objective-C. We attempt to detect typical Objective-C keywords.
2324
for (NSString* line in buffer.lines) {
2425
if ([line hasPrefix:@"#import"] || [line hasPrefix:@"@interface"] || [line hasPrefix:@"@protocol"] ||
@@ -27,15 +28,15 @@ void updateOffsets(std::vector<size_t>& offsets, NSMutableArray<NSString*>* line
2728
}
2829
}
2930
}
30-
if (UTTypeEqual(uti, kUTTypeCPlusPlusHeader) || UTTypeEqual(uti, kUTTypeCPlusPlusSource) ||
31-
UTTypeEqual(uti, kUTTypeCHeader) || UTTypeEqual(uti, kUTTypeCSource)) {
31+
if ([UTTypeCPlusPlusHeader.identifier isEqualToString:uti] ||
32+
[UTTypeCPlusPlusSource.identifier isEqualToString:uti] ||
33+
[UTTypeCHeader.identifier isEqualToString:uti] ||
34+
[UTTypeCSource.identifier isEqualToString:uti]) {
3235
return clang::format::FormatStyle::LK_Cpp;
33-
} else if (UTTypeEqual(uti, kUTTypeObjectiveCSource) ||
34-
UTTypeEqual(uti, kUTTypeObjectiveCPlusPlusSource)) {
36+
} else if ([UTTypeObjectiveCSource.identifier isEqualToString:uti] ||
37+
[UTTypeObjectiveCPlusPlusSource.identifier isEqualToString:uti]) {
3538
return clang::format::FormatStyle::LK_ObjC;
36-
} else if (UTTypeEqual(uti, kUTTypeJavaSource)) {
37-
return clang::format::FormatStyle::LK_Java;
38-
} else if (UTTypeEqual(uti, kUTTypeJavaScript)) {
39+
} else if ([UTTypeJavaScript.identifier isEqualToString:uti]) {
3940
return clang::format::FormatStyle::LK_JavaScript;
4041
}
4142

@@ -202,7 +203,7 @@ - (void)performCommandWithInvocation:(XCSourceEditorCommandInvocation*)invocatio
202203
// Calculated replacements and apply them to the input buffer.
203204
const llvm::StringRef filename("<stdin>");
204205
clang::format::FormattingAttemptStatus status;
205-
auto replaces = clang::format::reformat(format.GetLanguageStyle(language).getValueOr(format), code, ranges, filename, &status);
206+
auto replaces = clang::format::reformat(*format.GetLanguageStyle(language), code, ranges, filename, &status);
206207

207208
if (!status.FormatComplete) {
208209
// We could not apply the calculated replacements.

configure

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,29 @@ set -e
44
set -o pipefail
55
set -u
66

7-
LLVM_VERSION=10.0.0
8-
LLVM_HASH=70a7d5ed3bb16a5b5310ea4bfe95a74894022a43abb96d28ef8e30ab1f41d47a
7+
LLVM_VERSION=15.0.0
8+
9+
function llvmHash() {
10+
arch=$1
11+
if [ "$arch" = "arm64" ]; then
12+
echo "76fbc61512e0d8002e2a127d932d02bc49722fecca4ebf71ec6230e3aff65356"
13+
else
14+
echo "21f964fe2ff70847d704cac98fa4dd19bd2bd5b126c9a9bca3bad9855e4a413e"
15+
fi
16+
}
17+
18+
function llvmURL() {
19+
arch=$1
20+
if [ "$arch" = "arm64" ]; then
21+
echo "https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang+llvm-${LLVM_VERSION}-${MAC_OS_ARCH}-apple-darwin21.0.tar.xz"
22+
else
23+
echo "https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang+llvm-${LLVM_VERSION}-${MAC_OS_ARCH}-apple-darwin.tar.xz"
24+
fi
25+
}
26+
27+
#architecture should be passed as parameter or script will use host Mac architecture
28+
MAC_OS_ARCH=${1:-$(uname -m)}
29+
LLVM_HASH=$(llvmHash $MAC_OS_ARCH)
930
LLVM_CONFIG=${LLVM_CONFIG:-llvm-config}
1031

1132
command -v "${LLVM_CONFIG}" >/dev/null 2>&1 || {
@@ -14,7 +35,7 @@ command -v "${LLVM_CONFIG}" >/dev/null 2>&1 || {
1435
mkdir -p "deps"
1536
FILE="deps/clang-${LLVM_VERSION}.tar.xz"
1637
if [ ! -f "${FILE}" ]; then
17-
URL="https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin.tar.xz"
38+
URL=$(llvmURL $MAC_OS_ARCH)
1839
echo "Downloading ${URL}..."
1940
curl --retry 3 -# -S -L "${URL}" -o "${FILE}.tmp" && mv "${FILE}.tmp" "${FILE}"
2041
fi
@@ -38,6 +59,7 @@ echo "// Do not modify this file. Instead, rerun ./configure" > config.xcconfig
3859
echo "LLVM_LIBDIR=$(${LLVM_CONFIG} --libdir)" >> config.xcconfig
3960
echo "LLVM_INCLUDE_DIR=$(${LLVM_CONFIG} --includedir)" >> config.xcconfig
4061
echo "LLVM_CXXFLAGS=$(${LLVM_CONFIG} --cxxflags)" >> config.xcconfig
62+
echo "ARCHS=$MAC_OS_ARCH" >> config.xcconfig
4163

4264
echo "Wrote config.xcconfig."
4365

0 commit comments

Comments
 (0)