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