diff --git a/Package.swift b/Package.swift index fcf48fe..f13e589 100644 --- a/Package.swift +++ b/Package.swift @@ -109,6 +109,7 @@ let package = Package( name: "CSQLite", targets: [ "CSQLite", + "CSQLiteExtensions", ]), ], traits: [ @@ -277,19 +278,30 @@ let package = Package( // Targets can depend on other targets in this package and products from dependencies. .target( name: "CSQLite", - cSettings: compileTimeOptions + platformConfiguration + features + [ + cSettings: compileTimeOptions + platformConfiguration + features, + linkerSettings: [ + .linkedLibrary("m"), + ]), + .target( + name: "CSQLiteExtensions", + dependencies: [ + "CSQLite", + ], + cSettings: [ // For statically linking extensions // https://sqlite.org/loadext.html#statically_linking_a_run_time_loadable_extension .define("SQLITE_CORE", to: "1"), - ], - linkerSettings: [ - .linkedLibrary("m"), ]), .testTarget( name: "CSQLiteTests", dependencies: [ "CSQLite", - ]) + ]), + .testTarget( + name: "CSQLiteExtensionsTests", + dependencies: [ + "CSQLiteExtensions", + ]), ], cLanguageStandard: .gnu11 ) diff --git a/Package@swift-5.3.swift b/Package@swift-5.3.swift index eacc02b..ce159f0 100644 --- a/Package@swift-5.3.swift +++ b/Package@swift-5.3.swift @@ -92,6 +92,7 @@ let package = Package( name: "CSQLite", targets: [ "CSQLite", + "CSQLiteExtensions", ]), ], targets: [ @@ -99,19 +100,30 @@ let package = Package( // Targets can depend on other targets in this package and products from dependencies. .target( name: "CSQLite", - cSettings: compileTimeOptions + platformConfiguration + features + [ + cSettings: compileTimeOptions + platformConfiguration + features, + linkerSettings: [ + .linkedLibrary("m"), + ]), + .target( + name: "CSQLiteExtensions", + dependencies: [ + "CSQLite", + ], + cSettings: [ // For statically linking extensions // https://sqlite.org/loadext.html#statically_linking_a_run_time_loadable_extension .define("SQLITE_CORE", to: "1"), - ], - linkerSettings: [ - .linkedLibrary("m"), ]), .testTarget( name: "CSQLiteTests", dependencies: [ "CSQLite", - ]) + ]), + .testTarget( + name: "CSQLiteExtensionsTests", + dependencies: [ + "CSQLiteExtensions", + ]), ], cLanguageStandard: .gnu11 ) diff --git a/Sources/CSQLite/csqlite_shims.c b/Sources/CSQLite/csqlite_shims.c index e5a444d..5d83d8d 100644 --- a/Sources/CSQLite/csqlite_shims.c +++ b/Sources/CSQLite/csqlite_shims.c @@ -290,82 +290,3 @@ int csqlite_sqlite3_vtab_uses_all_schemas(sqlite3 *db) { return sqlite3_vtab_config(db, SQLITE_VTAB_USES_ALL_SCHEMAS); } - -// MARK: - Database extensions - -void sqlite3_carray_init(void); -int csqlite_sqlite3_auto_extension_carray() -{ - return sqlite3_auto_extension(sqlite3_carray_init); -} - -int csqlite_sqlite3_cancel_auto_extension_carray() -{ - return sqlite3_cancel_auto_extension(sqlite3_carray_init); -} - -void sqlite3_decimal_init(void); -int csqlite_sqlite3_auto_extension_decimal() -{ - return sqlite3_auto_extension(sqlite3_decimal_init); -} - -int csqlite_sqlite3_cancel_auto_extension_decimal() -{ - return sqlite3_cancel_auto_extension(sqlite3_decimal_init); -} - -void sqlite3_ieee_init(void); -int csqlite_sqlite3_auto_extension_ieee754() -{ - return sqlite3_auto_extension(sqlite3_ieee_init); -} - -int csqlite_sqlite3_cancel_auto_extension_ieee754() -{ - return sqlite3_cancel_auto_extension(sqlite3_ieee_init); -} - -void sqlite3_percentile_init(void); -int csqlite_sqlite3_auto_extension_percentile() -{ - return sqlite3_auto_extension(sqlite3_percentile_init); -} - -int csqlite_sqlite3_cancel_auto_extension_percentile() -{ - return sqlite3_cancel_auto_extension(sqlite3_percentile_init); -} - -void sqlite3_series_init(void); -int csqlite_sqlite3_auto_extension_series() -{ - return sqlite3_auto_extension(sqlite3_series_init); -} - -int csqlite_sqlite3_cancel_auto_extension_series() -{ - return sqlite3_cancel_auto_extension(sqlite3_series_init); -} - -void sqlite3_shathree_init(void); -int csqlite_sqlite3_auto_extension_sha3() -{ - return sqlite3_auto_extension(sqlite3_shathree_init); -} - -int csqlite_sqlite3_cancel_auto_extension_sha3() -{ - return sqlite3_cancel_auto_extension(sqlite3_shathree_init); -} - -void sqlite3_uuid_init(void); -int csqlite_sqlite3_auto_extension_uuid() -{ - return sqlite3_auto_extension(sqlite3_uuid_init); -} - -int csqlite_sqlite3_cancel_auto_extension_uuid() -{ - return sqlite3_cancel_auto_extension(sqlite3_uuid_init); -} diff --git a/Sources/CSQLite/include/csqlite_shims.h b/Sources/CSQLite/include/csqlite_shims.h index b07fa9f..d0676ce 100644 --- a/Sources/CSQLite/include/csqlite_shims.h +++ b/Sources/CSQLite/include/csqlite_shims.h @@ -139,41 +139,3 @@ int csqlite_sqlite3_vtab_config_innocuous(sqlite3 *db); int csqlite_sqlite3_vtab_config_directonly(sqlite3 *db); /// Equivalent to `sqlite3_vtab_config(db, SQLITE_VTAB_USES_ALL_SCHEMAS)` int csqlite_sqlite3_vtab_uses_all_schemas(sqlite3 *db); - -// MARK: - Database extensions -// See https://sqlite.org/loadext.html - -/// Equivalent to `sqlite3_auto_extension(sqlite3_carray_init)` -int csqlite_sqlite3_auto_extension_carray(void); -/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_carray_init)` -int csqlite_sqlite3_cancel_auto_extension_carray(void); - -/// Equivalent to `sqlite3_auto_extension(sqlite3_decimal_init)` -int csqlite_sqlite3_auto_extension_decimal(void); -/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_decimal_init)` -int csqlite_sqlite3_cancel_auto_extension_decimal(void); - -/// Equivalent to `sqlite3_auto_extension(sqlite3_ieee_init)` -int csqlite_sqlite3_auto_extension_ieee754(void); -/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_ieee_init)` -int csqlite_sqlite3_cancel_auto_extension_ieee754(void); - -/// Equivalent to `sqlite3_auto_extension(sqlite3_percentile_init)` -int csqlite_sqlite3_auto_extension_percentile(void); -/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_percentile_init)` -int csqlite_sqlite3_cancel_auto_extension_percentile(void); - -/// Equivalent to `sqlite3_auto_extension(sqlite3_series_init)` -int csqlite_sqlite3_auto_extension_series(void); -/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_series_init)` -int csqlite_sqlite3_cancel_auto_extension_series(void); - -/// Equivalent to `sqlite3_auto_extension(sqlite3_shathree_init)` -int csqlite_sqlite3_auto_extension_sha3(void); -/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_shathree_init)` -int csqlite_sqlite3_cancel_auto_extension_sha3(void); - -/// Equivalent to `sqlite3_auto_extension(sqlite3_uuid_init)` -int csqlite_sqlite3_auto_extension_uuid(void); -/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_uuid_init)` -int csqlite_sqlite3_cancel_auto_extension_uuid(void); diff --git a/Sources/CSQLite/include/module.modulemap b/Sources/CSQLite/include/module.modulemap index a569ebe..d64a094 100644 --- a/Sources/CSQLite/include/module.modulemap +++ b/Sources/CSQLite/include/module.modulemap @@ -1,7 +1,6 @@ module CSQLite { header "sqlite3.h" header "sqlite3ext.h" - header "carray.h" header "csqlite_shims.h" export * } diff --git a/Sources/CSQLite/carray.c b/Sources/CSQLiteExtensions/carray.c similarity index 100% rename from Sources/CSQLite/carray.c rename to Sources/CSQLiteExtensions/carray.c diff --git a/Sources/CSQLiteExtensions/csqlite_extensions.c b/Sources/CSQLiteExtensions/csqlite_extensions.c new file mode 100644 index 0000000..443f5fc --- /dev/null +++ b/Sources/CSQLiteExtensions/csqlite_extensions.c @@ -0,0 +1,96 @@ +/* + ** 2021-06-04 + ** + ** The author disclaims copyright to this source code. In place of + ** a legal notice, here is a blessing: + ** + ** May you do good and not evil. + ** May you find forgiveness for yourself and forgive others. + ** May you share freely, never taking more than you give. + ** + ****************************************************************************** + ** + ** Functions to manage automatic database extension registration from Swift. + */ + +#include "csqlite_extensions.h" +#include "sqlite3.h" + +// MARK: - Database extensions + +void sqlite3_carray_init(void); +int csqlite_sqlite3_auto_extension_carray() +{ + return sqlite3_auto_extension(sqlite3_carray_init); +} + +int csqlite_sqlite3_cancel_auto_extension_carray() +{ + return sqlite3_cancel_auto_extension(sqlite3_carray_init); +} + +void sqlite3_decimal_init(void); +int csqlite_sqlite3_auto_extension_decimal() +{ + return sqlite3_auto_extension(sqlite3_decimal_init); +} + +int csqlite_sqlite3_cancel_auto_extension_decimal() +{ + return sqlite3_cancel_auto_extension(sqlite3_decimal_init); +} + +void sqlite3_ieee_init(void); +int csqlite_sqlite3_auto_extension_ieee754() +{ + return sqlite3_auto_extension(sqlite3_ieee_init); +} + +int csqlite_sqlite3_cancel_auto_extension_ieee754() +{ + return sqlite3_cancel_auto_extension(sqlite3_ieee_init); +} + +void sqlite3_percentile_init(void); +int csqlite_sqlite3_auto_extension_percentile() +{ + return sqlite3_auto_extension(sqlite3_percentile_init); +} + +int csqlite_sqlite3_cancel_auto_extension_percentile() +{ + return sqlite3_cancel_auto_extension(sqlite3_percentile_init); +} + +void sqlite3_series_init(void); +int csqlite_sqlite3_auto_extension_series() +{ + return sqlite3_auto_extension(sqlite3_series_init); +} + +int csqlite_sqlite3_cancel_auto_extension_series() +{ + return sqlite3_cancel_auto_extension(sqlite3_series_init); +} + +void sqlite3_shathree_init(void); +int csqlite_sqlite3_auto_extension_sha3() +{ + return sqlite3_auto_extension(sqlite3_shathree_init); +} + +int csqlite_sqlite3_cancel_auto_extension_sha3() +{ + return sqlite3_cancel_auto_extension(sqlite3_shathree_init); +} + +void sqlite3_uuid_init(void); +int csqlite_sqlite3_auto_extension_uuid() +{ + return sqlite3_auto_extension(sqlite3_uuid_init); +} + +int csqlite_sqlite3_cancel_auto_extension_uuid() +{ + return sqlite3_cancel_auto_extension(sqlite3_uuid_init); +} diff --git a/Sources/CSQLite/decimal.c b/Sources/CSQLiteExtensions/decimal.c similarity index 100% rename from Sources/CSQLite/decimal.c rename to Sources/CSQLiteExtensions/decimal.c diff --git a/Sources/CSQLite/ieee754.c b/Sources/CSQLiteExtensions/ieee754.c similarity index 100% rename from Sources/CSQLite/ieee754.c rename to Sources/CSQLiteExtensions/ieee754.c diff --git a/Sources/CSQLite/include/carray.h b/Sources/CSQLiteExtensions/include/carray.h similarity index 100% rename from Sources/CSQLite/include/carray.h rename to Sources/CSQLiteExtensions/include/carray.h diff --git a/Sources/CSQLiteExtensions/include/csqlite_extensions.h b/Sources/CSQLiteExtensions/include/csqlite_extensions.h new file mode 100644 index 0000000..913fe86 --- /dev/null +++ b/Sources/CSQLiteExtensions/include/csqlite_extensions.h @@ -0,0 +1,52 @@ +/* + ** 2021-06-04 + ** + ** The author disclaims copyright to this source code. In place of + ** a legal notice, here is a blessing: + ** + ** May you do good and not evil. + ** May you find forgiveness for yourself and forgive others. + ** May you share freely, never taking more than you give. + ** + ****************************************************************************** + ** + ** Functions to manage automatic database extension registration from Swift. + */ + +// MARK: - Database extensions +// See https://sqlite.org/loadext.html + +/// Equivalent to `sqlite3_auto_extension(sqlite3_carray_init)` +int csqlite_sqlite3_auto_extension_carray(void); +/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_carray_init)` +int csqlite_sqlite3_cancel_auto_extension_carray(void); + +/// Equivalent to `sqlite3_auto_extension(sqlite3_decimal_init)` +int csqlite_sqlite3_auto_extension_decimal(void); +/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_decimal_init)` +int csqlite_sqlite3_cancel_auto_extension_decimal(void); + +/// Equivalent to `sqlite3_auto_extension(sqlite3_ieee_init)` +int csqlite_sqlite3_auto_extension_ieee754(void); +/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_ieee_init)` +int csqlite_sqlite3_cancel_auto_extension_ieee754(void); + +/// Equivalent to `sqlite3_auto_extension(sqlite3_percentile_init)` +int csqlite_sqlite3_auto_extension_percentile(void); +/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_percentile_init)` +int csqlite_sqlite3_cancel_auto_extension_percentile(void); + +/// Equivalent to `sqlite3_auto_extension(sqlite3_series_init)` +int csqlite_sqlite3_auto_extension_series(void); +/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_series_init)` +int csqlite_sqlite3_cancel_auto_extension_series(void); + +/// Equivalent to `sqlite3_auto_extension(sqlite3_shathree_init)` +int csqlite_sqlite3_auto_extension_sha3(void); +/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_shathree_init)` +int csqlite_sqlite3_cancel_auto_extension_sha3(void); + +/// Equivalent to `sqlite3_auto_extension(sqlite3_uuid_init)` +int csqlite_sqlite3_auto_extension_uuid(void); +/// Equivalent to `sqlite3_cancel_auto_extension(sqlite3_uuid_init)` +int csqlite_sqlite3_cancel_auto_extension_uuid(void); diff --git a/Sources/CSQLiteExtensions/include/module.modulemap b/Sources/CSQLiteExtensions/include/module.modulemap new file mode 100644 index 0000000..d44bd73 --- /dev/null +++ b/Sources/CSQLiteExtensions/include/module.modulemap @@ -0,0 +1,5 @@ +module CSQLiteExtensions { + header "carray.h" + header "csqlite_extensions.h" + export * +} diff --git a/Sources/CSQLite/percentile.c b/Sources/CSQLiteExtensions/percentile.c similarity index 100% rename from Sources/CSQLite/percentile.c rename to Sources/CSQLiteExtensions/percentile.c diff --git a/Sources/CSQLite/series.c b/Sources/CSQLiteExtensions/series.c similarity index 100% rename from Sources/CSQLite/series.c rename to Sources/CSQLiteExtensions/series.c diff --git a/Sources/CSQLite/shathree.c b/Sources/CSQLiteExtensions/shathree.c similarity index 100% rename from Sources/CSQLite/shathree.c rename to Sources/CSQLiteExtensions/shathree.c diff --git a/Sources/CSQLite/uuid.c b/Sources/CSQLiteExtensions/uuid.c similarity index 100% rename from Sources/CSQLite/uuid.c rename to Sources/CSQLiteExtensions/uuid.c diff --git a/Tests/CSQLiteTests/CSQLiteExtensionTests.swift b/Tests/CSQLiteExtensionsTests/CSQLiteExtensionsTests.swift similarity index 99% rename from Tests/CSQLiteTests/CSQLiteExtensionTests.swift rename to Tests/CSQLiteExtensionsTests/CSQLiteExtensionsTests.swift index f58bdbf..6bf6438 100644 --- a/Tests/CSQLiteTests/CSQLiteExtensionTests.swift +++ b/Tests/CSQLiteExtensionsTests/CSQLiteExtensionsTests.swift @@ -1,5 +1,5 @@ /* - ** 2021-06-08 + ** 2024-05-24 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: @@ -14,7 +14,7 @@ */ import XCTest -@testable import CSQLite +@testable import CSQLiteExtensions final class CSQLiteExtensionTests: XCTestCase { #if swift(<6.1) || OMIT_AUTOINIT