/*
 * 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.LibraryGroups
import androidx.build.LibraryVersions
import androidx.build.Publish
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

import static androidx.build.dependencies.DependenciesKt.*

plugins {
    id("AndroidXPlugin")
    id("com.android.library")
    id("AndroidXUiPlugin")
    id("kotlin-multiplatform")
}

kotlin {
    android()

    sourceSets {
        commonMain.dependencies {
            implementation(KOTLIN_STDLIB_COMMON)

            implementation project(":compose:runtime:runtime")
        }
        jvmMain.dependencies {
            implementation(KOTLIN_STDLIB)
        }
        androidMain.dependencies {
            api "androidx.annotation:annotation:1.1.0"
        }

        commonTest.dependencies {
            implementation kotlin("test-junit")
        }

        androidTest.dependencies {
            implementation(TRUTH)
        }
    }
}

androidx {
    name = "Compose Util"
    publish = Publish.SNAPSHOT_AND_RELEASE
    mavenVersion = LibraryVersions.UI
    mavenGroup = LibraryGroups.Compose.UI
    inceptionYear = "2020"
    description = "Compose utility methods used by other compose modules."
}

tasks.withType(KotlinCompile).configureEach {
    kotlinOptions {
        freeCompilerArgs += ["-XXLanguage:+InlineClasses"]
        useIR = true
    }
}
