/*
 * Copyright 2015 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
apply plugin: 'com.android.application'
android {
    compileSdkVersion 19
    buildToolsVersion "22.0.1"
    defaultConfig {
        applicationId "org.skia.canvasproof"
        minSdkVersion 9
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
        signingConfig signingConfigs.debug
    }
    sourceSets.main.jni.srcDirs = [] //disable automatic ndk-build call
    sourceSets.main.jniLibs.srcDir "src/main/libs"
    productFlavors { arm {}; arm64 {}; x86 {}; x86_64 {}; mips {}; mips64 {}; }
    applicationVariants.all{ variant ->
        def buildNativeLib = task("${variant.name}_NativeLib", type:Exec) {
            workingDir '../../../..' // top-level skia directory
            commandLine constructBuildCommand(variant, "CopyCanvasProofDeps").split()
            environment PATH: getPathWithDepotTools()
            environment ANDROID_SDK_ROOT: getSDKPath()
        }
        buildNativeLib.onlyIf { !project.hasProperty("suppressNativeBuild") }
        TaskCollection<Task> assembleTask
        assembleTask = project.tasks.matching {
            it.name.contains("assemble") &&
                    it.name.toLowerCase().endsWith(variant.name.toLowerCase())
        }
        assembleTask.getAt(0).dependsOn buildNativeLib
    }
}
