apply plugin: 'com.android.application'

android {
    compileSdkVersion 31
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    signingConfigs {
        juceSigning {
            storeFile     file("${System.properties['user.home']}${File.separator}.android${File.separator}debug.keystore")
            storePassword "android"
            keyAlias      "androiddebugkey"
            keyPassword   "android"
            storeType     "jks"
        }
    }

    defaultConfig {
        applicationId "com.rmsl.jucedemorunner"
        minSdkVersion    23
        targetSdkVersion 31
        externalNativeBuild {
            cmake {
                arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-23", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE", "-DCMAKE_CXX_STANDARD=14", "-DCMAKE_CXX_EXTENSIONS=OFF"
            }
        }
    }

    buildTypes {
         debug {
             initWith debug
             debuggable    true
             jniDebuggable true
             signingConfig signingConfigs.juceSigning
         }
         release {
             initWith release
             debuggable    false
             jniDebuggable false
             signingConfig signingConfigs.juceSigning
         }
    }

    flavorDimensions "default"
    productFlavors {
        debug_ {
            ndk {
                abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
            }
            externalNativeBuild {
                cmake {
                    arguments "-DJUCE_BUILD_CONFIGURATION=DEBUG", "-DCMAKE_CXX_FLAGS_DEBUG=-O0", "-DCMAKE_C_FLAGS_DEBUG=-O0"
                }
            }

            dimension "default"
       }
        release_ {
            externalNativeBuild {
                cmake {
                    arguments "-DJUCE_BUILD_CONFIGURATION=RELEASE", "-DCMAKE_CXX_FLAGS_RELEASE=-O3", "-DCMAKE_C_FLAGS_RELEASE=-O3"
                }
            }

            dimension "default"
       }
    }

    variantFilter { variant ->
        def names = variant.flavors*.name
        if (names.contains ("debug_")
              && variant.buildType.name != "debug") {
            setIgnore(true)
        }
        if (names.contains ("release_")
              && variant.buildType.name != "release") {
            setIgnore(true)
        }
    }

    sourceSets {
        main.java.srcDirs +=
            ["../../../../../modules/juce_core/native/javacore/init",
             "../../../../../modules/juce_core/native/javacore/app",
             "../../../../../modules/juce_gui_basics/native/javaopt/app"]

        main.res.srcDirs +=
            []
    }

    repositories {
    }

    dependencies {
    }



}

