From 7ed715a18ac2c595b99d6ad3321ffb3df4b5fb15 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:34 -0400 Subject: [PATCH 01/21] Add CSQLite shim header including --- Sources/CSQLite/shim.h | 1 + 1 file changed, 1 insertion(+) create mode 100644 Sources/CSQLite/shim.h diff --git a/Sources/CSQLite/shim.h b/Sources/CSQLite/shim.h new file mode 100644 index 0000000..f52e1f0 --- /dev/null +++ b/Sources/CSQLite/shim.h @@ -0,0 +1 @@ +#include From 1aebd963ee4e50a5f1f522cc59b4a21f60d1c23e Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:34 -0400 Subject: [PATCH 02/21] Add CSQLite module map linking the system sqlite3 library --- Sources/CSQLite/module.modulemap | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 Sources/CSQLite/module.modulemap diff --git a/Sources/CSQLite/module.modulemap b/Sources/CSQLite/module.modulemap new file mode 100644 index 0000000..0a291b5 --- /dev/null +++ b/Sources/CSQLite/module.modulemap @@ -0,0 +1,5 @@ +module CSQLite [system] { + header "shim.h" + link "sqlite3" + export * +} From 0dbd6a932f704d74d62c7b79d25b972fbd59eb57 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:34 -0400 Subject: [PATCH 03/21] Link the system SQLite on Linux via the CSQLite system library target Linux previously used the embedded swift-sqlcipher build. It now links the system libsqlite3 through a system library target declared with pkgConfig and apt/yum providers. Set SWIFT_BUILD_SQLCIPHER=1 to keep using the embedded build when the development package is unavailable. --- Package.swift | 51 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/Package.swift b/Package.swift index 81e1f2d..a8a53cf 100644 --- a/Package.swift +++ b/Package.swift @@ -6,10 +6,44 @@ import class Foundation.ProcessInfo // get environment variables let environment = ProcessInfo.processInfo.environment let dynamicLibrary = environment["SWIFT_BUILD_DYNAMIC_LIBRARY"] == "1" +let embeddedSQLite = environment["SWIFT_BUILD_SQLCIPHER"] == "1" // force building as dynamic library let libraryType: PackageDescription.Product.Library.LibraryType? = dynamicLibrary ? .dynamic : nil +// Linux links the system SQLite (`libsqlite3-dev` / `sqlite-devel`) by default. +// Set `SWIFT_BUILD_SQLCIPHER=1` to use the embedded build there instead, e.g. +// when the development package isn't available. +let embeddedSQLitePlatforms: [Platform] = embeddedSQLite + ? [.linux, .android, .windows, .wasi, .openbsd] + : [.android, .windows, .wasi, .openbsd] + +var sqliteDependencies: [Target.Dependency] = [ + .product( + name: "SQLCipher", + package: "swift-sqlcipher", + condition: .when(platforms: embeddedSQLitePlatforms) + ) +] + +var sqliteTargets: [Target] = [] + +if !embeddedSQLite { + sqliteDependencies.append( + .target(name: "CSQLite", condition: .when(platforms: [.linux])) + ) + sqliteTargets.append( + .systemLibrary( + name: "CSQLite", + pkgConfig: "sqlite3", + providers: [ + .apt(["libsqlite3-dev"]), + .yum(["sqlite-devel"]) + ] + ) + ) +} + let package = Package( name: "SQLite", products: [ @@ -20,27 +54,22 @@ let package = Package( ) ], dependencies: [ - // Darwin platforms link the system SQLite3.framework; everywhere else - // has no system SQLite, so this package's embedded copy is used instead. + // Darwin platforms link the system SQLite3.framework and Linux links the + // system libsqlite3; the remaining platforms have no system SQLite, so + // this package's embedded copy is used instead. .package( url: "https://github.com/PureSwift/swift-sqlcipher", from: "0.1.0" ) ], - targets: [ + targets: sqliteTargets + [ .target( name: "SQLite", - dependencies: [ - .product( - name: "SQLCipher", - package: "swift-sqlcipher", - condition: .when(platforms: [.linux, .android, .windows, .wasi, .openbsd]) - ) - ], + dependencies: sqliteDependencies, swiftSettings: [ .define( "SQLITE_SWIFT_SQLCIPHER", - .when(platforms: [.linux, .android, .windows, .wasi, .openbsd]) + .when(platforms: embeddedSQLitePlatforms) ) ] ), From a53bc6907def22912b011eff20d1a365135a4f2e Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:42 -0400 Subject: [PATCH 04/21] Import CSQLite instead of SwiftToolchainCSQLite in AggregateFunction.swift --- Sources/SQLite/AggregateFunction.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SQLite/AggregateFunction.swift b/Sources/SQLite/AggregateFunction.swift index 6eb79dc..bc81d94 100644 --- a/Sources/SQLite/AggregateFunction.swift +++ b/Sources/SQLite/AggregateFunction.swift @@ -10,7 +10,7 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher #elseif os(Linux) -import SwiftToolchainCSQLite +import CSQLite #else import SQLite3 #endif From bd9531237e22def74379708fed4fb653665cb5f7 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:42 -0400 Subject: [PATCH 05/21] Import CSQLite instead of SwiftToolchainCSQLite in Backup.swift --- Sources/SQLite/Backup.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SQLite/Backup.swift b/Sources/SQLite/Backup.swift index 64ba127..6578e8a 100644 --- a/Sources/SQLite/Backup.swift +++ b/Sources/SQLite/Backup.swift @@ -10,7 +10,7 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher #elseif os(Linux) -import SwiftToolchainCSQLite +import CSQLite #else import SQLite3 #endif From 7bd63d685c61c648432535d4780056aaa5c857c9 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:42 -0400 Subject: [PATCH 06/21] Import CSQLite instead of SwiftToolchainCSQLite in Collation.swift --- Sources/SQLite/Collation.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SQLite/Collation.swift b/Sources/SQLite/Collation.swift index 12e1aba..3277e67 100644 --- a/Sources/SQLite/Collation.swift +++ b/Sources/SQLite/Collation.swift @@ -10,7 +10,7 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher #elseif os(Linux) -import SwiftToolchainCSQLite +import CSQLite #else import SQLite3 #endif From 6a93dba482504d95127110447928dd042c0e13db Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:42 -0400 Subject: [PATCH 07/21] Import CSQLite instead of SwiftToolchainCSQLite in Connection.swift --- Sources/SQLite/Connection.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SQLite/Connection.swift b/Sources/SQLite/Connection.swift index 6f23a40..b848c30 100644 --- a/Sources/SQLite/Connection.swift +++ b/Sources/SQLite/Connection.swift @@ -10,7 +10,7 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher #elseif os(Linux) -import SwiftToolchainCSQLite +import CSQLite #else import SQLite3 #endif From f2a0d4eadadaa0bffc440b21685f18d4fdbf82c5 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:42 -0400 Subject: [PATCH 08/21] Import CSQLite instead of SwiftToolchainCSQLite in Constants.swift --- Sources/SQLite/Constants.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SQLite/Constants.swift b/Sources/SQLite/Constants.swift index baec0eb..31a5b3b 100644 --- a/Sources/SQLite/Constants.swift +++ b/Sources/SQLite/Constants.swift @@ -10,7 +10,7 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher #elseif os(Linux) -import SwiftToolchainCSQLite +import CSQLite #else import SQLite3 #endif From 1e4f9706b5652fcd17ba7e682e57f868fca7580f Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:42 -0400 Subject: [PATCH 09/21] Import CSQLite instead of SwiftToolchainCSQLite in Error.swift --- Sources/SQLite/Error.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SQLite/Error.swift b/Sources/SQLite/Error.swift index 214c63d..6bc3c2d 100644 --- a/Sources/SQLite/Error.swift +++ b/Sources/SQLite/Error.swift @@ -10,7 +10,7 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher #elseif os(Linux) -import SwiftToolchainCSQLite +import CSQLite #else import SQLite3 #endif From 688425581177405daf14cffbb1994e2427646a91 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:42 -0400 Subject: [PATCH 10/21] Import CSQLite instead of SwiftToolchainCSQLite in Function.swift --- Sources/SQLite/Function.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SQLite/Function.swift b/Sources/SQLite/Function.swift index 7975a88..8a984fe 100644 --- a/Sources/SQLite/Function.swift +++ b/Sources/SQLite/Function.swift @@ -10,7 +10,7 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher #elseif os(Linux) -import SwiftToolchainCSQLite +import CSQLite #else import SQLite3 #endif From fc39923b76712bb185325b61d51c21073cfc0eb3 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:42 -0400 Subject: [PATCH 11/21] Import CSQLite instead of SwiftToolchainCSQLite in IncrementalBlob.swift --- Sources/SQLite/IncrementalBlob.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SQLite/IncrementalBlob.swift b/Sources/SQLite/IncrementalBlob.swift index 727e1bc..f01e33c 100644 --- a/Sources/SQLite/IncrementalBlob.swift +++ b/Sources/SQLite/IncrementalBlob.swift @@ -10,7 +10,7 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher #elseif os(Linux) -import SwiftToolchainCSQLite +import CSQLite #else import SQLite3 #endif From 455d9126535d44eb107f39f0ebf9e7140fd7d699 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:42 -0400 Subject: [PATCH 12/21] Import CSQLite instead of SwiftToolchainCSQLite in PreparedStatement.swift --- Sources/SQLite/PreparedStatement.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SQLite/PreparedStatement.swift b/Sources/SQLite/PreparedStatement.swift index 6abb236..2a9ac59 100644 --- a/Sources/SQLite/PreparedStatement.swift +++ b/Sources/SQLite/PreparedStatement.swift @@ -10,7 +10,7 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher #elseif os(Linux) -import SwiftToolchainCSQLite +import CSQLite #else import SQLite3 #endif From 6ede7ca1439c983132995279fb19f8d89397c9db Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:42 -0400 Subject: [PATCH 13/21] Import CSQLite instead of SwiftToolchainCSQLite in Statement.swift --- Sources/SQLite/Statement.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SQLite/Statement.swift b/Sources/SQLite/Statement.swift index 77dd89a..6813422 100644 --- a/Sources/SQLite/Statement.swift +++ b/Sources/SQLite/Statement.swift @@ -10,7 +10,7 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher #elseif os(Linux) -import SwiftToolchainCSQLite +import CSQLite #else import SQLite3 #endif From a1ddfc636d65a3c4f0ef5b9abb1693aad30ee98a Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:42 -0400 Subject: [PATCH 14/21] Import CSQLite instead of SwiftToolchainCSQLite in TypeAffinity.swift --- Sources/SQLite/TypeAffinity.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SQLite/TypeAffinity.swift b/Sources/SQLite/TypeAffinity.swift index a664502..7abb69e 100644 --- a/Sources/SQLite/TypeAffinity.swift +++ b/Sources/SQLite/TypeAffinity.swift @@ -10,7 +10,7 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher #elseif os(Linux) -import SwiftToolchainCSQLite +import CSQLite #else import SQLite3 #endif From 37170ee06ac48903fbef816cf903d14bdf269ad0 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:42 -0400 Subject: [PATCH 15/21] Import CSQLite instead of SwiftToolchainCSQLite in WAL.swift --- Sources/SQLite/WAL.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SQLite/WAL.swift b/Sources/SQLite/WAL.swift index 05569c4..34d217f 100644 --- a/Sources/SQLite/WAL.swift +++ b/Sources/SQLite/WAL.swift @@ -10,7 +10,7 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher #elseif os(Linux) -import SwiftToolchainCSQLite +import CSQLite #else import SQLite3 #endif From ee79e73015bb774796de92fe85432b0a4229c690 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:43 -0400 Subject: [PATCH 16/21] Import CSQLite instead of SwiftToolchainCSQLite in WindowFunction.swift --- Sources/SQLite/WindowFunction.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SQLite/WindowFunction.swift b/Sources/SQLite/WindowFunction.swift index 6619316..ed90010 100644 --- a/Sources/SQLite/WindowFunction.swift +++ b/Sources/SQLite/WindowFunction.swift @@ -10,7 +10,7 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher #elseif os(Linux) -import SwiftToolchainCSQLite +import CSQLite #else import SQLite3 #endif From d14c4d5b62dfb5526be96f9196daf3071d9cd670 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:43 -0400 Subject: [PATCH 17/21] Install libsqlite3-dev and pkg-config in the Linux CI job --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 89830b7..8dc5bf9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,6 +51,10 @@ jobs: container: swift:6.3.3 steps: - uses: actions/checkout@v4 + - name: Install SQLite + run: | + apt-get update + apt-get install -y --no-install-recommends libsqlite3-dev pkg-config - name: Swift version run: swift --version - name: Build From aa19bcd77098d757e6fc000035f22524265d9374 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:23:43 -0400 Subject: [PATCH 18/21] Document the Linux system SQLite requirement --- README.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 33b9be8..0ce1a96 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,23 @@ DSL. - A minimal schema (DDL) builder — `CREATE TABLE`, primary/foreign keys, unique, default, nullable - `Blob`, `Data`, `UUID`, and `Date` binding conversions -- Cross-platform: uses the system `SQLite3` on Apple platforms and the embedded +- Cross-platform: uses the system `SQLite3` on Apple platforms, the system + `libsqlite3` on Linux, and the embedded [swift-sqlcipher](https://github.com/PureSwift/swift-sqlcipher) build - everywhere else (Linux, Android, Windows, WASI, OpenBSD) + everywhere else (Android, Windows, WASI, OpenBSD) + +## Requirements + +On Linux the package links the system SQLite, so the development package must be +installed: + +```sh +apt-get install libsqlite3-dev pkg-config # Debian / Ubuntu +dnf install sqlite-devel pkgconf-pkg-config # Fedora / RHEL +``` + +If it isn't available, build with `SWIFT_BUILD_SQLCIPHER=1` to use the embedded +SQLite build on Linux instead. ## Installation From 5a67f25a7510e50b829caca67aefa6c41fef4438 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:26:41 -0400 Subject: [PATCH 19/21] Make the system SQLite on Linux opt-in via SWIFT_BUILD_SYSTEM_SQLITE Linux keeps using the embedded build by default, like the other non-Darwin platforms. Setting SWIFT_BUILD_SYSTEM_SQLITE=1 declares the CSQLite target and links the system libsqlite3 instead. --- Package.swift | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Package.swift b/Package.swift index a8a53cf..d4da6da 100644 --- a/Package.swift +++ b/Package.swift @@ -6,17 +6,17 @@ import class Foundation.ProcessInfo // get environment variables let environment = ProcessInfo.processInfo.environment let dynamicLibrary = environment["SWIFT_BUILD_DYNAMIC_LIBRARY"] == "1" -let embeddedSQLite = environment["SWIFT_BUILD_SQLCIPHER"] == "1" +let systemSQLite = environment["SWIFT_BUILD_SYSTEM_SQLITE"] == "1" // force building as dynamic library let libraryType: PackageDescription.Product.Library.LibraryType? = dynamicLibrary ? .dynamic : nil -// Linux links the system SQLite (`libsqlite3-dev` / `sqlite-devel`) by default. -// Set `SWIFT_BUILD_SQLCIPHER=1` to use the embedded build there instead, e.g. -// when the development package isn't available. -let embeddedSQLitePlatforms: [Platform] = embeddedSQLite - ? [.linux, .android, .windows, .wasi, .openbsd] - : [.android, .windows, .wasi, .openbsd] +// Linux uses the embedded SQLite build by default, like the other non-Darwin +// platforms. Set `SWIFT_BUILD_SYSTEM_SQLITE=1` to link the system SQLite +// (`libsqlite3-dev` / `sqlite-devel`) there instead. +let embeddedSQLitePlatforms: [Platform] = systemSQLite + ? [.android, .windows, .wasi, .openbsd] + : [.linux, .android, .windows, .wasi, .openbsd] var sqliteDependencies: [Target.Dependency] = [ .product( @@ -28,7 +28,7 @@ var sqliteDependencies: [Target.Dependency] = [ var sqliteTargets: [Target] = [] -if !embeddedSQLite { +if systemSQLite { sqliteDependencies.append( .target(name: "CSQLite", condition: .when(platforms: [.linux])) ) @@ -54,9 +54,9 @@ let package = Package( ) ], dependencies: [ - // Darwin platforms link the system SQLite3.framework and Linux links the - // system libsqlite3; the remaining platforms have no system SQLite, so - // this package's embedded copy is used instead. + // Darwin platforms link the system SQLite3.framework; everywhere else + // uses this package's embedded copy, unless Linux opts into the system + // libsqlite3 with `SWIFT_BUILD_SYSTEM_SQLITE=1`. .package( url: "https://github.com/PureSwift/swift-sqlcipher", from: "0.1.0" From 8d24f3e46f6f5152758e93acaf87f5ffe301daf0 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:26:41 -0400 Subject: [PATCH 20/21] Add a Linux CI job covering the system SQLite build --- .github/workflows/ci.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8dc5bf9..6918d3d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,6 +49,21 @@ jobs: linux: runs-on: ubuntu-latest container: swift:6.3.3 + steps: + - uses: actions/checkout@v4 + - name: Swift version + run: swift --version + - name: Build + run: swift build -v + - name: Test + run: swift test -v + + linux-system-sqlite: + name: Linux (system SQLite) + runs-on: ubuntu-latest + container: swift:6.3.3 + env: + SWIFT_BUILD_SYSTEM_SQLITE: '1' steps: - uses: actions/checkout@v4 - name: Install SQLite From 2752e9e6cbce399d528ab9f9131554120601e9e3 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 28 Jul 2026 14:26:41 -0400 Subject: [PATCH 21/21] Document the system SQLite opt-in on Linux --- README.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 0ce1a96..30471e1 100644 --- a/README.md +++ b/README.md @@ -16,23 +16,26 @@ DSL. - A minimal schema (DDL) builder — `CREATE TABLE`, primary/foreign keys, unique, default, nullable - `Blob`, `Data`, `UUID`, and `Date` binding conversions -- Cross-platform: uses the system `SQLite3` on Apple platforms, the system - `libsqlite3` on Linux, and the embedded +- Cross-platform: uses the system `SQLite3` on Apple platforms and the embedded [swift-sqlcipher](https://github.com/PureSwift/swift-sqlcipher) build - everywhere else (Android, Windows, WASI, OpenBSD) + everywhere else (Linux, Android, Windows, WASI, OpenBSD), with Linux able to + link the system `libsqlite3` instead -## Requirements +## System SQLite on Linux -On Linux the package links the system SQLite, so the development package must be -installed: +Linux uses the embedded SQLite build by default. To link the system SQLite +instead, install the development package and build with +`SWIFT_BUILD_SYSTEM_SQLITE=1`: ```sh apt-get install libsqlite3-dev pkg-config # Debian / Ubuntu dnf install sqlite-devel pkgconf-pkg-config # Fedora / RHEL + +SWIFT_BUILD_SYSTEM_SQLITE=1 swift build ``` -If it isn't available, build with `SWIFT_BUILD_SQLCIPHER=1` to use the embedded -SQLite build on Linux instead. +`pkg-config` is required in addition to the headers, since the system library +target resolves its flags through it. ## Installation