mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-26 05:18:31 -04:00
Merge pull request #606 from kiwix/feature/xcodegen-brew
XcodeGen integration
This commit is contained in:
commit
555491b614
8
.github/actions/xcbuild/action.yml
vendored
8
.github/actions/xcbuild/action.yml
vendored
@ -1,4 +1,4 @@
|
||||
name: Build with XCode
|
||||
name: Build with Xcode
|
||||
description: Run xcodebuild for Kiwix
|
||||
|
||||
inputs:
|
||||
@ -97,11 +97,9 @@ runs:
|
||||
KEYCHAIN: ${{ inputs.KEYCHAIN }}
|
||||
KEYCHAIN_PASSWORD: ${{ inputs.KEYCHAIN_PASSWORD }}
|
||||
|
||||
- name: Download CoreKiwix.xcframework
|
||||
env:
|
||||
XCF_URL: https://download.kiwix.org/release/libkiwix/libkiwix_xcframework-${{ inputs.libkiwix-version }}.tar.gz
|
||||
- name: Download dependencies
|
||||
shell: bash
|
||||
run: curl -L -o - $XCF_URL | tar -x --strip-components 2
|
||||
run: brew bundle
|
||||
|
||||
- name: Prepare Xcode
|
||||
shell: bash
|
||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -70,3 +70,6 @@ fastlane/test_output
|
||||
.DS_Store
|
||||
xcuserdata
|
||||
Libraries
|
||||
|
||||
# ignore xcode project files, they are now generated by XcodeGen
|
||||
*.xcodeproj
|
12
.pre-commit-config.yaml
Normal file
12
.pre-commit-config.yaml
Normal file
@ -0,0 +1,12 @@
|
||||
# docs: https://pre-commit.com
|
||||
default_install_hook_types: [post-merge, post-checkout, post-rewrite]
|
||||
repos:
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: xcodegen
|
||||
name: Generate project files for Xcode
|
||||
description: "Generate project file for Xcode"
|
||||
entry: xcodegen
|
||||
language: system
|
||||
always_run: true
|
||||
stages: [post-checkout, post-merge, post-rewrite]
|
9
Brewfile
Normal file
9
Brewfile
Normal file
@ -0,0 +1,9 @@
|
||||
brew "pre-commit"
|
||||
brew "xcodegen"
|
||||
brew "curl"
|
||||
|
||||
at_exit do
|
||||
system "pre-commit install"
|
||||
system "curl -L -o - https://download.kiwix.org/release/libkiwix/libkiwix_xcframework-13.0.0-1.tar.gz | tar -x --strip-components 2"
|
||||
system "xcodegen"
|
||||
end
|
145
Brewfile.lock.json
Normal file
145
Brewfile.lock.json
Normal file
@ -0,0 +1,145 @@
|
||||
{
|
||||
"entries": {
|
||||
"brew": {
|
||||
"pre-commit": {
|
||||
"version": "3.6.0",
|
||||
"bottle": {
|
||||
"rebuild": 0,
|
||||
"root_url": "https://ghcr.io/v2/homebrew/core",
|
||||
"files": {
|
||||
"arm64_sonoma": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/pre-commit/blobs/sha256:2bc88b06e4238db4b55e1af64cb7fef785ccec3b88bc8dd2c5814ebc8f55b0a1",
|
||||
"sha256": "2bc88b06e4238db4b55e1af64cb7fef785ccec3b88bc8dd2c5814ebc8f55b0a1"
|
||||
},
|
||||
"arm64_ventura": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/pre-commit/blobs/sha256:dc76862c28b49b83d7a15b484a5186cd6d20a03d60d3b0f9d3afba5d863526a7",
|
||||
"sha256": "dc76862c28b49b83d7a15b484a5186cd6d20a03d60d3b0f9d3afba5d863526a7"
|
||||
},
|
||||
"arm64_monterey": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/pre-commit/blobs/sha256:eb7abe34c1d15f3a96b258fbedcdbde6c24e89927e1b35610358db9e70204a44",
|
||||
"sha256": "eb7abe34c1d15f3a96b258fbedcdbde6c24e89927e1b35610358db9e70204a44"
|
||||
},
|
||||
"sonoma": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/pre-commit/blobs/sha256:2e285ca1bbf5f86e53240c97041e1133d286e05256c5ca9658bb86ed5087b789",
|
||||
"sha256": "2e285ca1bbf5f86e53240c97041e1133d286e05256c5ca9658bb86ed5087b789"
|
||||
},
|
||||
"ventura": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/pre-commit/blobs/sha256:07dd83234a749a5307c506a5442ff2f818084aea2d1436e11797fb493447f0ca",
|
||||
"sha256": "07dd83234a749a5307c506a5442ff2f818084aea2d1436e11797fb493447f0ca"
|
||||
},
|
||||
"monterey": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/pre-commit/blobs/sha256:2b23e12b4fc2226d97830982b103f1b5be54707c1ebd638616cf0d614b9a2dd9",
|
||||
"sha256": "2b23e12b4fc2226d97830982b103f1b5be54707c1ebd638616cf0d614b9a2dd9"
|
||||
},
|
||||
"x86_64_linux": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/pre-commit/blobs/sha256:1984c2637a432088c3d98ad10e9219afa6612387718a16cb076927ee39dc0ea5",
|
||||
"sha256": "1984c2637a432088c3d98ad10e9219afa6612387718a16cb076927ee39dc0ea5"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"xcodegen": {
|
||||
"version": "2.38.0",
|
||||
"bottle": {
|
||||
"rebuild": 0,
|
||||
"root_url": "https://ghcr.io/v2/homebrew/core",
|
||||
"files": {
|
||||
"arm64_sonoma": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/xcodegen/blobs/sha256:422fb8dfbc7e2ed59125d22b4687bb54a1ab3f0ddef044a3875b624121f9be47",
|
||||
"sha256": "422fb8dfbc7e2ed59125d22b4687bb54a1ab3f0ddef044a3875b624121f9be47"
|
||||
},
|
||||
"arm64_ventura": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/xcodegen/blobs/sha256:5b2d9dfdf8bc9912ecef48ecc4a03cfb4ba68f35f03c4ab4fc9e893b077f8796",
|
||||
"sha256": "5b2d9dfdf8bc9912ecef48ecc4a03cfb4ba68f35f03c4ab4fc9e893b077f8796"
|
||||
},
|
||||
"arm64_monterey": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/xcodegen/blobs/sha256:7a239feca86c46f78ae91d631858d957cb2e7e63ea7230b30f3d618097774bff",
|
||||
"sha256": "7a239feca86c46f78ae91d631858d957cb2e7e63ea7230b30f3d618097774bff"
|
||||
},
|
||||
"sonoma": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/xcodegen/blobs/sha256:346164300a7e835f8516c70b25793702bab2437d7e9fb606b5394ab757dab4f5",
|
||||
"sha256": "346164300a7e835f8516c70b25793702bab2437d7e9fb606b5394ab757dab4f5"
|
||||
},
|
||||
"ventura": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/xcodegen/blobs/sha256:2bca799f6fee1e679a3f826a9a977449a23f81f02896b22a525056f6cd4a07dd",
|
||||
"sha256": "2bca799f6fee1e679a3f826a9a977449a23f81f02896b22a525056f6cd4a07dd"
|
||||
},
|
||||
"monterey": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/xcodegen/blobs/sha256:3e306a4b9ad078c77b61d93090c224304c7dac35ca119808db87792edb983be8",
|
||||
"sha256": "3e306a4b9ad078c77b61d93090c224304c7dac35ca119808db87792edb983be8"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"curl": {
|
||||
"version": "8.5.0",
|
||||
"bottle": {
|
||||
"rebuild": 0,
|
||||
"root_url": "https://ghcr.io/v2/homebrew/core",
|
||||
"files": {
|
||||
"arm64_sonoma": {
|
||||
"cellar": ":any",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/curl/blobs/sha256:f522b5617f23fc5254ca7af46f966ab4126f1e6bb807ef6b0a5d9a189401628c",
|
||||
"sha256": "f522b5617f23fc5254ca7af46f966ab4126f1e6bb807ef6b0a5d9a189401628c"
|
||||
},
|
||||
"arm64_ventura": {
|
||||
"cellar": ":any",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/curl/blobs/sha256:bf6727235d2f3de1aaac9cd78a73de007c50370fbe8a617fa6274b5b0c11e17d",
|
||||
"sha256": "bf6727235d2f3de1aaac9cd78a73de007c50370fbe8a617fa6274b5b0c11e17d"
|
||||
},
|
||||
"arm64_monterey": {
|
||||
"cellar": ":any",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/curl/blobs/sha256:30624bc555daa8181e3bceb3abe88fc83be0ccfdf4481e2333599fbeb45b7922",
|
||||
"sha256": "30624bc555daa8181e3bceb3abe88fc83be0ccfdf4481e2333599fbeb45b7922"
|
||||
},
|
||||
"sonoma": {
|
||||
"cellar": ":any",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/curl/blobs/sha256:47c7c2bacab6e130e55fd34a0053062ad775801a4ed6b8f8d970226b89aaaef3",
|
||||
"sha256": "47c7c2bacab6e130e55fd34a0053062ad775801a4ed6b8f8d970226b89aaaef3"
|
||||
},
|
||||
"ventura": {
|
||||
"cellar": ":any",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/curl/blobs/sha256:b38db0ec20251e89fcd2f71074a3ad3e9aa2bedafe9b9d4d7c368a8fbfea2e67",
|
||||
"sha256": "b38db0ec20251e89fcd2f71074a3ad3e9aa2bedafe9b9d4d7c368a8fbfea2e67"
|
||||
},
|
||||
"monterey": {
|
||||
"cellar": ":any",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/curl/blobs/sha256:4d68cb21a249d7cf410bf46ee419bb5159a8847507ecd29e4163db2feed0e1e3",
|
||||
"sha256": "4d68cb21a249d7cf410bf46ee419bb5159a8847507ecd29e4163db2feed0e1e3"
|
||||
},
|
||||
"x86_64_linux": {
|
||||
"cellar": ":any_skip_relocation",
|
||||
"url": "https://ghcr.io/v2/homebrew/core/curl/blobs/sha256:6b2cd50eae98f85e4ba55b4379e2351ec4408d3c547a6bed782f1eb62a797ad4",
|
||||
"sha256": "6b2cd50eae98f85e4ba55b4379e2351ec4408d3c547a6bed782f1eb62a797ad4"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"system": {
|
||||
"macos": {
|
||||
"ventura": {
|
||||
"HOMEBREW_VERSION": "4.2.1",
|
||||
"HOMEBREW_PREFIX": "/opt/homebrew",
|
||||
"Homebrew/homebrew-core": "api",
|
||||
"CLT": "15.0.0.0.1.1694021235",
|
||||
"Xcode": "15.1",
|
||||
"macOS": "13.6.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
@ -1,41 +0,0 @@
|
||||
{
|
||||
"pins" : [
|
||||
{
|
||||
"identity" : "defaults",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/sindresorhus/Defaults",
|
||||
"state" : {
|
||||
"revision" : "981ccb0a01c54abbe3c12ccb8226108527bbf115",
|
||||
"version" : "6.3.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "fuzi",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/cezheng/Fuzi",
|
||||
"state" : {
|
||||
"revision" : "f08c8323da21e985f3772610753bcfc652c2103f",
|
||||
"version" : "3.1.3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "swift-collections",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/apple/swift-collections.git",
|
||||
"state" : {
|
||||
"revision" : "937e904258d22af6e447a0b72c0bc67583ef64a2",
|
||||
"version" : "1.0.4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "swiftuibackports",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/shaps80/SwiftUIBackports.git",
|
||||
"state" : {
|
||||
"revision" : "4cab730480277c5ae6ac3ea8ee02b4845dee4903",
|
||||
"version" : "1.6.3"
|
||||
}
|
||||
}
|
||||
],
|
||||
"version" : 2
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>classNames</key>
|
||||
<dict>
|
||||
<key>iOSUITests</key>
|
||||
<dict>
|
||||
<key>testLaunchPerformance()</key>
|
||||
<dict>
|
||||
<key>com.apple.dt.XCTMetric_ApplicationLaunch-AppLaunch.duration</key>
|
||||
<dict>
|
||||
<key>baselineAverage</key>
|
||||
<real>1.8055</real>
|
||||
<key>baselineIntegrationDisplayName</key>
|
||||
<string>Local Baseline</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
@ -1,40 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>runDestinationsByUUID</key>
|
||||
<dict>
|
||||
<key>7C59A401-F1E8-48BA-8542-425634ADC0DB</key>
|
||||
<dict>
|
||||
<key>localComputer</key>
|
||||
<dict>
|
||||
<key>busSpeedInMHz</key>
|
||||
<integer>400</integer>
|
||||
<key>cpuCount</key>
|
||||
<integer>1</integer>
|
||||
<key>cpuKind</key>
|
||||
<string>Unknown CPU</string>
|
||||
<key>cpuSpeedInMHz</key>
|
||||
<integer>3800</integer>
|
||||
<key>logicalCPUCoresPerPackage</key>
|
||||
<integer>24</integer>
|
||||
<key>modelCode</key>
|
||||
<string>MacPro7,1</string>
|
||||
<key>physicalCPUCoresPerPackage</key>
|
||||
<integer>12</integer>
|
||||
<key>platformIdentifier</key>
|
||||
<string>com.apple.platform.macosx</string>
|
||||
</dict>
|
||||
<key>targetArchitecture</key>
|
||||
<string>x86_64</string>
|
||||
<key>targetDevice</key>
|
||||
<dict>
|
||||
<key>modelCode</key>
|
||||
<string>iPad8,9</string>
|
||||
<key>platformIdentifier</key>
|
||||
<string>com.apple.platform.iphonesimulator</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
@ -1,104 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1500"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "972DE4A52814A3D8004FD9B9"
|
||||
BuildableName = "Kiwix.app"
|
||||
BlueprintName = "Kiwix"
|
||||
ReferencedContainer = "container:Kiwix.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "NO">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "972DE4A52814A3D8004FD9B9"
|
||||
BuildableName = "Kiwix.app"
|
||||
BlueprintName = "Kiwix"
|
||||
ReferencedContainer = "container:Kiwix.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<CommandLineArguments>
|
||||
<CommandLineArgument
|
||||
argument = "testing"
|
||||
isEnabled = "YES">
|
||||
</CommandLineArgument>
|
||||
</CommandLineArguments>
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO"
|
||||
parallelizable = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97008AB92974A5BF0076E60C"
|
||||
BuildableName = "Tests.xctest"
|
||||
BlueprintName = "Tests"
|
||||
ReferencedContainer = "container:Kiwix.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "972DE4A52814A3D8004FD9B9"
|
||||
BuildableName = "Kiwix.app"
|
||||
BlueprintName = "Kiwix"
|
||||
ReferencedContainer = "container:Kiwix.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "972DE4A52814A3D8004FD9B9"
|
||||
BuildableName = "Kiwix.app"
|
||||
BlueprintName = "Kiwix"
|
||||
ReferencedContainer = "container:Kiwix.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
@ -1,78 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1500"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97B44893210FBC2C0004B056"
|
||||
BuildableName = "WikiMed.app"
|
||||
BlueprintName = "WikiMed"
|
||||
ReferencedContainer = "container:Kiwix.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97B44893210FBC2C0004B056"
|
||||
BuildableName = "WikiMed.app"
|
||||
BlueprintName = "WikiMed"
|
||||
ReferencedContainer = "container:Kiwix.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97B44893210FBC2C0004B056"
|
||||
BuildableName = "WikiMed.app"
|
||||
BlueprintName = "WikiMed"
|
||||
ReferencedContainer = "container:Kiwix.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
61
README.md
61
README.md
@ -6,7 +6,7 @@ This is the home for Kiwix apps for Apple iOS and macOS.
|
||||
[](https://github.com/kiwix/apple/actions/workflows/ci.yml?query=branch%3Amain)
|
||||
[](https://github.com/kiwix/apple/actions/workflows/cd?query=branch%3Amain)
|
||||
[](https://www.gnu.org/licenses/gpl-3.0)
|
||||
<img src="https://img.shields.io/badge/Swift-5.2-orange.svg" alt="Drawing="/>
|
||||
<img src="https://img.shields.io/badge/Swift-5.9-orange.svg" alt="Drawing="/>
|
||||
|
||||
## Download
|
||||
|
||||
@ -18,7 +18,42 @@ downloadable for older versions of macOS and iOS on the Mac App Store.
|
||||
|
||||
## Develop
|
||||
|
||||
Kiwix developers usually work with latest macOS and Xcode. Check our [Continuous Integration Workflow](https://github.com/kiwix/apple/blob/main/.github/workflows/ci.yml) to find out which XCode version we use on Github Actions.
|
||||
Kiwix developers usually work with latest macOS and Xcode. Check our [Continuous Integration Workflow](https://github.com/kiwix/apple/blob/main/.github/workflows/ci.yml) to find out which Xcode version we use on Github Actions.
|
||||
|
||||
### Get started
|
||||
|
||||
To get started, you will need the following:
|
||||
|
||||
* An [Apple Developer account](https://developer.apple.com) (doesn't require membership)
|
||||
* [Xcode](https://developer.apple.com/xcode/) installed
|
||||
* Its command-line utilities (`xcode-select --install`)
|
||||
* [Homebrew](https://brew.sh) installed
|
||||
|
||||
### Steps
|
||||
1) clone this repository
|
||||
2) from the project folder **run the following command: `brew bundle`**
|
||||
|
||||
### Xcode settings
|
||||
|
||||
To compile and run Kiwix from Xcode locally, you will need to:
|
||||
* Change the Bundle Identifier (in *Signing & Capabilities*)
|
||||
* Select appropriate Signing Certificate/Profile.
|
||||
|
||||
### Dependencies installed for you
|
||||
Our `Brewfile` will install all the necessary dependencies for you:
|
||||
- our latest `CoreKiwix.xcframework` ([libkiwix](https://github.com/kiwix/libkiwix) and [libzim](https://github.com/openzim/libzim))
|
||||
- [XcodeGen](https://github.com/yonaskolb/XcodeGen) which will create the project files for you
|
||||
|
||||
### How XcodeGen is working?
|
||||
Xcode project files are not directly contained within this repository, instead they are generated for you automatically (as git hooks on post-merge, post-checkout, post-rewrite - see the `.pre-commit-config.yaml`).
|
||||
|
||||
This means, that you can work in Xcode as usual, but you don't need to worry about the project file changes anymore.
|
||||
|
||||
Contributors: please note, **changes to the Xcode project folder will not be tracked by git**.
|
||||
|
||||
If you wish to change any settings as part of your contribution, please **edit the `project.yml` file instead.**
|
||||
|
||||
Please refer to the [XcodeGen documentation](https://github.com/yonaskolb/XcodeGen) for further details.
|
||||
|
||||
### CPU Architectures
|
||||
|
||||
@ -26,31 +61,15 @@ Kiwix compiles on both macOS architectures x86_64 and arm64 (Apple silicon).
|
||||
|
||||
Kiwix for iOS and macOS can run, in both cases, on x86_64 or arm64.
|
||||
|
||||
### Dependencies
|
||||
|
||||
To compile Kiwix you rely on the following compilation tools:
|
||||
|
||||
* An [Apple Developer account](https://developer.apple.com) (doesn't require membership)
|
||||
* Latest Apple Developers Tools ([Xcode](https://developer.apple.com/xcode/))
|
||||
* Its command-line utilities (`xcode-select --install`)
|
||||
* `CoreKiwix.xcframework` ([libkiwix](https://github.com/kiwix/libkiwix) and [libzim](https://github.com/openzim/libzim))
|
||||
|
||||
### Steps
|
||||
|
||||
To compile Kiwix, follow these steps:
|
||||
|
||||
* Put `CoreKiwix/xcframework` at the root of this folder
|
||||
* Open project with Xcode `open Kiwix.xcodeproj/project.xcworkspace/`
|
||||
* Change the Bundle Identifier (in *Signing & Capabilities*)
|
||||
* Select appropriate Signing Certificate/Profile.
|
||||
|
||||
### Getting `CoreKiwix.xcframework`
|
||||
### Switch to another version of the `CoreKiwix.xcframework`
|
||||
|
||||
`CoreKiwix.xcframework` is published with all supported platforms and CPU architectures:
|
||||
|
||||
- [latest release](https://download.kiwix.org/release/libkiwix/libkiwix_xcframework.tar.gz)
|
||||
- [latest nightly](https://download.kiwix.org/nightly/libkiwix_xcframework.tar.gz): using `main` branch of both `libkiwix` and `libzim`.
|
||||
|
||||
In order to use another version of CoreKiwix, than the one pre-installed, you can simply replace the CoreKiwix.xcframework folder at the root of the project with the version downloaded, and unpacked.
|
||||
|
||||
#### Compiling `CoreKiwix.xcframework`
|
||||
|
||||
You may want to compile it yourself, to use different branches of said projects for instance.
|
||||
|
139
project.yml
Normal file
139
project.yml
Normal file
@ -0,0 +1,139 @@
|
||||
name: Kiwix
|
||||
options:
|
||||
xcodeVersion: 15.0
|
||||
deploymentTarget: # the three latest major versions should be supported
|
||||
iOS: 15.0
|
||||
macOS: 12.0
|
||||
generateEmptyDirectories: true
|
||||
useTabs: false
|
||||
groupSortPosition: top
|
||||
|
||||
settings:
|
||||
base:
|
||||
DEVELOPMENT_TEAM: L7HWM3SP3L
|
||||
GENERATE_INFOPLIST_FILE: YES
|
||||
CURRENT_PROJECT_VERSION: 133
|
||||
ENABLE_USER_SCRIPT_SANDBOXING: NO
|
||||
ENABLE_MODULE_VERIFIER: YES
|
||||
MODULE_VERIFIER_SUPPORTED_LANGUAGES: "objective-c objective-c++"
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS: YES
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED: YES
|
||||
ENABLE_PREVIEWS: YES
|
||||
INFOPLIST_KEY_LSApplicationCategoryType: public.app-category.reference
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone: UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad: UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight
|
||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription: "Kiwix needs permission to saves images to your photos app."
|
||||
INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace: YES
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents: YES
|
||||
SWIFT_OBJC_INTEROP_MODE: objcxx
|
||||
SWIFT_OBJC_BRIDGING_HEADER: $(PROJECT_DIR)/Support/Kiwix-Bridging-Header.h
|
||||
GCC_C_LANGUAGE_STANDARD: c11
|
||||
CLANG_CXX_LANGUAGE_STANDARD: c++14
|
||||
ENABLE_HARDENED_RUNTIME[sdk=macosx*]: YES
|
||||
APP_STORE_ID: $(APP_STORE_ID)
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation: YES
|
||||
INFOPLIST_KEY_UILaunchStoryboardName: LaunchKiwix.storyboard
|
||||
|
||||
configs:
|
||||
debug:
|
||||
DEAD_CODE_STRIPPING: YES
|
||||
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS: "gnu11 gnu14++"
|
||||
release:
|
||||
DEAD_CODE_STRIPPING: YES
|
||||
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS: "gnu11 gnu14++"
|
||||
VALIDATE_PRODUCT: YES
|
||||
|
||||
packages:
|
||||
Fuzi:
|
||||
url: https://github.com/cezheng/Fuzi
|
||||
majorVersion: 3.0.0
|
||||
Defaults:
|
||||
url: https://github.com/sindresorhus/Defaults
|
||||
majorVersion: 6.0.0
|
||||
SwiftUIBackports:
|
||||
url: https://github.com/shaps80/SwiftUIBackports.git
|
||||
majorVersion: 1.0.0
|
||||
OrderedCollections:
|
||||
url: https://github.com/apple/swift-collections.git
|
||||
majorVersion: 1.0.4
|
||||
|
||||
targetTemplates:
|
||||
ApplicationTemplate:
|
||||
type: application
|
||||
supportedDestinations: [iOS, macOS]
|
||||
preBuildScripts:
|
||||
- script: |
|
||||
# Copy Clang module map to xcframework for Swift C++ Interoperability
|
||||
cp Support/CoreKiwix.modulemap CoreKiwix.xcframework/ios-arm64/Headers/module.modulemap
|
||||
cp Support/CoreKiwix.modulemap CoreKiwix.xcframework/ios-arm64_x86_64-simulator/Headers/module.modulemap
|
||||
cp Support/CoreKiwix.modulemap CoreKiwix.xcframework/macos-arm64_x86_64/Headers/module.modulemap
|
||||
name: "Copy CoreKiwix module maps"
|
||||
basedOnDependencyAnalysis: false
|
||||
entitlements:
|
||||
path: Support/Kiwix.entitlements
|
||||
properties:
|
||||
com.apple.security.app-sandbox: true
|
||||
com.apple.security.files.downloads.read-write: true
|
||||
com.apple.security.files.user-selected.read-only: true
|
||||
com.apple.security.network.client: true
|
||||
dependencies:
|
||||
- framework: CoreKiwix.xcframework
|
||||
embed: false
|
||||
codeSign: true
|
||||
- sdk: SwiftUI.framework
|
||||
- sdk: MapKit.framework
|
||||
- sdk: WebKit.framework
|
||||
- sdk: NotificationCenter.framework
|
||||
- sdk: QuickLook.framework
|
||||
- package: Fuzi
|
||||
- package: Defaults
|
||||
- package: SwiftUIBackports
|
||||
- package: OrderedCollections
|
||||
sources:
|
||||
- path: App
|
||||
- path: Model
|
||||
- path: SwiftUI
|
||||
- path: ViewModel
|
||||
- path: Views
|
||||
|
||||
targets:
|
||||
Kiwix:
|
||||
templates:
|
||||
- ApplicationTemplate
|
||||
settings:
|
||||
base:
|
||||
MARKETING_VERSION: "3.3"
|
||||
PRODUCT_BUNDLE_IDENTIFIER: self.Kiwix
|
||||
INFOPLIST_KEY_CFBundleDisplayName: Kiwix
|
||||
INFOPLIST_FILE: Support/Info.plist
|
||||
configFiles:
|
||||
Debug: Support/kiwix.xcconfig
|
||||
Release: Support/kiwix.xcconfig
|
||||
sources:
|
||||
- path: Support
|
||||
excludes:
|
||||
- "**/qqq.lproj"
|
||||
UnitTests:
|
||||
type: bundle.unit-test
|
||||
platform: macOS
|
||||
settings:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: org.kiwix.Tests
|
||||
TEST_HOST: $(BUILT_PRODUCTS_DIR)/Kiwix.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Kiwix
|
||||
BUNDLE_LOADER: $(TEST_HOST)
|
||||
sources:
|
||||
- path: Tests
|
||||
dependencies:
|
||||
- target: Kiwix
|
||||
|
||||
schemes:
|
||||
Kiwix:
|
||||
build:
|
||||
targets:
|
||||
Kiwix: all
|
||||
test:
|
||||
targets:
|
||||
- UnitTests
|
||||
commandLineArguments:
|
||||
testing: true
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user