30 Commits

Author SHA1 Message Date
Christian Tietze 6148d1b3d4 re-import XCFramework to make xcode shut up about file not being found 2023-10-17 16:43:58 +02:00
Christian Tietze 27d2f38b6a change lib paths to produce libgit2.a for both simulator and device 2023-10-17 16:43:58 +02:00
Christian Tietze f04fe39df5 combine fat binaries for simulator with XCFramework for sim + iphone 2023-10-17 16:43:58 +02:00
Christian Tietze c2e903a521 Revert "emit .xcframework for iOS instead of fat binary"
abec246c334ee7e201077de5af98275abd300074
2023-10-17 16:43:58 +02:00
Christian Tietze 8a8eef6e54 use CMAKE_OSX_DEPLOYMENT_TARGET setting 2023-10-17 16:43:58 +02:00
Christian Tietze 4cee705dd9 fix IPHONEOS_DEPLOYMENT_TARGET 2023-10-17 16:43:58 +02:00
Christian Tietze 77ae788bf6 fix libgit2-ios framework search path 2023-10-17 16:43:58 +02:00
Christian Tietze 158ba52f3d try removing libgit2-mac.a references in the OSX target 2023-10-17 16:43:58 +02:00
Christian Tietze 782a1fad2f require Xcode 14+ to simplify the build script for Mac 2023-10-17 16:43:58 +02:00
Christian Tietze 386a21f46c remove arm64e from macOS 2023-10-17 16:43:58 +02:00
Christian Tietze e77e3e17db statically link libgit-mac.a 2023-10-17 16:43:58 +02:00
Christian Tietze 3ce0d32a3b update homebrew path discovery 2023-10-17 16:43:58 +02:00
Christian Tietze 2adf4e1d35 add IOS_DEPLOYMENT_TARGET 2023-10-17 16:43:58 +02:00
Christian Tietze b0e94f89fe use Xcode 15's lowest iOS deployment target (12) 2023-10-17 16:43:58 +02:00
Christian Tietze 52b602674b re-wire SwifGit2-iOS to use XCFramework 2023-10-17 16:43:58 +02:00
Christian Tietze c7f4a14ae4 emit .xcframework for iOS instead of fat binary
Avoids overlapping architectures for ARM Simulator and ARM iOS
2023-10-17 16:43:58 +02:00
Christian Tietze 775b054be0 expand build matrix for all simulator platforms 2023-10-17 16:43:58 +02:00
Christian Tietze 5b8f53263e update iOS build script
- ignore tests (`system` calls are not supported on iOS anymore)
- use built-in regex instead of looking for PCRE (new to libgit2)
- drop i386 simulator architecture
2023-10-17 16:43:58 +02:00
Christian Tietze 4949d68379 inline build_all_archs function to remove indirection 2023-10-17 16:43:58 +02:00
Christian Tietze c6d8fa3b07 bump libgit2 to v1.7.1 2023-10-17 16:43:58 +02:00
Christian Tietze 0c79b59fb0 fix libgit2 url 2023-10-17 16:43:58 +02:00
Christian Tietze f69eee9b9b replace libgit2-OSX target with inline build phase 2023-10-17 16:43:58 +02:00
Christian Tietze 9e90f7c3ba reference build scripts in Xcode project for editing 2023-10-17 16:43:58 +02:00
Christian Tietze 71cbc53e75 bump macOS deployment target in build script 2023-10-17 16:43:58 +02:00
Christian Tietze 6058febb36 update Spec namespace which nowadays starts statically 2023-10-17 16:43:58 +02:00
Christian Tietze 39aca8e650 silence script running build phase warnings 2023-10-17 16:43:58 +02:00
Christian Tietze 1e7c415fd2 update Nimble/Quick/ZipArchive 2023-10-17 16:43:58 +02:00
Christian Tietze c181172606 bump deployment target for Xcode 14 2023-10-17 16:43:58 +02:00
Christian Tietze a7653667f4 use /opt/homebrew 2023-10-17 16:43:58 +02:00
Christian Tietze 3bbff975c0 use ARM homebrew paths 2023-10-17 16:43:58 +02:00
21 changed files with 224 additions and 203 deletions
+2
View File
@@ -19,3 +19,5 @@
[submodule "External/openssl"]
path = External/openssl
url = https://github.com/openssl/openssl.git
[submodule "libgit2"]
url = https://github.com/libgit2/libgit2.git
+2 -2
View File
@@ -1,4 +1,4 @@
github "jspahrsummers/xcconfigs" ~> 1.1
github "Quick/Quick" ~> 2.0
github "Quick/Nimble" ~> 8.0
github "Quick/Quick" ~> 7.0
github "Quick/Nimble" ~> 12.0
github "ZipArchive/ZipArchive" ~> 2.0
+3 -3
View File
@@ -1,4 +1,4 @@
github "Quick/Nimble" "v8.1.2"
github "Quick/Quick" "v2.2.1"
github "ZipArchive/ZipArchive" "v2.2.3"
github "Quick/Nimble" "v12.3.0"
github "Quick/Quick" "v7.3.0"
github "ZipArchive/ZipArchive" "2.5.5"
github "jspahrsummers/xcconfigs" "1.1"
+1 -1
View File
@@ -1 +1 @@
/usr/local/opt/openssl/lib/libcrypto.a
/opt/homebrew/opt/openssl/lib/libcrypto.a
+1 -1
View File
@@ -1 +1 @@
/usr/local/opt/openssl/lib/libssl.a
/opt/homebrew/opt/openssl/lib/libssl.a
+71 -95
View File
@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objectVersion = 54;
objects = {
/* Begin PBXAggregateTarget section */
@@ -28,6 +28,8 @@
25499D325997CAB9BEFFCA4D /* CommitIterator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25499A996CA7BD416620A397 /* CommitIterator.swift */; };
3F5181B1258FE7D10048F1EF /* StatusOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F5181B0258FE7D10048F1EF /* StatusOptions.swift */; };
3F5181B2258FE7D10048F1EF /* StatusOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F5181B0258FE7D10048F1EF /* StatusOptions.swift */; };
50A6835E2ADE7C2B00FDB557 /* libgit2.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50A6835C2ADE7C2300FDB557 /* libgit2.xcframework */; };
50A6835F2ADE7C2B00FDB557 /* libgit2.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 50A6835C2ADE7C2300FDB557 /* libgit2.xcframework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
621E66A01C72958800A0F352 /* OID.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE70B3E41A1ACB1A002C3F4E /* OID.swift */; };
621E66A11C72958800A0F352 /* Remotes.swift in Sources */ = {isa = PBXBuildFile; fileRef = BECB5F6D1A57284700999413 /* Remotes.swift */; };
621E66A21C72958800A0F352 /* CheckoutStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE276B281ACCD3CF00D6DAD7 /* CheckoutStrategy.swift */; };
@@ -125,20 +127,30 @@
remoteGlobalIDString = BEB31F221A0D6F7A00F525B9;
remoteInfo = "SwiftGit2-OSX";
};
BEB31F941A0E56E200F525B9 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BEB31F1A1A0D6F7A00F525B9 /* Project object */;
proxyType = 1;
remoteGlobalIDString = BEB31F8E1A0E563900F525B9;
remoteInfo = libgit2;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
50A682E52ADBF65F00FDB557 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
50A6835F2ADE7C2B00FDB557 /* libgit2.xcframework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
232861421F4A3A2E00276D65 /* Diffs.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Diffs.swift; sourceTree = "<group>"; };
237731C61F46542B0020A3FE /* repository-with-status.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = "repository-with-status.zip"; sourceTree = "<group>"; };
25499A996CA7BD416620A397 /* CommitIterator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommitIterator.swift; sourceTree = "<group>"; };
3F5181B0258FE7D10048F1EF /* StatusOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusOptions.swift; sourceTree = "<group>"; };
50A682D82AD9901000FDB557 /* script */ = {isa = PBXFileReference; lastKnownFileType = folder; path = script; sourceTree = "<group>"; };
50A6835A2ADD33CE00FDB557 /* libgit2-mac.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libgit2-mac.a"; path = "External/libgit2-mac/libgit2-mac.a"; sourceTree = "<group>"; };
50A6835C2ADE7C2300FDB557 /* libgit2.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgit2.xcframework; path = "External/libgit2-ios/libgit2.xcframework"; sourceTree = "<group>"; };
621E66B41C72958800A0F352 /* SwiftGit2.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftGit2.framework; sourceTree = BUILT_PRODUCTS_DIR; };
621E66CE1C72958D00A0F352 /* SwiftGit2-iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SwiftGit2-iOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
621E66E11C729CE500A0F352 /* libgit2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgit2.a; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -186,7 +198,6 @@
BEB31F571A0D75EE00F525B9 /* macOS-StaticLibrary.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "macOS-StaticLibrary.xcconfig"; sourceTree = "<group>"; };
BEB31F581A0D75EE00F525B9 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
BEB31F6C1A0D78F300F525B9 /* Repository.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Repository.swift; sourceTree = "<group>"; };
BEB31F8F1A0E563900F525B9 /* libgit2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgit2.a; sourceTree = BUILT_PRODUCTS_DIR; };
BEB31F9D1A0E595100F525B9 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; };
BEB31F9F1A0E595600F525B9 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
BECB5F691A56F19900999413 /* References.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = References.swift; sourceTree = "<group>"; };
@@ -205,6 +216,7 @@
buildActionMask = 2147483647;
files = (
621E67001C72A60B00A0F352 /* libz.tbd in Frameworks */,
50A6835E2ADE7C2B00FDB557 /* libgit2.xcframework in Frameworks */,
621E66FE1C72A5FF00A0F352 /* libiconv.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -243,6 +255,15 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
50A682D92AD994C500FDB557 /* Frameworks */ = {
isa = PBXGroup;
children = (
50A6835C2ADE7C2300FDB557 /* libgit2.xcframework */,
50A6835A2ADD33CE00FDB557 /* libgit2-mac.a */,
);
name = Frameworks;
sourceTree = "<group>";
};
621E66D41C72965C00A0F352 /* Mac */ = {
isa = PBXGroup;
children = (
@@ -276,12 +297,14 @@
BEB31F191A0D6F7A00F525B9 = {
isa = PBXGroup;
children = (
50A682D82AD9901000FDB557 /* script */,
BEB31F251A0D6F7A00F525B9 /* SwiftGit2 */,
BEB31F261A0D6F7A00F525B9 /* Supporting Files */,
BEB31F321A0D6F7A00F525B9 /* SwiftGit2Tests */,
BEB31FA11A0E63C100F525B9 /* Libraries */,
BEB31F411A0D75EE00F525B9 /* Configuration */,
BEB31F241A0D6F7A00F525B9 /* Products */,
50A682D92AD994C500FDB557 /* Frameworks */,
);
sourceTree = "<group>";
usesTabs = 1;
@@ -291,7 +314,6 @@
children = (
BEB31F231A0D6F7A00F525B9 /* SwiftGit2.framework */,
BEB31F2E1A0D6F7A00F525B9 /* SwiftGit2-OSXTests.xctest */,
BEB31F8F1A0E563900F525B9 /* libgit2.a */,
621E66B41C72958800A0F352 /* SwiftGit2.framework */,
621E66CE1C72958D00A0F352 /* SwiftGit2-iOSTests.xctest */,
621E66E11C729CE500A0F352 /* libgit2.a */,
@@ -463,6 +485,7 @@
621E669F1C72958800A0F352 /* Sources */,
621E66AA1C72958800A0F352 /* Frameworks */,
621E66AE1C72958800A0F352 /* Headers */,
50A682E52ADBF65F00FDB557 /* Embed Frameworks */,
);
buildRules = (
);
@@ -543,6 +566,7 @@
isa = PBXNativeTarget;
buildConfigurationList = BEB31F391A0D6F7A00F525B9 /* Build configuration list for PBXNativeTarget "SwiftGit2-OSX" */;
buildPhases = (
50A682DD2AD9959500FDB557 /* Update libgit2 */,
BEB31F1E1A0D6F7A00F525B9 /* Sources */,
BEB31F1F1A0D6F7A00F525B9 /* Frameworks */,
BEB31F201A0D6F7A00F525B9 /* Headers */,
@@ -550,7 +574,6 @@
buildRules = (
);
dependencies = (
BEB31F951A0E56E200F525B9 /* PBXTargetDependency */,
);
name = "SwiftGit2-OSX";
productName = "SwiftGit2-OSX";
@@ -575,21 +598,6 @@
productReference = BEB31F2E1A0D6F7A00F525B9 /* SwiftGit2-OSXTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
BEB31F8E1A0E563900F525B9 /* libgit2-OSX */ = {
isa = PBXNativeTarget;
buildConfigurationList = BEB31F901A0E563900F525B9 /* Build configuration list for PBXNativeTarget "libgit2-OSX" */;
buildPhases = (
BEB31F931A0E567000F525B9 /* ShellScript */,
);
buildRules = (
);
dependencies = (
);
name = "libgit2-OSX";
productName = libgit2;
productReference = BEB31F8F1A0E563900F525B9 /* libgit2.a */;
productType = "com.apple.product-type.library.static";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@@ -614,9 +622,6 @@
CreatedOnToolsVersion = 6.1;
LastSwiftMigration = 1020;
};
BEB31F8E1A0E563900F525B9 = {
CreatedOnToolsVersion = 6.1;
};
C9CE0DD21E0710BD0053205D = {
CreatedOnToolsVersion = 8.2;
ProvisioningStyle = Automatic;
@@ -640,7 +645,6 @@
BEB31F2D1A0D6F7A00F525B9 /* SwiftGit2-OSXTests */,
621E66611C72958800A0F352 /* SwiftGit2-iOS */,
621E66B61C72958D00A0F352 /* SwiftGit2-iOSTests */,
BEB31F8E1A0E563900F525B9 /* libgit2-OSX */,
621E66DC1C729CE500A0F352 /* libgit2-iOS */,
621E66E71C729EB800A0F352 /* OpenSSL-iOS */,
621E66ED1C729EBB00A0F352 /* libssh2-iOS */,
@@ -675,14 +679,36 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
50A682DD2AD9959500FDB557 /* Update libgit2 */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Update libgit2";
outputFileListPaths = (
);
outputPaths = (
"$(SRCROOT)/External/libgit2-mac/libgit2-mac.a",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "script/update_libgit2\n";
};
621E66DD1C729CE500A0F352 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
outputPaths = (
"$(SRCROOT)/External/libgit2-ios/libgit2.xcframework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@@ -690,6 +716,7 @@
};
621E66E81C729EB800A0F352 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
@@ -703,6 +730,7 @@
};
621E66EE1C729EBB00A0F352 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
@@ -712,23 +740,11 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = script/update_libssh2_ios;
};
BEB31F931A0E567000F525B9 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "script/update_libgit2\n";
shellScript = "script/update_libssh2_ios\n";
};
C9CE0DD61E0710C20053205D /* Lint Sources */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
@@ -739,7 +755,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "if which swiftlint >/dev/null; then\n swiftlint --lenient\nelse\n echo \"warning: SwiftLint is not installed\"\nfi";
shellScript = "if which swiftlint >/dev/null; then\n swiftlint --lenient\nelse\n echo \"warning: SwiftLint is not installed\"\nfi\n";
};
/* End PBXShellScriptBuildPhase section */
@@ -844,11 +860,6 @@
target = BEB31F221A0D6F7A00F525B9 /* SwiftGit2-OSX */;
targetProxy = BEB31F301A0D6F7A00F525B9 /* PBXContainerItemProxy */;
};
BEB31F951A0E56E200F525B9 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = BEB31F8E1A0E563900F525B9 /* libgit2-OSX */;
targetProxy = BEB31F941A0E56E200F525B9 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
@@ -856,6 +867,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = BEB31F501A0D75EE00F525B9 /* iOS-Framework.xcconfig */;
buildSettings = {
FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/External/libgit2-ios";
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/External/libgit2/include",
"$(inherited)",
@@ -868,9 +880,6 @@
"$(inherited)",
);
OTHER_LDFLAGS = (
"-force_load",
"External/libgit2-ios/libgit2-ios.a",
"-lgit2-ios",
"-lssl",
"-lcrypto",
"-lssh2-ios",
@@ -885,6 +894,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = BEB31F501A0D75EE00F525B9 /* iOS-Framework.xcconfig */;
buildSettings = {
FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/External/libgit2-ios";
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/External/libgit2/include",
"$(inherited)",
@@ -897,9 +907,6 @@
"$(inherited)",
);
OTHER_LDFLAGS = (
"-force_load",
"External/libgit2-ios/libgit2-ios.a",
"-lgit2-ios",
"-lssl",
"-lcrypto",
"-lssh2-ios",
@@ -989,8 +996,8 @@
INSTALL_GROUP = "";
INSTALL_MODE_FLAG = "";
INSTALL_OWNER = "";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MACOSX_DEPLOYMENT_TARGET = 10.9;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MACOSX_DEPLOYMENT_TARGET = 10.13;
SWIFT_VERSION = 5.0;
};
name = Debug;
@@ -1005,8 +1012,8 @@
INSTALL_GROUP = "";
INSTALL_MODE_FLAG = "";
INSTALL_OWNER = "";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MACOSX_DEPLOYMENT_TARGET = 10.9;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MACOSX_DEPLOYMENT_TARGET = 10.13;
SWIFT_VERSION = 5.0;
};
name = Release;
@@ -1024,11 +1031,10 @@
"External/libgit2-mac",
External/,
"$(inherited)",
"$(PROJECT_DIR)/External/libgit2-mac",
);
OTHER_LDFLAGS = (
"-force_load",
"External/libgit2-mac/libgit2-mac.a",
/usr/local/lib/libssh2.a,
/opt/homebrew/lib/libssh2.a,
"-lgit2-mac",
"-lcrypto",
"-lssl",
@@ -1054,11 +1060,10 @@
"External/libgit2-mac",
External/,
"$(inherited)",
"$(PROJECT_DIR)/External/libgit2-mac",
);
OTHER_LDFLAGS = (
"-force_load",
"External/libgit2-mac/libgit2-mac.a",
/usr/local/lib/libssh2.a,
/opt/homebrew/lib/libssh2.a,
"-lgit2-mac",
"-lcrypto",
"-lssl",
@@ -1076,7 +1081,6 @@
baseConfigurationReference = BEB31F531A0D75EE00F525B9 /* macOS-Application.xcconfig */;
buildSettings = {
INFOPLIST_FILE = SwiftGit2Tests/Info.plist;
MACOSX_DEPLOYMENT_TARGET = 10.10;
PRODUCT_BUNDLE_IDENTIFIER = "org.libgit2.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
};
@@ -1087,30 +1091,11 @@
baseConfigurationReference = BEB31F531A0D75EE00F525B9 /* macOS-Application.xcconfig */;
buildSettings = {
INFOPLIST_FILE = SwiftGit2Tests/Info.plist;
MACOSX_DEPLOYMENT_TARGET = 10.10;
PRODUCT_BUNDLE_IDENTIFIER = "org.libgit2.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
BEB31F911A0E563900F525B9 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = BEB31F571A0D75EE00F525B9 /* macOS-StaticLibrary.xcconfig */;
buildSettings = {
GCC_TREAT_WARNINGS_AS_ERRORS = NO;
PRODUCT_NAME = git2;
};
name = Debug;
};
BEB31F921A0E563900F525B9 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = BEB31F571A0D75EE00F525B9 /* macOS-StaticLibrary.xcconfig */;
buildSettings = {
GCC_TREAT_WARNINGS_AS_ERRORS = NO;
PRODUCT_NAME = git2;
};
name = Release;
};
C9CE0DD41E0710BD0053205D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -1200,15 +1185,6 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
BEB31F901A0E563900F525B9 /* Build configuration list for PBXNativeTarget "libgit2-OSX" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BEB31F911A0E563900F525B9 /* Debug */,
BEB31F921A0E563900F525B9 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C9CE0DD31E0710BD0053205D /* Build configuration list for PBXAggregateTarget "SwiftLint" */ = {
isa = XCConfigurationList;
buildConfigurations = (
+1 -1
View File
@@ -9,7 +9,7 @@
import Quick
class FixturesSpec: QuickSpec {
override func spec() {
override class func spec() {
beforeSuite {
Fixtures.sharedInstance.setUp()
}
+1 -1
View File
@@ -11,7 +11,7 @@ import Nimble
import Quick
class OIDSpec: QuickSpec {
override func spec() {
override class func spec() {
describe("OID(string:)") {
it("should be nil if string is too short") {
expect(OID(string: "123456789012345678901234567890123456789")).to(beNil())
+6 -6
View File
@@ -26,7 +26,7 @@ private extension Repository {
}
class SignatureSpec: FixturesSpec {
override func spec() {
override class func spec() {
describe("Signature(signature)") {
it("should initialize its properties") {
let repo = Fixtures.simpleRepository
@@ -88,7 +88,7 @@ class SignatureSpec: FixturesSpec {
}
class CommitSpec: QuickSpec {
override func spec() {
override class func spec() {
describe("Commit(pointer)") {
it("should initialize its properties") {
let repo = Fixtures.simpleRepository
@@ -169,7 +169,7 @@ class CommitSpec: QuickSpec {
}
class TreeEntrySpec: QuickSpec {
override func spec() {
override class func spec() {
describe("Tree.Entry(attributes:object:name:)") {
it("should set its properties") {
let attributes = Int32(GIT_FILEMODE_BLOB.rawValue)
@@ -230,7 +230,7 @@ class TreeEntrySpec: QuickSpec {
}
class TreeSpec: QuickSpec {
override func spec() {
override class func spec() {
describe("Tree(pointer)") {
it("should initialize its properties") {
let repo = Fixtures.simpleRepository
@@ -281,7 +281,7 @@ class TreeSpec: QuickSpec {
}
class BlobSpec: QuickSpec {
override func spec() {
override class func spec() {
describe("Blob(pointer)") {
it("should initialize its properties") {
let repo = Fixtures.simpleRepository
@@ -330,7 +330,7 @@ class BlobSpec: QuickSpec {
}
class TagSpec: QuickSpec {
override func spec() {
override class func spec() {
describe("Tag(pointer)") {
it("should set its properties") {
let repo = Fixtures.simpleRepository
+3 -3
View File
@@ -25,7 +25,7 @@ private extension Repository {
}
class ReferenceSpec: FixturesSpec {
override func spec() {
override class func spec() {
describe("Reference(pointer)") {
it("should initialize its properties") {
let repo = Fixtures.simpleRepository
@@ -64,7 +64,7 @@ class ReferenceSpec: FixturesSpec {
}
class BranchSpec: QuickSpec {
override func spec() {
override class func spec() {
describe("Branch(pointer)") {
it("should initialize its properties") {
let repo = Fixtures.mantleRepository
@@ -119,7 +119,7 @@ class BranchSpec: QuickSpec {
}
class TagReferenceSpec: QuickSpec {
override func spec() {
override class func spec() {
describe("TagReference(pointer)") {
it("should work with an annotated tag") {
let repo = Fixtures.simpleRepository
+1 -1
View File
@@ -25,7 +25,7 @@ private extension Repository {
}
class RemoteSpec: FixturesSpec {
override func spec() {
override class func spec() {
describe("Remote(pointer)") {
it("should initialize its properties") {
let repo = Fixtures.mantleRepository
+2 -2
View File
@@ -13,7 +13,7 @@ import Quick
// swiftlint:disable cyclomatic_complexity
class RepositorySpec: FixturesSpec {
override func spec() {
override class func spec() {
describe("Repository.Type.at(_:)") {
it("should work if the repo exists") {
let repo = Fixtures.simpleRepository
@@ -980,7 +980,7 @@ class RepositorySpec: FixturesSpec {
}
}
func temporaryURL(forPurpose purpose: String) -> URL {
static func temporaryURL(forPurpose purpose: String) -> URL {
let globallyUniqueString = ProcessInfo.processInfo.globallyUniqueString
let path = "\(NSTemporaryDirectory())\(globallyUniqueString)_\(purpose)"
return URL(fileURLWithPath: path)
+1 -1
View File
@@ -82,7 +82,7 @@ check_deps ()
done
brew_prefix=`brew --prefix`
expected_prefix=/usr/local
expected_prefix=/opt/homebrew
if [ "$brew_prefix" != "$expected_prefix" ]
then
+26 -17
View File
@@ -1,15 +1,13 @@
#!/bin/bash
# augment path to help it find cmake via homebrew
PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
SCRIPT_DIR=$(dirname "$0")
source "${SCRIPT_DIR}/xcode_functions.sh"
function setup_build_environment ()
{
# augment path to help it find cmake installed in /usr/local/bin,
# e.g. via brew. Xcode's Run Script phase doesn't seem to honor
# ~/.MacOSX/environment.plist
PATH="/usr/local/bin:/opt/boxen/homebrew/bin:$PATH"
pushd "$SCRIPT_DIR/.." > /dev/null
ROOT_PATH="$PWD"
popd > /dev/null
@@ -30,7 +28,7 @@ function setup_build_environment ()
# directly (ie not from an Xcode proj)
if [ -z "${IPHONEOS_DEPLOYMENT_TARGET}" ]
then
IPHONEOS_DEPLOYMENT_TARGET="6.0"
IPHONEOS_DEPLOYMENT_TARGET="12.0"
fi
# Determine if we can be building 64-bit binaries
@@ -39,12 +37,14 @@ function setup_build_environment ()
CAN_BUILD_64BIT="1"
fi
ARCHS="i386 armv7 armv7s"
ARCHS=""
if [ "${CAN_BUILD_64BIT}" -eq "1" ]
then
# For some stupid reason cmake needs simulator
# builds to be first
ARCHS="x86_64 ${ARCHS} arm64"
else
ARCHS="i386 ${ARCHS} armv7 armv7s"
fi
}
@@ -63,11 +63,15 @@ function build_all_archs ()
for ARCH in ${ARCHS}
do
if [ "${ARCH}" == "i386" ] || [ "${ARCH}" == "x86_64" ]
PLATFORMS=""
if [ "${ARCH}" == "i386" ] || [ "${ARCH}" == "x86_64" ] || [ "${ARCH}" == "arm64" ]
then
PLATFORM="iphonesimulator"
else
PLATFORM="iphoneos"
PLATFORMS="${PLATFORMS} iphonesimulator"
fi
if [ "${ARCH}" == "arm64" ]
then
PLATFORMS="${PLATFORMS} iphoneos"
fi
SDKVERSION=$(ios_sdk_version)
@@ -79,14 +83,19 @@ function build_all_archs ()
HOST="${ARCH}-apple-darwin"
fi
SDKNAME="${PLATFORM}${SDKVERSION}"
SDKROOT="$(sdk_path ${SDKNAME})"
echo "Building ${ARCH} for ${PLATFORMS}"
echo "Building ${LIBRARY_NAME} for ${SDKNAME} ${ARCH}"
echo "Please stand by..."
for PLATFORM in ${PLATFORMS}
do
SDKNAME="${PLATFORM}${SDKVERSION}"
SDKROOT="$(sdk_path ${SDKNAME})"
# run the per arch build command
eval $build_arch
echo "Building ${LIBRARY_NAME} for ${SDKNAME} ${ARCH} on ${PLATFORM}"
echo "Please stand by..."
# run the per arch build command
eval $build_arch
done
done
# finish the build (usually lipo)
+31 -59
View File
@@ -1,22 +1,15 @@
#!/bin/sh
#!/bin/bash
set -e
# augment path to help it find cmake installed in /usr/local/bin,
# e.g. via brew. Xcode's Run Script phase doesn't seem to honor
# ~/.MacOSX/environment.plist
PATH="/usr/local/bin:$PATH"
# augment path to help it find cmake via homebrew
PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
SCRIPT_DIR=$(dirname "$0")
source "${SCRIPT_DIR}/xcode_functions.sh"
function setup_build_environment ()
{
# augment path to help it find cmake installed in /usr/local/bin,
# e.g. via brew. Xcode's Run Script phase doesn't seem to honor
# ~/.MacOSX/environment.plist
PATH="/usr/local/bin:$PATH"
pushd "$SCRIPT_DIR/.." > /dev/null
ROOT_PATH="$PWD"
popd > /dev/null
@@ -25,60 +18,18 @@ function setup_build_environment ()
CC="${CLANG}"
CPP="${CLANG} -E"
# We need to clear this so that cmake doesn't have a conniption
MACOSX_DEPLOYMENT_TARGET=""
MACOSX_DEPLOYMENT_TARGET="10.13"
XCODE_MAJOR_VERSION=$(xcode_major_version)
XCODE_MINOR_VERSION=$(xcode_minor_version)
CAN_BUILD_ARM="0"
# Determine if we can be building for ARM Macs
if [ "${XCODE_MAJOR_VERSION}" -ge "13" ]
if [ "${XCODE_MAJOR_VERSION}" -lt "14" ]
then
CAN_BUILD_ARM="1"
elif [ "${XCODE_MAJOR_VERSION}" -eq "12" ] && [ "${XCODE_MINOR_VERSION}" -ge "2" ]
then
CAN_BUILD_ARM="1"
echo "Requires Xcode 14 or newer."
exit 1
fi
ARCHS="x86_64"
if [ "${CAN_BUILD_ARM}" -eq "1" ]
then
ARCHS="${ARCHS} arm64 arm64e"
fi
}
function build_all_archs ()
{
setup_build_environment
local setup=$1
local build_arch=$2
local finish_build=$3
# run the prepare function
eval $setup
echo "Building for ${ARCHS}"
for ARCH in ${ARCHS}
do
PLATFORM="macosx"
SDKVERSION=$(macos_sdk_version)
SDKNAME="${PLATFORM}${SDKVERSION}"
SDKROOT="$(sdk_path ${SDKNAME})"
echo "Building ${LIBRARY_NAME} for ${SDKNAME} ${ARCH}"
echo "Please stand by..."
# run the per arch build command
eval $build_arch
done
# finish the build (usually lipo)
eval $finish_build
ARCHS="x86_64 arm64"
}
function setup ()
@@ -111,13 +62,14 @@ function build_libgit2 ()
LOG="${INSTALL_PREFIX}/build-libgit2.log"
echo "$LOG"
MACOSX_DEPLOYMENT_TARGET="10.9" cmake \
cmake \
-DBUILD_SHARED_LIBS:BOOL=OFF \
-DCMAKE_PREFIX_PATH:PATH="${ROOT_PATH}/External/libssh2-mac/bin/${SDKNAME}-${ARCH}.sdk" \
-DCMAKE_INSTALL_PREFIX:PATH="${INSTALL_PREFIX}/" \
-DBUILD_CLAR:BOOL=OFF \
-DTHREADSAFE:BOOL=ON \
-DCMAKE_OSX_ARCHITECTURES:STRING="${ARCH}" \
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING="${MACOSX_DEPLOYMENT_TARGET}" \
.. >> "${LOG}" 2>&1
cmake --build . --target install >> "${LOG}" 2>&1
@@ -137,6 +89,26 @@ function fat_binary ()
popd > /dev/null
}
build_all_archs setup build_libgit2 fat_binary
setup_build_environment
setup
echo "Building for ${ARCHS}"
for ARCH in ${ARCHS}
do
PLATFORM="macosx"
SDKVERSION=$(macos_sdk_version)
SDKNAME="${PLATFORM}${SDKVERSION}"
SDKROOT="$(sdk_path ${SDKNAME})"
echo "Building ${LIBRARY_NAME} for ${SDKNAME} ${ARCH}"
echo "Please stand by..."
# run the per arch build command
build_libgit2
done
fat_binary
echo "libgit2 has been updated."
+66 -4
View File
@@ -8,7 +8,7 @@ source "${SCRIPT_DIR}/ios_build_functions.sh"
function setup ()
{
if [ "${ROOT_PATH}/External/libgit2-ios/libgit2-ios.a" -nt "${ROOT_PATH}/External/libgit2" ]
if [ "${ROOT_PATH}/External/libgit2-ios/libgit2.xcframework" -nt "${ROOT_PATH}/External/libgit2" ]
then
echo "No update needed."
exit 0
@@ -49,11 +49,14 @@ function build_libgit2 ()
-DPKG_CONFIG_USE_CMAKE_PREFIX_PATH:BOOL=ON \
-DCMAKE_INSTALL_PREFIX:PATH="${INSTALL_PREFIX}/" \
-DBUILD_CLAR:BOOL=OFF \
-DBUILD_TESTS:BOOL=OFF \
-DREGEX_BACKEND:STRING="builtin" \
-DTHREADSAFE:BOOL=ON \
-DCURL:BOOL=OFF \
-DCMAKE_C_FLAGS:STRING="-fembed-bitcode" \
"${SYS_ROOT}" \
-DCMAKE_OSX_ARCHITECTURES:STRING="${ARCH}" \
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING="${IPHONEOS_DEPLOYMENT_TARGET}" \
.. >> "${LOG}" 2>&1
cmake --build . --target install >> "${LOG}" 2>&1
@@ -64,13 +67,72 @@ function build_libgit2 ()
function fat_binary ()
{
echo "Building fat binary..."
echo "Building fat binary for simulator..."
lipo -create "${BUILT_LIB_PATHS[@]}" -output "${ROOT_PATH}/External/libgit2-ios/libgit2-ios.a"
# Collect all simulator build paths
for path in "${BUILT_LIB_PATHS[@]}"
do
case "$path" in
*libgit2-ios/iphonesimulator* )
SIMULATOR_LIB_PATHS+=("$path")
# Remember one header location (headers are the same, so overwriting doesn't matter)
base_dir=$(dirname $(dirname "${path}"))
HEADER_PATH="${base_dir}/include/git2.h"
;;
* )
# Ignore libs build for the actual phone
;;
esac
done
SIMULATOR_LIB_DIR="${ROOT_PATH}/External/libgit2-ios/iphonesimulator"
mkdir -p "${SIMULATOR_LIB_DIR}"
echo "... from ${SIMULATOR_LIB_PATHS[@]}"
lipo -create "${SIMULATOR_LIB_PATHS[@]}" -output "${SIMULATOR_LIB_DIR}/libgit2.a"
echo "Copying shared simulator header from ${HEADER_PATH}"
cp "${HEADER_PATH}" "${SIMULATOR_LIB_DIR}/libgit2.h"
echo "Building done."
}
function xcframework ()
{
echo "Building XCFramework..."
for path in "${BUILT_LIB_PATHS[@]}"
do
case "$path" in
*libgit2-ios/iphonesimulator* )
# Skip simulator library binaries
;;
* )
args+=("-library" "${path}")
base_dir=$(dirname $(dirname "${path}"))
args+=("-headers" "${base_dir}/include/git2.h")
;;
esac
done
args+=("-library" "${SIMULATOR_LIB_DIR}/libgit2.a")
args+=("-headers" "${SIMULATOR_LIB_DIR}/libgit2.h")
echo "... from ${args[@]}"
xcodebuild -create-xcframework \
"${args[@]}" \
-output "${ROOT_PATH}/External/libgit2-ios/libgit2.xcframework"
echo "Building done."
}
function combine_all_the_binaries ()
{
fat_binary
xcframework
popd > /dev/null
}
build_all_archs setup build_libgit2 fat_binary
build_all_archs setup build_libgit2 combine_all_the_binaries
+2 -2
View File
@@ -16,7 +16,7 @@ function setup ()
LIBRARY_NAME="libssh2"
}
function build_ssh2 ()
function build_ssh2 ()
{
mkdir -p "${ROOT_PATH}/External/libssh2-ios/lib" "${ROOT_PATH}/External/libssh2-ios/lib" "${ROOT_PATH}/External/libssh2-ios/src"
@@ -47,7 +47,7 @@ function fat_binary ()
lipo -create "${BUILT_LIBS[@]}" -output "${ROOT_PATH}/External/libssh2-ios/lib/libssh2-ios.a"
mkdir -p "${ROOT_PATH}/External/libssh2-ios/include/libssh2"
cp -R "${ROOT_PATH}/External/libssh2-ios/bin/iphonesimulator${SDKVERSION}-i386.sdk/include/libssh2.h" "${ROOT_PATH}/External/libssh2-ios/include/libssh2/"
cp -R "${ROOT_PATH}/External/libssh2-ios/bin/iphonesimulator${SDKVERSION}-x86_64.sdk/include/libssh2.h" "${ROOT_PATH}/External/libssh2-ios/include/libssh2/"
echo "Building done."
}