buildSrc/src/main/kotlin/AndroidJavaVersion.kt
author Da Risk <da_risk@geekorum.com>
Tue, 22 Apr 2025 19:01:42 -0400
changeset 42 d59fc19f19fa
parent 34 ce299aacc068
permissions -rw-r--r--
ui:material3: convert to kotlin-multiplatform
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
     1
/*
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
     2
 * AboutOss is a utility library to retrieve and display
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
     3
 * opensource licenses in Android applications.
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
     4
 *
34
ce299aacc068 build: update license headers
Da Risk <da_risk@geekorum.com>
parents: 22
diff changeset
     5
 * Copyright (C) 2023-2025 by Frederic-Charles Barthelery.
0
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
     6
 *
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
     7
 * This file is part of AboutOss.
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
     8
 *
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
     9
 * AboutOss is free software: you can redistribute it and/or modify
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    10
 * it under the terms of the GNU General Public License as published by
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    11
 * the Free Software Foundation, either version 3 of the License, or
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    12
 * (at your option) any later version.
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    13
 *
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    14
 * AboutOss is distributed in the hope that it will be useful,
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    17
 * GNU General Public License for more details.
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    18
 *
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    19
 * You should have received a copy of the GNU General Public License
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    20
 * along with AboutOss.  If not, see <http://www.gnu.org/licenses/>.
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    21
 */
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    22
package com.geekorum.build
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    23
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    24
import com.android.build.api.dsl.CommonExtension
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    25
import com.android.build.api.dsl.DefaultConfig
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    26
import com.android.build.gradle.BaseExtension
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    27
import org.gradle.api.JavaVersion
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    28
import org.gradle.api.Project
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    29
import org.gradle.api.plugins.ExtensionAware
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    30
import org.gradle.kotlin.dsl.dependencies
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    31
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    32
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    33
/**
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    34
 * Configure java version compile options based on minSdkVersion value
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    35
 */
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    36
@Suppress("UNCHECKED_CAST")
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    37
fun BaseExtension.configureJavaVersion() {
22
d0190e5504a6 build: update to agp 8.9.0
Da Risk <da_risk@geekorum.com>
parents: 0
diff changeset
    38
    (this as CommonExtension<*, *, DefaultConfig, *, *, *>).configureJavaVersion()
0
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    39
}
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    40
22
d0190e5504a6 build: update to agp 8.9.0
Da Risk <da_risk@geekorum.com>
parents: 0
diff changeset
    41
fun CommonExtension<*, *, DefaultConfig, *, *, *>.configureJavaVersion() {
0
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    42
    val api = defaultConfig.minSdk ?: 1
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    43
    val version = when {
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    44
        api >= 30 -> JavaVersion.VERSION_11
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    45
        api >= 24 -> JavaVersion.VERSION_1_8
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    46
        api >= 19 -> JavaVersion.VERSION_1_7
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    47
        else -> JavaVersion.VERSION_1_6
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    48
    }
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    49
    compileOptions {
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    50
        sourceCompatibility = version
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    51
        targetCompatibility = version
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    52
    }
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    53
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    54
    (this as ExtensionAware).extensions.findByType(KotlinJvmOptions::class.java)?.apply {
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    55
        if (version >= JavaVersion.VERSION_1_8) {
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    56
            jvmTarget = "1.8"
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    57
        }
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    58
    }
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    59
}
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    60
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    61
/**
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    62
 * Add missing annotation processor dependencies to build on Java 11
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    63
 */
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    64
fun Project.configureAnnotationProcessorDeps() {
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    65
    dependencies {
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    66
        configurations.whenObjectAdded {
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    67
            when (name) {
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    68
                "kapt" -> {
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    69
                    add(name, "javax.xml.bind:jaxb-api:2.3.1")
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    70
                    add(name, "com.sun.xml.bind:jaxb-core:2.3.0.1")
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    71
                    add(name, "com.sun.xml.bind:jaxb-impl:2.3.2")
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    72
                }
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    73
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    74
                "annotationProcessor" -> add(name, "javax.xml.bind:jaxb-api:2.3.1")
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    75
            }
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    76
        }
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    77
    }
0a13dcabf7d3 Initial commit
fbarthelery <darisk972@gmail.com>
parents:
diff changeset
    78
}