apply plugin: 'com.android.application'

android {
    compileSdkVersion 19
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.skia.sample_app"
        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 {}
    }

    // make sure that app is built and shared libraries are copied to correct directories
    applicationVariants.all{ variant ->

        def buildNativeLib = task("${variant.name}_NativeLib", type:Exec) {
            workingDir '../../../..' // top-level skia directory
            commandLine constructBuildCommand(variant, "CopySampleAppDeps").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
    }
}