diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 38d623bb..a618511c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,13 +16,13 @@ jobs: matrix: include: - os: macos-latest - targets: iosSimulatorArm64Test macosArm64Test watchosSimulatorArm64Test jvmTest + targets: iosSimulatorArm64Test macosArm64Test watchosSimulatorArm64Test tvosSimulatorArm64Test jvmTest - os: ubuntu-latest targets: testDebugUnitTest testReleaseUnitTest jvmTest lintKotlin - os: windows-latest targets: jvmTest runs-on: ${{ matrix.os }} - timeout-minutes: 15 + timeout-minutes: 20 steps: - uses: actions/checkout@v4 diff --git a/core/src/tvosMain/kotlin/com/powersync/DatabaseDriverFactory.tvos.kt b/core/src/tvosMain/kotlin/com/powersync/DatabaseDriverFactory.tvos.kt new file mode 100644 index 00000000..2f2c759c --- /dev/null +++ b/core/src/tvosMain/kotlin/com/powersync/DatabaseDriverFactory.tvos.kt @@ -0,0 +1,7 @@ +package com.powersync + +import co.touchlab.sqliter.DatabaseConnection + +internal actual fun DatabaseConnection.loadPowerSyncSqliteCoreExtension() { + loadPowerSyncSqliteCoreExtensionDynamically() +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3104e356..c91b3aae 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,7 +17,7 @@ kotlinx-datetime = "0.7.1" kotlinx-io = "0.8.0" ktor = "3.2.3" uuid = "0.8.4" -powersync-core = "0.4.2" +powersync-core = "0.4.4" sqlite-jdbc = "3.50.3.0" sqliter = "1.3.3" turbine = "1.2.1" diff --git a/plugins/build-plugin/src/main/kotlin/SharedBuildPlugin.kt b/plugins/build-plugin/src/main/kotlin/SharedBuildPlugin.kt index 7cf32739..7905d11f 100644 --- a/plugins/build-plugin/src/main/kotlin/SharedBuildPlugin.kt +++ b/plugins/build-plugin/src/main/kotlin/SharedBuildPlugin.kt @@ -62,6 +62,7 @@ class SharedBuildPlugin : Plugin { // We're testing on simulators Family.IOS -> "ios-arm64_x86_64-simulator" Family.WATCHOS -> "watchos-arm64_x86_64-simulator" + Family.TVOS -> "tvos-arm64_x86_64-simulator" else -> return@configureEach } diff --git a/plugins/build-plugin/src/main/kotlin/com/powersync/compile/ClangCompile.kt b/plugins/build-plugin/src/main/kotlin/com/powersync/compile/ClangCompile.kt index 749def36..e51df1bc 100644 --- a/plugins/build-plugin/src/main/kotlin/com/powersync/compile/ClangCompile.kt +++ b/plugins/build-plugin/src/main/kotlin/com/powersync/compile/ClangCompile.kt @@ -68,6 +68,9 @@ abstract class ClangCompile: DefaultTask() { KonanTarget.WATCHOS_ARM64 -> "arm64_32-apple-watchos" to WATCHOS_SDK KonanTarget.WATCHOS_SIMULATOR_ARM64 -> "aarch64-apple-watchos-simulator" to WATCHOS_SIMULATOR_SDK KonanTarget.WATCHOS_X64 -> "x86_64-apple-watchos-simulator" to WATCHOS_SIMULATOR_SDK + KonanTarget.TVOS_ARM64 -> "aarch64-apple-tvos" to TVOS_SDK + KonanTarget.TVOS_X64 -> "x86_64-apple-tvos-simulator" to TVOS_SIMULATOR_SDK + KonanTarget.TVOS_SIMULATOR_ARM64 -> "aarch64-apple-tvos-simulator" to TVOS_SIMULATOR_SDK else -> error("Unexpected target $target") } @@ -104,6 +107,8 @@ abstract class ClangCompile: DefaultTask() { const val WATCHOS_SIMULATOR_SDK = "Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/" const val IOS_SDK = "Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk" const val IOS_SIMULATOR_SDK = "Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk" + const val TVOS_SDK = "Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk" + const val TVOS_SIMULATOR_SDK = "Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk" const val MACOS_SDK = "Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/" } } diff --git a/plugins/sonatype/src/main/kotlin/com/powersync/plugins/utils/KmpUtils.kt b/plugins/sonatype/src/main/kotlin/com/powersync/plugins/utils/KmpUtils.kt index 416b79f5..2e7f145e 100644 --- a/plugins/sonatype/src/main/kotlin/com/powersync/plugins/utils/KmpUtils.kt +++ b/plugins/sonatype/src/main/kotlin/com/powersync/plugins/utils/KmpUtils.kt @@ -45,6 +45,10 @@ public fun KotlinTargetContainerWithPresetFunctions.powersyncTargets( macosX64() macosArm64() + tvosSimulatorArm64() + tvosX64() + tvosArm64() + if (watchOS) { watchosDeviceArm64() // aarch64-apple-watchos watchosArm64() // arm64_32-apple-watchos