apply plugin: 'com.android.application'

android {
    compileSdkVersion 30

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    lintOptions {
        // This is important as it will run lint but not abort on error
        // Lint has some overly obnoxious "errors" that should really be warnings
        abortOnError false

        //Uncomment disable lines for test builds...
        //disable 'MissingTranslation'
        //disable 'ExtraTranslation'
    }

    defaultConfig {
        // TODO If this is ever modified, change application_id in strings.xml
        applicationId "org.dolphinemu.dolphinemu"
        minSdkVersion 21
        targetSdkVersion 29

        versionCode(getBuildVersionCode())

        versionName "${getVersion()}"
    }

    signingConfigs {
        release {
            if (project.hasProperty('keystore')) {
                storeFile file(project.property('keystore'))
                storePassword project.property('storepass')
                keyAlias project.property('keyalias')
                keyPassword project.property('keypass')
            }
        }
    }

    // Define build types, which are orthogonal to product flavors.
    buildTypes {
        // Signed by release key, allowing for upload to Play Store.
        release {
            signingConfig signingConfigs.release
        }

        // Signed by debug key disallowing distribution on Play Store.
        // Attaches 'debug' suffix to version and package name, allowing installation alongside the release build.
        debug {
            // TODO If this is ever modified, change application_id in debug/strings.xml
            applicationIdSuffix ".debug"
            versionNameSuffix '-debug'
            jniDebuggable true
        }
    }

    externalNativeBuild {
        cmake {
            path "../../../CMakeLists.txt"
            version "3.10.2"
        }
    }

    defaultConfig {
        externalNativeBuild {
            cmake {
                arguments "-DANDROID_STL=c++_static", "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
                // , "-DENABLE_GENERIC=ON"
                abiFilters "arm64-v8a", "x86_64" //, "armeabi-v7a", "x86"
            }
        }
    }
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.exifinterface:exifinterface:1.1.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.recyclerview:recyclerview:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.lifecycle:lifecycle-viewmodel:2.2.0'
    implementation 'com.google.android.material:material:1.1.0'

    // Android TV UI libraries.
    implementation 'androidx.leanback:leanback:1.0.0'
    implementation 'androidx.tvprovider:tvprovider:1.0.0'

    // For REST calls
    implementation 'com.android.volley:volley:1.1.1'

    // For loading huge screenshots from the disk.
    implementation 'com.squareup.picasso:picasso:2.71828'

    implementation 'com.nononsenseapps:filepicker:4.2.1'
}

def getVersion() {
    def versionNumber = '0.0'

    try {
        versionNumber = 'git describe --always --long'.execute([], project.rootDir).text
                .trim()
                .replaceAll(/(-0)?-[^-]+$/, "")
    } catch (Exception e) {
        logger.error('Cannot find git, defaulting to dummy version number')
    }

    return versionNumber
}


def getBuildVersionCode() {
    try {
        def versionNumber = 'git rev-list --first-parent --count HEAD'.execute([], project.rootDir).text
                .trim()
        return Integer.valueOf(versionNumber);
    } catch (Exception e) {
        logger.error('Cannot find git, defaulting to dummy version number')
    }

    return 1;
}
