| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- /* build.gradle.kts/Open GoPro, Version 2.0 (C) Copyright 2021 GoPro, Inc. (http://gopro.com/OpenGoPro). */
- /* This copyright was auto-generated on Tue Feb 18 18:41:28 UTC 2025 */
- import com.vanniktech.maven.publish.SonatypeHost
- import org.jetbrains.dokka.base.DokkaBase
- import org.jetbrains.dokka.base.DokkaBaseConfiguration
- import org.jetbrains.kotlin.gradle.dsl.JvmTarget
- plugins {
- alias(libs.plugins.kotlinMultiplatform)
- alias(libs.plugins.androidLibrary)
- alias(libs.plugins.ksp)
- alias(libs.plugins.room)
- alias(libs.plugins.serialization)
- alias(libs.plugins.dokka)
- alias(libs.plugins.license)
- alias(libs.plugins.publish)
- alias(libs.plugins.format)
- }
- kotlin {
- androidTarget {
- compilerOptions { jvmTarget.set(JvmTarget.JVM_17) }
- publishLibraryVariants("release")
- }
- listOf(iosX64(), iosArm64(), iosSimulatorArm64()).forEach {
- it.binaries.framework {
- baseName = "openGoPro"
- isStatic = true
- }
- }
- sourceSets {
- // https://kotlinlang.org/docs/multiplatform-android-layout.html#move-source-files
- val commonTest by getting
- val androidInstrumentedTest by getting
- val androidUnitTest by getting
- commonMain.dependencies {
- // DI
- api(libs.koin.core)
- implementation(libs.koin.compose)
- implementation(libs.koin.compose.viewmodel)
- // Logging
- implementation(libs.kermit)
- // Dates
- api(libs.kotlinx.datetime)
- // Concurrency / Streams
- implementation(libs.kotlinx.coroutines)
- // Ktor - Http Stack
- implementation(libs.ktor.client.core)
- implementation(libs.ktor.client.logging)
- implementation(libs.ktor.client.negotiation)
- implementation(libs.ktor.client.auth)
- implementation(libs.ktor.json)
- // JSON serialization
- implementation(libs.kotlinx.serialization.json)
- // Kable
- implementation(libs.kable.core)
- implementation(libs.kable.exceptions)
- implementation(libs.khronicle)
- // Uuid
- implementation(libs.uuid)
- // Protobuf run-time
- implementation(libs.pbandk.runtime)
- // Version data structure
- implementation(libs.version)
- // Datetime
- implementation(libs.kotlinx.datetime)
- // Room
- implementation(libs.androidx.room.runtime)
- implementation(libs.sqlite.bundled)
- }
- commonTest.dependencies {
- implementation(libs.kotlin.test)
- implementation(libs.kotlinx.coroutines.test)
- implementation(libs.ktor.mock)
- implementation(libs.koin.test)
- }
- androidMain.dependencies {
- // DI
- implementation(libs.koin.android)
- implementation(libs.koin.androidx.compose)
- api(libs.ktor.client.okhttp)
- }
- appleMain.dependencies { api(libs.ktor.client.darwin) }
- }
- }
- android {
- namespace = "com.gopro.open_gopro"
- compileSdk = libs.versions.android.compileSdk.get().toInt()
- defaultConfig {
- minSdk = libs.versions.android.minSdk.get().toInt()
- testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_17
- targetCompatibility = JavaVersion.VERSION_17
- }
- }
- room { schemaDirectory("$projectDir/schemas") }
- dependencies {
- testImplementation(libs.junit)
- // https://touchlab.co/understanding-and-configuring-your-kmm-test-suite
- androidTestImplementation(libs.kotlin.test)
- androidTestImplementation(libs.kotlinx.coroutines.test)
- androidTestImplementation(libs.core.ktx)
- androidTestImplementation(libs.androidx.test.junit)
- androidTestImplementation(libs.androidx.junit.ktx)
- androidTestImplementation(libs.androidx.espresso.core)
- androidTestImplementation(libs.mockito.android)
- androidTestImplementation(libs.koin.test.junit4)
- add("kspAndroid", libs.androidx.room.compiler)
- add("kspIosSimulatorArm64", libs.androidx.room.compiler)
- add("kspIosX64", libs.androidx.room.compiler)
- add("kspIosArm64", libs.androidx.room.compiler)
- }
- buildscript { dependencies { classpath(libs.dokka.base) } }
- tasks.dokkaHtml {
- pluginConfiguration<DokkaBase, DokkaBaseConfiguration> {
- customAssets =
- listOf(
- file("../docs/assets/logo-icon.svg"),
- // file("../docs/assets/my-style.css")
- )
- }
- dokkaSourceSets {
- configureEach {
- moduleName.set("Open GoPro SDK")
- includes.from("../docs/sdk_documentation.md")
- // suppressInheritedMembers = true
- // documentedVisibilities.set(
- // setOf(
- // DokkaConfiguration.Visibility.PUBLIC,
- // DokkaConfiguration.Visibility.PROTECTED
- // )
- // )
- }
- }
- }
- licenseReport {
- // Generate reports
- generateCsvReport = true
- generateHtmlReport = true
- generateJsonReport = false
- generateTextReport = true
- // Copy reports - These options are ignored for Java projects
- copyCsvReportToAssets = false
- copyHtmlReportToAssets = false
- copyJsonReportToAssets = false
- copyTextReportToAssets = false
- useVariantSpecificAssetDirs = false
- // Ignore licenses for certain artifact patterns
- // ignoredPatterns = []
- // Show versions in the report - default is false
- showVersions = true
- }
- tasks.register<Copy>("copyLicenseReport") {
- val reportDir = layout.buildDirectory.dir("reports/licenses")
- group = "reporting"
- description = "Copy Generated License Reports to top level of repo"
- println("Copying licenses from $reportDir to $rootDir")
- project.logger.lifecycle("Copying licenses from $reportDir to $rootDir")
- from(reportDir)
- into(rootDir)
- dependsOn(tasks.getByName("licenseReleaseReport"))
- }
- mavenPublishing {
- // Define coordinates for the published artifact
- coordinates(
- groupId = "io.github.tcamise-gpsw", // TODO move to GoPro once possible
- artifactId = "open-gopro",
- version = "0.1.0")
- // Configure POM metadata for the published artifact
- pom {
- name.set("Open GoPro KMP SDK")
- description.set(
- "n interface for the user to exercise the Open GoPro Bluetooth Low Energy (BLE) and Wi-Fi / USB HTTP API's")
- inceptionYear.set("2024")
- url.set("tcamise-gpsw")
- licenses {
- license {
- name.set("MIT")
- url.set("https://opensource.org/licenses/MIT")
- }
- }
- // Specify developers information
- developers {
- developer {
- id.set("tcamise-gpsw")
- name.set("Tim Camise")
- email.set("tcamise@gopro.com")
- }
- }
- // Specify SCM information
- scm { url.set("https://github.com/gopro/OpenGoPro") }
- }
- // Configure publishing to Maven Central
- publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
- // Enable GPG signing for all publications
- signAllPublications()
- }
|