diff --git a/buildPlugin/src/main/kotlin/com/birbit/ksqlite/build/CollectNativeLibrariesTask.kt b/buildPlugin/src/main/kotlin/com/birbit/ksqlite/build/CollectNativeLibrariesTask.kt index 2cc9e56..1012620 100644 --- a/buildPlugin/src/main/kotlin/com/birbit/ksqlite/build/CollectNativeLibrariesTask.kt +++ b/buildPlugin/src/main/kotlin/com/birbit/ksqlite/build/CollectNativeLibrariesTask.kt @@ -54,7 +54,14 @@ data class SoInput( } } Family.MINGW -> "windows_${konanTarget.architecture.bitness}" - Family.OSX -> "osx_${konanTarget.architecture.bitness}" + Family.OSX -> { + when (konanTarget.architecture){ + Architecture.ARM64 ->"osx_arm64" + Architecture.X64 -> "osx_64" + else -> error("Unsupported architecture for mac: ${konanTarget.architecture}") + } + + } Family.ANDROID -> when (konanTarget.architecture) { Architecture.X86 -> "x86" Architecture.X64 -> "x86_64" diff --git a/buildPlugin/src/main/kotlin/com/birbit/ksqlite/build/internal/SqliteCompilation.kt b/buildPlugin/src/main/kotlin/com/birbit/ksqlite/build/internal/SqliteCompilation.kt index 50a04c1..a39f3d3 100644 --- a/buildPlugin/src/main/kotlin/com/birbit/ksqlite/build/internal/SqliteCompilation.kt +++ b/buildPlugin/src/main/kotlin/com/birbit/ksqlite/build/internal/SqliteCompilation.kt @@ -227,5 +227,5 @@ internal object SqliteCompilation { } } - private const val BASE_URL = "https://www.sqlite.org/2020/sqlite-amalgamation-" + private const val BASE_URL = "https://www.sqlite.org/2022/sqlite-amalgamation-" } diff --git a/gradle.properties b/gradle.properties index 4b0caa5..c44b8b8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,3 +26,4 @@ kotlin.mpp.stability.nowarn=true # We can use this only in non windows platforms because jint type changes. This is also we don't # build anything but windows on windows. kotlin.mpp.enableCInteropCommonization=true +kotlin.native.binary.memoryModel=experimental diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cbefc90..c228b0e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,11 +2,11 @@ androidGradlePlugin="7.2.0" spotless="6.0.5" ktlint="10.2.0" -kotlin="1.6.21" +kotlin="1.7.0" [libraries] androidGradlePlugin = { module = "com.android.tools.build:gradle", version.ref = "androidGradlePlugin"} -nativeLibLoader = { module = "org.scijava:native-lib-loader", version = "2.3.4" } +nativeLibLoader = { module = "org.scijava:native-lib-loader", version = "2.4.0" } kotlinPoet = { module = "com.squareup:kotlinpoet", version = "1.5.0" } androidxTestJunit = { module = "androidx.test.ext:junit", version = "1.1.1" } androidxTestRunner = { module = "androidx.test:runner", version = "1.2.0" } diff --git a/sqlitebindings/build.gradle.kts b/sqlitebindings/build.gradle.kts index 6bb5dae..416975b 100644 --- a/sqlitebindings/build.gradle.kts +++ b/sqlitebindings/build.gradle.kts @@ -44,7 +44,7 @@ ksqliteBuild { android() includeSqlite( SqliteCompilationConfig( - version = "3.31.1" + version = "3.38.5" ) ) publish() @@ -53,35 +53,30 @@ ksqliteBuild { kotlin { - val combinedSharedLibsFolder = project.layout.buildDirectory.dir("combinedSharedLibs") val combineSharedLibsTask = com.birbit.ksqlite.build.CollectNativeLibrariesTask .create( project = project, namePrefix = "sqlite3jni", - outFolder = combinedSharedLibsFolder, + outFolder = project.layout.buildDirectory.dir("combinedSharedLibs"), forAndroid = false ) - val combinedAndroidSharedLibsFolder = project.layout.buildDirectory.dir("combinedAndroidSharedLibs") val combineAndroidSharedLibsTask = com.birbit.ksqlite.build.CollectNativeLibrariesTask .create( project = project, namePrefix = "sqlite3jni", - outFolder = combinedAndroidSharedLibsFolder, + outFolder = project.layout.buildDirectory.dir("combinedAndroidSharedLibs"), forAndroid = true ) project.android.sourceSets { this["main"].jniLibs { - srcDir(combinedAndroidSharedLibsFolder) + srcDir(combineAndroidSharedLibsTask.map { + it.outputDir + }) } } - val androidExt = project.extensions.findByType(com.android.build.gradle.LibraryExtension::class) - androidExt!!.libraryVariants.all { - this.javaCompileProvider.dependsOn(combineAndroidSharedLibsTask) - } - jvm().compilations["main"].compileKotlinTask.dependsOn(combineSharedLibsTask) sourceSets { val commonMain by getting { dependencies { @@ -135,7 +130,9 @@ kotlin { dependencies { implementation(libs.nativeLibLoader) } - resources.srcDir(combinedSharedLibsFolder) + resources.srcDir(combineSharedLibsTask.map { + it.outputDir + }) } // JVM-specific tests and their dependencies: jvm().compilations["test"].defaultSourceSet { diff --git a/sqlitebindings/src/nativeInterop/cinterop/sqlite.def b/sqlitebindings/src/nativeInterop/cinterop/sqlite.def index 5a4215e..7846e94 100644 --- a/sqlitebindings/src/nativeInterop/cinterop/sqlite.def +++ b/sqlitebindings/src/nativeInterop/cinterop/sqlite.def @@ -7,4 +7,7 @@ staticLibraries=libsqlite3.a #libraryPaths=sqlite #libraryPaths = /home/yboyar/src/kotlin-jni-test/build/sqlite-compilation/output/linuxX64 linkerOpts.linux_x64 = -lpthread -ldl -linkerOpts.macos_x64 = -lpthread -ldl \ No newline at end of file +linkerOpts.macos_x64 = -lpthread -ldl +# TODO we may want to copy all opts from sqlite compilation to here for consistency. +# after all, cintrop looks into this file, not how we compile sqlite. +compilerOpts = -DSQLITE_ENABLE_NORMALIZE=1 \ No newline at end of file