/*
 * Copyright (C) 2016 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.
 */

apply plugin: 'java'
apply plugin: 'com.github.johnrengelman.shadow'

sourceCompatibility = 1.8
targetCompatibility = 1.8

apply from: "$rootDir/gradle-script/checkstyle.gradle"
apply from: "$rootDir/gradle-script/findbugs.gradle"

sourceSets {
    main {
        java {
            srcDirs = ['src']
        }
    }
}

dependencies {
  compileOnly libs.jsr305
}

javadoc {
  failOnError false
  destinationDir = file("${rootDir}/gradle-dist/doc/jack/jack-external/jack")
}

apply from: "$rootDir/gradle-script/versionfile.gradle"

jar {
  classifier 'lib'
}

shadowJar {
  dependsOn createJackVersionFile
  classifier ''
  from ("${project.buildDir}") {
    include "jack-api-version.properties"
  }
}

task dist (type: Copy, dependsOn: shadowJar) {
  from shadowJar.archivePath
  into file("${rootDir}/gradle-dist/")
}

task zipSources(type: Zip){
  classifier 'src'
  doFirst {
    file("$rootDir/gradle-dist").mkdirs()
  }
  from 'src'
  destinationDir file("${rootDir}/gradle-dist")
}

dist.dependsOn zipSources

project(':jack-api:sample') {

  apply plugin: 'application'

  mainClassName = "com.android.jack.api.example.WithServiceLoader"

  sourceSets {
      main {
          java {
              srcDirs = ['../example']
          }
      }
  }

  dependencies {
    compile project(':jack-api')
  }
}
