/*
 * Copyright 2016-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
 */

apply plugin: 'kotlinx-atomicfu'

dependencies {
    compileOnly "org.jetbrains.kotlinx:atomicfu:$atomicFU_version"
    testCompile "org.jetbrains.kotlinx:atomicfu:$atomicFU_version"
}

atomicFU {
    inputFiles = sourceSets.main.output.classesDirs
    outputDir = file("$buildDir/classes-atomicfu/main")
    classPath = sourceSets.main.runtimeClasspath
}

jar {
    mainSpec.sourcePaths.clear() // hack to clear existing paths
    from files(atomicFU.outputs, sourceSets.main.output.resourcesDir)
}

test {
    classpath = files(configurations.testRuntime, atomicFU.outputs, sourceSets.test.output.classesDirs,
            sourceSets.main.output.resourcesDir)
}
