/*
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
    id 'com.android.library' version '8.1.2'
    id 'maven-publish'
    id 'com.vanniktech.maven.publish' version '0.25.3'
}

repositories {
    google()
    mavenCentral()
}

android {
    compileSdk 34
    ndkVersion '27.1.12297006'

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

    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 34
        buildConfigField "boolean", "IS_INTERNAL_BUILD", 'true'
        namespace "com.facebook.fbjni"

        sourceSets {
            main {
                java.srcDir 'java'
            }
        }

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

        externalNativeBuild {
            cmake {
                arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_shared', '-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON'
                targets 'fbjni'
                version '3.22.1'
            }
        }

        buildFeatures {
            buildConfig true
            prefabPublishing true
        }

        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }

        prefab {
            fbjni {
                headers 'cxx/'
            }
        }
    }
}


dependencies {
    compileOnly 'com.google.code.findbugs:jsr305:3.0.2'
    implementation 'com.facebook.soloader:nativeloader:0.10.5'
}

task headersJar(type: Jar) {
    archiveClassifier.set('headers')
    from("$rootDir/cxx/") {
        include '**/*.h'
    }
}

publishing {
    publications {
        withType(MavenPublication).configureEach {
            artifact(headersJar)
        }
    }
}
