/*
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'

android {
    namespace 'com.facebook.flipper'
    compileSdkVersion rootProject.compileSdkVersion
    buildToolsVersion rootProject.buildToolsVersion
    ndkVersion rootProject.ndkVersion
    // Uncomment this and enable the database plugin test when roboelectric is upgraded
    // testOptions.unitTests.includeAndroidResources = true

    defaultConfig {
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        buildConfigField "boolean", "IS_INTERNAL_BUILD", 'true'
        buildConfigField "boolean", "IS_ASAN_BUILD", 'false'
        buildConfigField "boolean", "LOAD_FLIPPER_EXPLICIT", 'false'

        ndk {
            abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
        }

        externalNativeBuild {
            cmake {
                arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_shared'
                targets 'flipper'
            }
        }
    }

    lintOptions {
        abortOnError false
    }

    sourceSets {
        test {
            java {
                exclude 'com/facebook/flipper/plugins/facebook/**'
            }
        }
    }

    compileOptions {
        targetCompatibility rootProject.javaTargetVersion
        sourceCompatibility rootProject.javaTargetVersion
    }

    buildFeatures {
        prefab true
    }

    packagingOptions {
        exclude("**/libfbjni.so")
        exclude("**/libc++_shared.so")
    }

    externalNativeBuild {
        cmake {
            path './CMakeLists.txt'
        }
    }

    dependencies {
        compileOnly deps.proguardAnnotations
        implementation deps.kotlinStdLibrary

        implementation deps.kotlinCoroutinesAndroid
        implementation deps.openssl
        implementation deps.fbjni
        implementation deps.soloader
        implementation deps.curtains
        implementation deps.jsr305
        implementation deps.supportAppCompat
        implementation deps.supportSqlite
        implementation deps.websocket
        implementation deps.kotlinxSerializationJson


        testImplementation deps.mockito
        testImplementation deps.robolectric
        testImplementation deps.testCore
        testImplementation deps.testRules
        testImplementation deps.hamcrest
        testImplementation deps.junit
    }
}

// Patch below is used in case the 'configureCMake' task
// gets executed in parallel with the 'preBuild' task.
// Our CMakeFile expects third-party dependencies to be already
// in-place and patched.
tasks.matching { it.name.startsWith("configureCMake") }.all {
    dependsOn(tasks.getByPath(':third-party:prepare'))
}

preBuild.dependsOn(tasks.getByPath(':third-party:prepare'))

apply plugin: 'com.vanniktech.maven.publish'
