/*
 * R3 Proprietary and Confidential
 *
 * Copyright (c) 2018 R3 Limited.  All rights reserved.
 *
 * The intellectual and technical concepts contained herein are proprietary to R3 and its suppliers and are protected by trade secret law.
 *
 * Distribution of this file or any portion thereof via any medium without the express permission of R3 is strictly prohibited.
 */

buildscript {
    // For sharing constants between builds
    Properties constants = new Properties()
    file("$projectDir/../../constants.properties").withInputStream { constants.load(it) }

    ext.kotlin_version = constants.getProperty("kotlinVersion")
    ext.javaassist_version = "3.12.1.GA"

    repositories {
        mavenLocal()
        mavenCentral()
        jcenter()
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

repositories {
    mavenLocal()
    mavenCentral()
    jcenter()
}

apply plugin: 'kotlin'
apply plugin: 'kotlin-kapt'
apply plugin: 'idea'

description 'A javaagent to allow hooking into Kryo'

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
    compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
    compile "javassist:javassist:$javaassist_version"
    compile "com.esotericsoftware:kryo:4.0.0"
    compile "$quasar_group:quasar-core:$quasar_version:jdk8"
}

jar {
    archiveName = "${project.name}.jar"
    manifest {
        attributes(
                'Premain-Class': 'net.corda.kryohook.KryoHookAgent',
                'Can-Redefine-Classes': 'true',
                'Can-Retransform-Classes': 'true',
                'Can-Set-Native-Method-Prefix': 'true',
                'Implementation-Title': "KryoHook",
                'Implementation-Version': rootProject.version
        )
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}