buildSrc/src/main/kotlin/AndroidJavaVersion.kt
author fbarthelery <da_risk@geekorum.com>
Sat, 11 Dec 2021 00:24:26 -0400
changeset 29 d9ad9e5c05fd
parent 10 9aad34f43f71
child 19 91a3ad3b1b9c
permissions -rw-r--r--
Create jitpack.yml
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
 *
9aad34f43f71 More license headers
Da Risk <da_risk@geekorum.com>
parents: 8
diff changeset
     5
 * Copyright (C) 2017-2020 by Frederic-Charles Barthelery.
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
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    24
import com.android.build.gradle.BaseExtension
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    25
import org.gradle.api.JavaVersion
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    26
import org.gradle.api.Project
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    27
import org.gradle.api.plugins.ExtensionAware
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    28
import org.gradle.kotlin.dsl.dependencies
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    29
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    30
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    31
/**
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    32
 * Configure java version compile options based on minSdkVersion value
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
fun BaseExtension.configureJavaVersion() {
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    35
    val api = defaultConfig.minSdkVersion?.apiLevel ?: 0
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    36
    val version = when {
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    37
        api >= 24 -> JavaVersion.VERSION_1_8
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    38
        api >= 19 -> JavaVersion.VERSION_1_7
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    39
        else -> JavaVersion.VERSION_1_6
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    40
    }
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    41
    compileOptions {
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    42
        sourceCompatibility = version
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    43
        targetCompatibility = version
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    44
    }
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    45
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    46
    (this as ExtensionAware).extensions.findByType(KotlinJvmOptions::class.java)?.apply {
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    47
        if (version >= JavaVersion.VERSION_1_8) {
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    48
            jvmTarget = "1.8"
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    49
        }
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    50
    }
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    51
}
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
 * Add missing annotation processord dependencies to build on Java 11
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    55
 */
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    56
fun Project.configureAnnotationProcessorDeps() {
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    57
    dependencies {
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    58
        configurations.whenObjectAdded {
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    59
            when (name) {
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    60
                "kapt" -> {
7
b83e6b69e806 Build: allow to build unit test on java11
Da Risk <da_risk@geekorum.com>
parents: 1
diff changeset
    61
                    add(name, "javax.xml.bind:jaxb-api:2.3.1")
1
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    62
                    add(name, "com.sun.xml.bind:jaxb-core:2.3.0.1")
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    63
                    add(name, "com.sun.xml.bind:jaxb-impl:2.3.2")
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    64
                }
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    65
                "annotationProcessor" -> add(name, "javax.xml.bind:jaxb-api:2.3.1")
7
b83e6b69e806 Build: allow to build unit test on java11
Da Risk <da_risk@geekorum.com>
parents: 1
diff changeset
    66
                // I guess that on AGP 4.x+ testAnnotationProcessor inherit from annotationProcessor
b83e6b69e806 Build: allow to build unit test on java11
Da Risk <da_risk@geekorum.com>
parents: 1
diff changeset
    67
                // not on 3.6.x
b83e6b69e806 Build: allow to build unit test on java11
Da Risk <da_risk@geekorum.com>
parents: 1
diff changeset
    68
                "testAnnotationProcessor" -> add(name, "javax.xml.bind:jaxb-api:2.3.1")
8
729a3ee3840a build: also allow instrumentation tests on Java 11
Da Risk <da_risk@geekorum.com>
parents: 7
diff changeset
    69
                "androidTestAnnotationProcessor" -> add(name, "javax.xml.bind:jaxb-api:2.3.1")
1
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    70
            }
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    71
        }
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    72
    }
831cffa9c991 source import
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    73
}