blob: 005386435569dc45751ea35572167e1999ce36a9 [file] [log] [blame]
/*
* Copyright (C) 2021 The Android Open Source Project
*
* 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.
*/
import androidx.build.LibraryGroups
import androidx.build.LibraryType
import androidx.build.Publish
apply plugin: 'AndroidXPlugin'
apply plugin: 'com.android.library'
ext {
yuvSourceDir = "${project.rootDir.absolutePath}/../../external/libyuv"
}
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments "-DCMAKE_POLICY_DEFAULT_CMP0064=NEW", "-DCMAKE_VERBOSE_MAKEFILE=ON"
// Build only the static library target
targets "yuv"
}
}
}
externalNativeBuild {
cmake {
version "3.22.1"
path "${yuvSourceDir}/files/CMakeLists.txt"
}
}
// Enable generation of Prefab packages and include them in the library's AAR.
buildFeatures {
prefabPublishing true
}
// Include the "libyuv" module from the native build system in the AAR,
// and export the headers in files/include to its consumers
prefab {
libyuv {
headers "${yuvSourceDir}/files/include"
name "yuv"
}
}
}
androidx {
name = "libyuv"
// Only intended to be used as snapshots, do not change to PUBLISHED.
publish = Publish.SNAPSHOT_ONLY
mavenGroup = LibraryGroups.LIBYUV
inceptionYear = "2021"
description = "libyuv is an open source project that includes YUV scaling and conversion functionality."
}
// this block exists to debug flakes from b/206464070
afterEvaluate {
def buildDir = project.buildDir
tasks.named("prefabReleaseConfigurePackage").configure {
it.doLast {
// handle differences in prefab configuration location between AGP versions
def packageLocation = "prefab_package_configuration"
def packageDir = new File("$buildDir/intermediates/${packageLocation}")
if (!packageDir.exists()) {
packageLocation = "prefab_package"
}
def abis = ["android.arm64-v8a", "android.armeabi-v7a", "android.x86", "android.x86_64"]
abis.each { abi ->
def releaseAbiJson = new File("$buildDir/intermediates/${packageLocation}/release/prefab/modules/yuv/libs/${abi}/abi.json")
if (!releaseAbiJson.exists()) {
throw new GradleException("$releaseAbiJson does not exist")
}
}
def releasePrefabJson = new File("$buildDir/intermediates/${packageLocation}/release/prefab/prefab.json")
if (!releasePrefabJson.exists()) {
throw new GradleException("$releasePrefabJson does not exist")
}
def releaseConvertArgb = new File("$buildDir/intermediates/${packageLocation}/release/prefab/modules/yuv/include/libyuv/convert_argb.h")
if (!releaseConvertArgb.exists()) {
throw new GradleException("$releaseConvertArgb does not exist")
}
}
}
tasks.named("prefabDebugConfigurePackage").configure {
it.doLast {
// handle differences in prefab configuration location between AGP versions
def packageLocation = "prefab_package_configuration"
def packageDir = new File("$buildDir/intermediates/${packageLocation}")
if (!packageDir.exists()) {
packageLocation = "prefab_package"
}
def abis = ["android.arm64-v8a", "android.armeabi-v7a", "android.x86", "android.x86_64"]
abis.each { abi ->
def debugAbiJson = new File("$buildDir/intermediates/${packageLocation}/debug/prefab/modules/yuv/libs/${abi}/abi.json")
if (!debugAbiJson.exists()) {
throw new GradleException("$debugAbiJson does not exist")
}
}
def debugPrefabJson = new File("$buildDir/intermediates/${packageLocation}/debug/prefab/prefab.json")
if (!debugPrefabJson.exists()) {
throw new GradleException("$debugPrefabJson does not exist")
}
def debugConvertArgb = new File("$buildDir/intermediates/${packageLocation}/debug/prefab/modules/yuv/include/libyuv/convert_argb.h")
if (!debugConvertArgb.exists()) {
throw new GradleException("$debugConvertArgb does not exist")
}
}
}
}