Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (C) 2023 The Android Open Source Project |
| 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. |
| 15 | */ |
| 16 | |
Tiem Song | ee0da74 | 2024-01-03 14:08:46 -0800 | [diff] [blame] | 17 | /** |
| 18 | * This file was created using the `create_project.py` script located in the |
| 19 | * `<AndroidX root>/development/project-creator` directory. |
| 20 | * |
| 21 | * Please use that script when creating a new project, rather than copying an existing project and |
| 22 | * modifying its settings. |
| 23 | */ |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 24 | import androidx.build.AndroidXConfig |
Daniel Santiago Rivera | 6e1e6e1 | 2024-12-16 22:13:20 -0500 | [diff] [blame] | 25 | import androidx.build.KotlinTarget |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 26 | import androidx.build.PlatformIdentifier |
Yigit Boyar | 20f1ff4 | 2024-01-30 16:23:52 +0000 | [diff] [blame] | 27 | import androidx.build.ProjectLayoutType |
Omar Ismail | 86e6606 | 2024-05-03 16:10:50 +0100 | [diff] [blame] | 28 | import androidx.build.LibraryType |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 29 | import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType |
| 30 | import org.jetbrains.kotlin.konan.target.Family |
| 31 | import org.jetbrains.kotlin.konan.target.KonanTarget |
| 32 | |
| 33 | plugins { |
| 34 | id("AndroidXPlugin") |
| 35 | id("com.android.library") |
| 36 | } |
| 37 | |
Yigit Boyar | 20f1ff4 | 2024-01-30 16:23:52 +0000 | [diff] [blame] | 38 | apply(from: "PrepareSqliteSourcesTask.groovy") |
| 39 | |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 40 | // List of flags we use to compile SQLite. |
| 41 | // See: https://www.sqlite.org/compile.html |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 42 | def SQLITE_COMPILE_FLAGS = [ |
| 43 | "-DHAVE_USLEEP=1", |
Daniel Santiago Rivera | 7324def | 2024-06-07 12:32:08 -0400 | [diff] [blame] | 44 | "-DSQLITE_DEFAULT_AUTOVACUUM=1", |
Daniel Santiago Rivera | 2617aa1 | 2023-12-22 11:56:10 -0500 | [diff] [blame] | 45 | "-DSQLITE_DEFAULT_MEMSTATUS=0", |
Daniel Santiago Rivera | 7324def | 2024-06-07 12:32:08 -0400 | [diff] [blame] | 46 | "-DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1", |
| 47 | "-DSQLITE_ENABLE_COLUMN_METADATA", |
| 48 | "-DSQLITE_ENABLE_FTS3", |
| 49 | "-DSQLITE_ENABLE_FTS3_PARENTHESIS", |
| 50 | "-DSQLITE_ENABLE_FTS4", |
| 51 | "-DSQLITE_ENABLE_FTS5", |
| 52 | "-DSQLITE_ENABLE_JSON1", |
| 53 | "-DSQLITE_ENABLE_NORMALIZE", |
| 54 | "-DSQLITE_ENABLE_RTREE", |
| 55 | "-DSQLITE_ENABLE_STAT4", |
| 56 | "-DSQLITE_HAVE_ISNAN", |
| 57 | "-DSQLITE_OMIT_BUILTIN_TEST", |
| 58 | "-DSQLITE_OMIT_DEPRECATED", |
| 59 | "-DSQLITE_OMIT_PROGRESS_CALLBACK", |
| 60 | "-DSQLITE_OMIT_SHARED_CACHE", |
| 61 | "-DSQLITE_SECURE_DELETE", |
| 62 | "-DSQLITE_TEMP_STORE=3", |
Daniel Santiago Rivera | 2617aa1 | 2023-12-22 11:56:10 -0500 | [diff] [blame] | 63 | "-DSQLITE_THREADSAFE=2", |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 64 | ] |
| 65 | |
Yigit Boyar | 20f1ff4 | 2024-01-30 16:23:52 +0000 | [diff] [blame] | 66 | // see PrepareSqliteSourcesTask.groovy for implementation details of the register method |
| 67 | // This task prepares a directory to build sqlite and bundle it with the artifact. |
| 68 | // SQLite is in public domain: https://www.sqlite.org/copyright.html. |
| 69 | // Including it inside the library implies relicencing it to Apache 2.0. |
| 70 | def prepareSqliteSourcesTask = registerPrepareSqliteSourcesTask( |
| 71 | project, // project |
| 72 | "prepareSqliteSourcesTask" // task name |
| 73 | ) { |
Daniel Santiago Rivera | 3fdad75 | 2024-03-14 11:31:48 -0400 | [diff] [blame] | 74 | it.sqliteVersion.set("3.46.0") |
| 75 | it.sqliteReleaseYear.set(2024) |
Yigit Boyar | 20f1ff4 | 2024-01-30 16:23:52 +0000 | [diff] [blame] | 76 | it.destinationDirectory.set(project.layout.buildDirectory.dir("sqlite3/src")) |
| 77 | if (!ProjectLayoutType.isPlayground(project)) { |
| 78 | it.sqlitePrebuiltsDirectory.set( |
Daniel Santiago Rivera | 462028b | 2024-03-14 11:30:31 -0400 | [diff] [blame] | 79 | new File(AndroidXConfig.getExternalProjectPath(project), "sqlite/src") |
Yigit Boyar | 20f1ff4 | 2024-01-30 16:23:52 +0000 | [diff] [blame] | 80 | ) |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 81 | } |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 82 | } |
| 83 | |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 84 | configurations { |
Yigit Boyar | 20f1ff4 | 2024-01-30 16:23:52 +0000 | [diff] [blame] | 85 | // Configuration for producing a shareable archive file of compiled SQLite. Only the Linux X64 |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 86 | // target of SQLite is produced hence the explicit name and attributes |
| 87 | linuxSharedArchive { |
| 88 | canBeConsumed = true |
| 89 | canBeResolved = false |
| 90 | attributes { |
| 91 | attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.NATIVE_LINK)) |
| 92 | } |
| 93 | } |
Yigit Boyar | 20f1ff4 | 2024-01-30 16:23:52 +0000 | [diff] [blame] | 94 | // Configuration for producing a shareable directory that includes SQLite amalgamation sources. |
| 95 | sqliteSources { |
| 96 | canBeConsumed = true |
| 97 | canBeResolved = false |
| 98 | attributes { |
| 99 | attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, "sqlite-amalgamation")) |
| 100 | } |
| 101 | } |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 102 | } |
| 103 | |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 104 | androidXMultiplatform { |
| 105 | // List of targets for native compilation that are needed for JVM / ART tests. |
| 106 | // Note that even if the native KMP targets are disabled, we still need to compile the C |
| 107 | // code for these targets as they are used in JVM / ART tests (via JNI). |
| 108 | def requiredNativeTargets = [ |
| 109 | KonanTarget.ANDROID_ARM32, |
| 110 | KonanTarget.ANDROID_ARM64, |
| 111 | KonanTarget.ANDROID_X64, |
| 112 | KonanTarget.ANDROID_X86, |
| 113 | KonanTarget.MACOS_ARM64, |
| 114 | KonanTarget.MACOS_X64, |
Daniel Santiago Rivera | 25b9260 | 2024-04-17 22:42:32 -0400 | [diff] [blame] | 115 | KonanTarget.MINGW_X64, |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 116 | KonanTarget.LINUX_X64, |
Daniel Santiago Rivera | 23f1ec6 | 2024-08-08 11:24:53 +0100 | [diff] [blame] | 117 | KonanTarget.LINUX_ARM64, |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 118 | ].collect { it.INSTANCE } // Use INSTANCE to get object class instance from kotlin |
Daniel Santiago Rivera | 00ffddf | 2023-12-12 20:50:35 -0500 | [diff] [blame] | 119 | |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 120 | // Define C compilation of SQLite (sqlite3.c) |
Daniel Santiago Rivera | 00ffddf | 2023-12-12 20:50:35 -0500 | [diff] [blame] | 121 | def sqliteCompilation = createNativeCompilation("androidXBundledSqlite") { |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 122 | configureEachTarget { nativeCompilation -> |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 123 | // add SQLite header |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 124 | nativeCompilation.includes.from( |
Yigit Boyar | 20f1ff4 | 2024-01-30 16:23:52 +0000 | [diff] [blame] | 125 | prepareSqliteSourcesTask.map { it.destinationDirectory } |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 126 | ) |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 127 | // add SQLite sources |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 128 | nativeCompilation.sources.from( |
Yigit Boyar | 20f1ff4 | 2024-01-30 16:23:52 +0000 | [diff] [blame] | 129 | prepareSqliteSourcesTask.map { |
| 130 | fileTree(it.destinationDirectory).matching { include "**/*.c" } |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 131 | } |
| 132 | ) |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 133 | // add SQLite compile flags |
| 134 | nativeCompilation.freeArgs.addAll(SQLITE_COMPILE_FLAGS) |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 135 | if (nativeCompilation.konanTarget.family == Family.ANDROID) { |
| 136 | nativeCompilation.freeArgs.add("-Oz") // optimize for size |
| 137 | } else { |
| 138 | nativeCompilation.freeArgs.add("-O3") // optimize for speed |
| 139 | } |
| 140 | } |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 141 | configureTargets(requiredNativeTargets) |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 142 | } |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 143 | |
| 144 | // add SQLite compilation output as an artifact of a producer configuration |
Fred Sladkey | d5f3dd3 | 2024-01-23 13:50:51 -0500 | [diff] [blame] | 145 | artifacts.add( |
| 146 | "linuxSharedArchive", |
| 147 | sqliteCompilation.sharedArchiveOutputFor(KonanTarget.LINUX_X64.INSTANCE) |
| 148 | ) |
Yigit Boyar | 20f1ff4 | 2024-01-30 16:23:52 +0000 | [diff] [blame] | 149 | artifacts.add( |
| 150 | "sqliteSources", |
| 151 | prepareSqliteSourcesTask.map { it.destinationDirectory } |
| 152 | ) |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 153 | |
Daniel Santiago Rivera | ce56aa6 | 2024-03-15 13:07:33 -0400 | [diff] [blame] | 154 | // Define C++ compilation of JNI |
Daniel Santiago Rivera | 25b9260 | 2024-04-17 22:42:32 -0400 | [diff] [blame] | 155 | def jvmArtJniImplementation = createNativeCompilation("sqliteJni") { |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 156 | configureEachTarget { nativeCompilation -> |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 157 | // add JNI headers as sources |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 158 | nativeCompilation.addJniHeaders() |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 159 | // add SQLite headers |
| 160 | nativeCompilation.includes.from( |
Yigit Boyar | 20f1ff4 | 2024-01-30 16:23:52 +0000 | [diff] [blame] | 161 | prepareSqliteSourcesTask.map {it.destinationDirectory } |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 162 | ) |
| 163 | // add our JNI sources, i.e. the SQLite bindings |
| 164 | nativeCompilation.sources.from( |
Daniel Santiago Rivera | bad7ea6 | 2024-05-31 10:04:55 -0400 | [diff] [blame] | 165 | fileTree("src/jvmAndroidMain/jni").matching { include "**/*.cpp" } |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 166 | ) |
Daniel Santiago Rivera | 823d19732 | 2024-01-02 12:56:53 -0500 | [diff] [blame] | 167 | // statically include the output of SQLite compilation |
| 168 | nativeCompilation.include(sqliteCompilation) |
Daniel Santiago Rivera | cf12157 | 2024-05-29 11:14:42 -0400 | [diff] [blame] | 169 | if (nativeCompilation.konanTarget.family == Family.ANDROID) { |
| 170 | // b/341639198: Link to Android's Atomic lib, important for older ARM devices |
| 171 | nativeCompilation.linkerArgs.add("-latomic") |
| 172 | } |
Daniel Santiago Rivera | d4dae96 | 2023-12-14 14:33:32 -0500 | [diff] [blame] | 173 | if (nativeCompilation.konanTarget.family == Family.OSX) { |
| 174 | // KT-57848 |
| 175 | nativeCompilation.freeArgs.addAll("-Dat_quick_exit=atexit", "-Dquick_exit=exit") |
| 176 | } |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 177 | } |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 178 | configureTargets(requiredNativeTargets) |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 179 | } |
| 180 | |
| 181 | android() { |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 182 | addNativeLibrariesToJniLibs(it, jvmArtJniImplementation) |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 183 | } |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 184 | ios() |
| 185 | jvm() { |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 186 | addNativeLibrariesToResources(it, jvmArtJniImplementation) |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 187 | } |
| 188 | linux() |
| 189 | mac() |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 190 | |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 191 | defaultPlatform(PlatformIdentifier.ANDROID) |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 192 | |
Omar Ismail | ce79d6f | 2024-05-14 16:05:13 +0100 | [diff] [blame] | 193 | targets.configureEach { target -> |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 194 | if (target.platformType == KotlinPlatformType.native) { |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 195 | // Configure this native target to the SQLite compilation. |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 196 | // This list likely only adds the iOS targets when they are enabled as the desktop |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 197 | // targets are already part of the required targets to run JVM / ART tests. |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 198 | sqliteCompilation.configureTarget(target.konanTarget) |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 199 | // Create cinterop code for this native target from the SQLite compilation. |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 200 | createCinterop(target, sqliteCompilation) |
| 201 | } |
| 202 | } |
| 203 | |
| 204 | sourceSets { |
| 205 | // commonMain |
| 206 | // ┌───────────────────────────────────────────┐ |
| 207 | // ▼ ▼ |
Daniel Santiago Rivera | bad7ea6 | 2024-05-31 10:04:55 -0400 | [diff] [blame] | 208 | // jvmAndroidMain nativeMain |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 209 | // ┌────────────────┐ ┌──────────┬────────────┐ |
| 210 | // │ │ │ │ │ |
| 211 | // ▼ ▼ ▼ ▼ ▼ |
| 212 | // jvmMain androidMain macMain linuxMain iosMain |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 213 | commonMain { |
| 214 | dependencies { |
| 215 | implementation(libs.kotlinStdlib) |
Daniel Santiago Rivera | 00ffddf | 2023-12-12 20:50:35 -0500 | [diff] [blame] | 216 | api(project(":sqlite:sqlite")) |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 217 | } |
| 218 | } |
Daniel Santiago Rivera | bad7ea6 | 2024-05-31 10:04:55 -0400 | [diff] [blame] | 219 | jvmAndroidMain { |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 220 | dependsOn(commonMain) |
| 221 | } |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 222 | jvmMain { |
Daniel Santiago Rivera | bad7ea6 | 2024-05-31 10:04:55 -0400 | [diff] [blame] | 223 | dependsOn(jvmAndroidMain) |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 224 | } |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 225 | androidMain { |
Daniel Santiago Rivera | bad7ea6 | 2024-05-31 10:04:55 -0400 | [diff] [blame] | 226 | dependsOn(jvmAndroidMain) |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 227 | } |
Fred Sladkey | d5f3dd3 | 2024-01-23 13:50:51 -0500 | [diff] [blame] | 228 | nativeMain { |
| 229 | dependsOn(commonMain) |
| 230 | dependencies { |
| 231 | implementation(project(":sqlite:sqlite-framework")) |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 232 | } |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 233 | } |
Omar Ismail | ce79d6f | 2024-05-14 16:05:13 +0100 | [diff] [blame] | 234 | targets.configureEach { target -> |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 235 | if (target.platformType == KotlinPlatformType.native) { |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 236 | target.compilations["main"].defaultSourceSet { |
Daniel Santiago Rivera | 00ffddf | 2023-12-12 20:50:35 -0500 | [diff] [blame] | 237 | dependsOn(nativeMain) |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 238 | } |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 239 | } |
| 240 | } |
| 241 | } |
| 242 | } |
| 243 | |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 244 | android { |
Aurimas Liutikas | 7795282 | 2024-12-04 18:00:17 -0800 | [diff] [blame] | 245 | namespace = "androidx.sqlite.driver.bundled" |
Daniel Santiago Rivera | 7358b51 | 2023-11-16 20:35:59 -0500 | [diff] [blame] | 246 | } |
| 247 | |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 248 | androidx { |
Daniel Santiago Rivera | 00ffddf | 2023-12-12 20:50:35 -0500 | [diff] [blame] | 249 | name = "SQLite Bundled Integration" |
Omar Ismail | 86e6606 | 2024-05-03 16:10:50 +0100 | [diff] [blame] | 250 | type = LibraryType.PUBLISHED_LIBRARY |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 251 | inceptionYear = "2023" |
Daniel Santiago Rivera | 00ffddf | 2023-12-12 20:50:35 -0500 | [diff] [blame] | 252 | description = "The implementation of SQLite library using the bundled SQLite." |
Daniel Santiago Rivera | 6e1e6e1 | 2024-12-16 22:13:20 -0500 | [diff] [blame] | 253 | kotlinTarget = KotlinTarget.KOTLIN_2_0 |
Yigit Boyar | b87ae80 | 2023-10-25 08:33:25 -0700 | [diff] [blame] | 254 | } |