/*
 * Copyright 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


import androidx.build.LibraryVersions

import static androidx.build.dependencies.DependenciesKt.*

import androidx.build.CompilationTarget
import androidx.build.LibraryGroups
import androidx.build.Publish

plugins {
    id("AndroidXPlugin")
    id("kotlin")
    id("kotlin-kapt")
}

targetCompatibility = JavaVersion.VERSION_1_7
sourceCompatibility = JavaVersion.VERSION_1_7

dependencies {
    implementation(project(":ipc:ipc-annotations"))

    implementation(AUTO_COMMON)
    implementation(GUAVA)
    implementation(JAVAPOET)
    implementation(KOTLIN_STDLIB)

    compileOnly(AUTO_SERVICE_ANNOTATIONS)
    kapt(AUTO_SERVICE_PROCESSOR)

    compileOnly(GRADLE_INCAP_HELPER)
    kapt(GRADLE_INCAP_HELPER_PROCESSOR)

    testImplementation(GOOGLE_COMPILE_TESTING)
    testImplementation(JSR250)
    testImplementation(JUNIT)
    testImplementation(TRUTH)
}

androidx {
    name = "AndroidX IPC - Compiler"
    publish = Publish.SNAPSHOT_AND_RELEASE
    mavenVersion = LibraryVersions.IPC
    toolingProject = true
    compilationTarget = CompilationTarget.HOST
    mavenGroup = LibraryGroups.IPC
    inceptionYear = "2020"
    description = "Annotation processor for AndroidX Inter Process Communication Tools"
}
