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

apply plugin: "com.github.johnrengelman.shadow"

configurations {
    shadowDeps // shaded dependencies, not included into the resulting .pom file
    compileOnly.extendsFrom(shadowDeps)
    runtimeOnly.extendsFrom(shadowDeps)

    /*
     * It is possible to extend a particular configuration with shadow,
     * but in that case it changes dependency type to "runtime" and resolves it
     * (so it cannot be further modified). Otherwise, shadow just ignores all dependencies.
     */
    shadow.extendsFrom(api) // shadow - resulting configuration with shaded jar file
    configureKotlinJvmPlatform(shadow)
}

dependencies {
    compileOnly "junit:junit:$junit_version"
    shadowDeps "net.bytebuddy:byte-buddy:$byte_buddy_version"
    shadowDeps "net.bytebuddy:byte-buddy-agent:$byte_buddy_version"
    compileOnly "io.projectreactor.tools:blockhound:$blockhound_version"
    testCompile "io.projectreactor.tools:blockhound:$blockhound_version"
    api "net.java.dev.jna:jna:$jna_version"
    api "net.java.dev.jna:jna-platform:$jna_version"
}

jar {
    manifest {
        attributes "Premain-Class": "kotlinx.coroutines.debug.AgentPremain"
        attributes "Can-Redefine-Classes": "true"
    }
}

shadowJar {
    classifier null
    // Shadow only byte buddy, do not package kotlin stdlib
    configurations = [project.configurations.shadowDeps]
    relocate('net.bytebuddy', 'kotlinx.coroutines.repackaged.net.bytebuddy')
}
