@@ -6,7 +6,9 @@ import org.gradle.internal.os.OperatingSystem
66import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
77import org.jetbrains.kotlin.gradle.targets.jvm.tasks.KotlinJvmTest
88import org.jetbrains.kotlin.gradle.tasks.KotlinTest
9-
9+ import java.nio.file.Path
10+ import kotlin.io.path.createDirectories
11+ import kotlin.io.path.writeText
1012
1113plugins {
1214 alias(libs.plugins.kotlinMultiplatform)
@@ -125,6 +127,32 @@ val moveJDBCJNIFiles by tasks.registering(Copy::class) {
125127 into(jniLibsFolder) // Move everything into the base jniLibs folder
126128}
127129
130+ val generateVersionConstant by tasks.registering {
131+ val target = project.layout.buildDirectory.dir(" generated/constants" )
132+ val packageName = " com.powersync.build"
133+
134+ outputs.dir(target)
135+ val currentVersion = version.toString()
136+
137+ doLast {
138+ val dir = target.get().asFile
139+ dir.mkdir()
140+ val rootPath = dir.toPath()
141+
142+ val source = """
143+ package $packageName
144+
145+ internal const val LIBRARY_VERSION: String = "$currentVersion "
146+
147+ """ .trimIndent()
148+
149+ val packageRoot = packageName.split(' .' ).fold(rootPath, Path ::resolve)
150+ packageRoot.createDirectories()
151+
152+ packageRoot.resolve(" BuildConstants.kt" ).writeText(source)
153+ }
154+ }
155+
128156kotlin {
129157 powersyncTargets()
130158
@@ -134,17 +162,6 @@ kotlin {
134162 compilerOptions.freeCompilerArgs.add(" -Xexport-kdoc" )
135163 }
136164 }
137-
138- /*
139- If we ever need macOS support:
140- {
141- binaries.withType<TestExecutable>().configureEach {
142- linkTaskProvider.dependsOn(downloadPowersyncDesktopBinaries)
143- linkerOpts("-lpowersync")
144- linkerOpts("-L", binariesFolder.map { it.dir("powersync") }.get().asFile.path)
145- }
146- }
147- */
148165 }
149166
150167 explicitApi()
@@ -168,21 +185,27 @@ kotlin {
168185 }
169186 }
170187
171- commonMain.dependencies {
172- implementation(libs.uuid)
173- implementation(libs.kotlin.stdlib)
174- implementation(libs.ktor.client.core)
175- implementation(libs.ktor.client.contentnegotiation)
176- implementation(libs.ktor.serialization.json)
177- implementation(libs.kotlinx.io)
178- implementation(libs.rsocket.core)
179- implementation(libs.rsocket.transport.websocket)
180- implementation(libs.kotlinx.coroutines.core)
181- implementation(libs.kotlinx.datetime)
182- implementation(libs.stately.concurrency)
183- implementation(libs.configuration.annotations)
184- api(projects.persistence)
185- api(libs.kermit)
188+ commonMain.configure {
189+ kotlin {
190+ srcDir(generateVersionConstant)
191+ }
192+
193+ dependencies {
194+ implementation(libs.uuid)
195+ implementation(libs.kotlin.stdlib)
196+ implementation(libs.ktor.client.core)
197+ implementation(libs.ktor.client.contentnegotiation)
198+ implementation(libs.ktor.serialization.json)
199+ implementation(libs.kotlinx.io)
200+ implementation(libs.rsocket.core)
201+ implementation(libs.rsocket.transport.websocket)
202+ implementation(libs.kotlinx.coroutines.core)
203+ implementation(libs.kotlinx.datetime)
204+ implementation(libs.stately.concurrency)
205+ implementation(libs.configuration.annotations)
206+ api(projects.persistence)
207+ api(libs.kermit)
208+ }
186209 }
187210
188211 androidMain {
0 commit comments