def buildAsLibrary = project.hasProperty('BUILD_AS_LIBRARY');
def buildAsApplication = !buildAsLibrary
if (buildAsApplication) {
    apply plugin: 'com.android.application'
}
else {
    apply plugin: 'com.android.library'
}
android {
    buildFeatures {
        prefab true
    }
    ndkVersion "${project.ndk_version}"
    if (buildAsApplication) {
        namespace "com.complecwaft.looper"
    }
    compileSdkVersion 34
    defaultConfig {
        minSdkVersion 30
        targetSdkVersion 34
        def revListStdout = new ByteArrayOutputStream();
        exec {
            executable "git"
            commandLine "git", "rev-list", "--count", "HEAD"
            standardOutput revListStdout
        }
        def revParseStdout = new ByteArrayOutputStream();
        exec {
            commandLine "./app/jni/version.sh"
            standardOutput revParseStdout
        }
        versionCode revListStdout.toString() as Integer
        versionName revParseStdout.toString()
        externalNativeBuild {
            cmake {
                arguments "-DUSE_GLES=ON", "-DUSE_PORTALS=OFF", "-DDOWNLOAD_AUDIO_CODECS_DEPENDENCY=ON", "-DENABLE_DBUS=OFF", "-DBUILD_SDL=ON", "-DBUILD_SDL_IMAGE=ON", "-DDISABLE_GTK_UI=ON", "-DDISABLE_IMGUI_UI=OFF"
            }
        }
    }
    externalNativeBuild {
        cmake {
            path 'jni/CMakeLists.txt';
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    applicationVariants.all { variant ->
        tasks["merge${variant.name.capitalize()}Assets"]
            .dependsOn("externalNativeBuild${variant.name.capitalize()}")
    }
    if (!project.hasProperty('EXCLUDE_NATIVE_LIBS')) {
        sourceSets.main {
            jniLibs.srcDir 'libs'
        }
       
    }
    lint {
        abortOnError false
    }

    if (buildAsLibrary) {
        libraryVariants.all { variant ->
            variant.outputs.each { output ->
                def outputFile = output.outputFile
                if (outputFile != null && outputFile.name.endsWith(".aar")) {
                    def fileName = "com.complecwaft.looper.app.aar";
                    output.outputFile = new File(outputFile.parent, fileName);
                }
            }
        }
    }
}

dependencies {
    implementation "androidx.core:core:1.13.1"
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation group: 'com.getkeepsafe.relinker', name: 'relinker', version: '1.4.5'
}