xref: /aosp_15_r20/external/fbjni/build.gradle (revision 65c59e023c5336bbd4a23be7af78407e3d80e7e7)
1*65c59e02SInna Palant/*
2*65c59e02SInna Palant * Copyright (c) Facebook, Inc. and its affiliates.
3*65c59e02SInna Palant *
4*65c59e02SInna Palant * Licensed under the Apache License, Version 2.0 (the "License");
5*65c59e02SInna Palant * you may not use this file except in compliance with the License.
6*65c59e02SInna Palant * You may obtain a copy of the License at
7*65c59e02SInna Palant *
8*65c59e02SInna Palant *     http://www.apache.org/licenses/LICENSE-2.0
9*65c59e02SInna Palant *
10*65c59e02SInna Palant * Unless required by applicable law or agreed to in writing, software
11*65c59e02SInna Palant * distributed under the License is distributed on an "AS IS" BASIS,
12*65c59e02SInna Palant * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*65c59e02SInna Palant * See the License for the specific language governing permissions and
14*65c59e02SInna Palant * limitations under the License.
15*65c59e02SInna Palant */
16*65c59e02SInna Palant
17*65c59e02SInna Palantplugins {
18*65c59e02SInna Palant    id 'com.android.library' version '8.1.2'
19*65c59e02SInna Palant    id 'maven-publish'
20*65c59e02SInna Palant    id 'com.vanniktech.maven.publish' version '0.25.3'
21*65c59e02SInna Palant}
22*65c59e02SInna Palant
23*65c59e02SInna Palantrepositories {
24*65c59e02SInna Palant    google()
25*65c59e02SInna Palant    mavenCentral()
26*65c59e02SInna Palant}
27*65c59e02SInna Palant
28*65c59e02SInna Palantandroid {
29*65c59e02SInna Palant    compileSdk 34
30*65c59e02SInna Palant    ndkVersion '27.1.12297006'
31*65c59e02SInna Palant
32*65c59e02SInna Palant    externalNativeBuild {
33*65c59e02SInna Palant        cmake {
34*65c59e02SInna Palant            path 'CMakeLists.txt'
35*65c59e02SInna Palant        }
36*65c59e02SInna Palant    }
37*65c59e02SInna Palant
38*65c59e02SInna Palant    defaultConfig {
39*65c59e02SInna Palant        minSdkVersion 21
40*65c59e02SInna Palant        targetSdkVersion 34
41*65c59e02SInna Palant        buildConfigField "boolean", "IS_INTERNAL_BUILD", 'true'
42*65c59e02SInna Palant        namespace "com.facebook.fbjni"
43*65c59e02SInna Palant
44*65c59e02SInna Palant        sourceSets {
45*65c59e02SInna Palant            main {
46*65c59e02SInna Palant                java.srcDir 'java'
47*65c59e02SInna Palant            }
48*65c59e02SInna Palant        }
49*65c59e02SInna Palant
50*65c59e02SInna Palant        ndk {
51*65c59e02SInna Palant            abiFilters 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
52*65c59e02SInna Palant        }
53*65c59e02SInna Palant
54*65c59e02SInna Palant        externalNativeBuild {
55*65c59e02SInna Palant            cmake {
56*65c59e02SInna Palant                arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_shared', '-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON'
57*65c59e02SInna Palant                targets 'fbjni'
58*65c59e02SInna Palant                version '3.22.1'
59*65c59e02SInna Palant            }
60*65c59e02SInna Palant        }
61*65c59e02SInna Palant
62*65c59e02SInna Palant        buildFeatures {
63*65c59e02SInna Palant            buildConfig true
64*65c59e02SInna Palant            prefabPublishing true
65*65c59e02SInna Palant        }
66*65c59e02SInna Palant
67*65c59e02SInna Palant        compileOptions {
68*65c59e02SInna Palant            sourceCompatibility JavaVersion.VERSION_1_8
69*65c59e02SInna Palant            targetCompatibility JavaVersion.VERSION_1_8
70*65c59e02SInna Palant        }
71*65c59e02SInna Palant
72*65c59e02SInna Palant        prefab {
73*65c59e02SInna Palant            fbjni {
74*65c59e02SInna Palant                headers 'cxx/'
75*65c59e02SInna Palant            }
76*65c59e02SInna Palant        }
77*65c59e02SInna Palant    }
78*65c59e02SInna Palant}
79*65c59e02SInna Palant
80*65c59e02SInna Palant
81*65c59e02SInna Palantdependencies {
82*65c59e02SInna Palant    compileOnly 'com.google.code.findbugs:jsr305:3.0.2'
83*65c59e02SInna Palant    implementation 'com.facebook.soloader:nativeloader:0.10.5'
84*65c59e02SInna Palant}
85*65c59e02SInna Palant
86*65c59e02SInna Palanttask headersJar(type: Jar) {
87*65c59e02SInna Palant    archiveClassifier.set('headers')
88*65c59e02SInna Palant    from("$rootDir/cxx/") {
89*65c59e02SInna Palant        include '**/*.h'
90*65c59e02SInna Palant    }
91*65c59e02SInna Palant}
92*65c59e02SInna Palant
93*65c59e02SInna Palantpublishing {
94*65c59e02SInna Palant    publications {
95*65c59e02SInna Palant        withType(MavenPublication).configureEach {
96*65c59e02SInna Palant            artifact(headersJar)
97*65c59e02SInna Palant        }
98*65c59e02SInna Palant    }
99*65c59e02SInna Palant}
100