f1202c61de
Bug: skia: Change-Id: Ie463354281f5091866c6ccda3d041f6c7d8f0558 Reviewed-on: https://skia-review.googlesource.com/c/182101 Reviewed-by: Derek Sollenberger <djsollen@google.com> Reviewed-by: Stan Iliev <stani@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
121 lines
3.9 KiB
Groovy
121 lines
3.9 KiB
Groovy
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
|
|
|
import java.io.File
|
|
import java.nio.file.Paths
|
|
import org.apache.tools.ant.taskdefs.condition.Os
|
|
|
|
buildscript {
|
|
repositories {
|
|
google()
|
|
jcenter()
|
|
}
|
|
dependencies {
|
|
classpath 'com.android.tools.build:gradle:3.2.0'
|
|
|
|
// NOTE: Do not place your application dependencies here; they belong
|
|
// in the individual module build.gradle files
|
|
}
|
|
}
|
|
|
|
allprojects {
|
|
repositories {
|
|
google()
|
|
jcenter()
|
|
}
|
|
}
|
|
|
|
def setupSkiaLibraryBuild(project, appVariants, appName) {
|
|
appVariants.all{ variant ->
|
|
def buildNativeLib = project.task("${variant.name}_BuildSkiaLib", type:Exec) {
|
|
workingDir '../../../..' // top-level skia directory
|
|
final String cmd = constructBuildCommand(project, variant, appName)
|
|
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
|
commandLine "cmd", "/c", cmd
|
|
} else {
|
|
commandLine cmd.split()
|
|
}
|
|
}
|
|
buildNativeLib.onlyIf { !project.hasProperty("suppressNativeBuild") }
|
|
|
|
def copyNativeLib = project.task("${variant.name}_CopySkiaLib", type:Copy) {
|
|
def fromDir = getVariantOutDir(project, variant).skiaOut
|
|
def intoDir = getVariantOutDir(project, variant).androidOut
|
|
from fromDir
|
|
into intoDir
|
|
include "${appName}.so"
|
|
}
|
|
|
|
TaskCollection<Task> compileTask = project.tasks.matching {
|
|
// println(it.name)
|
|
it.name.toLowerCase().contains("compile" + variant.name.toLowerCase()) &&
|
|
it.name.toLowerCase().endsWith("ndk")
|
|
}
|
|
compileTask.findAll()*.dependsOn copyNativeLib
|
|
copyNativeLib.dependsOn buildNativeLib
|
|
}
|
|
}
|
|
|
|
def getLocalProperties() {
|
|
Properties properties = new Properties()
|
|
File propFile = project.rootProject.file('local.properties')
|
|
if (propFile.canRead()) {
|
|
properties.load(propFile.newDataInputStream())
|
|
}
|
|
propFile = project.rootProject.file('gradle.properties')
|
|
if (propFile.canRead()) {
|
|
properties.load(propFile.newDataInputStream())
|
|
}
|
|
return properties
|
|
}
|
|
|
|
def getVariantOutDir(project, variant) {
|
|
String variantPrefix = null
|
|
String androidLibDir = null
|
|
if (variant.name.startsWith("arm64")) {
|
|
variantPrefix = "arm64"
|
|
androidLibDir = "arm64-v8a"
|
|
} else if (variant.name.startsWith("arm")) {
|
|
variantPrefix = "arm"
|
|
androidLibDir = "armeabi-v7a"
|
|
} else if (variant.name.startsWith("x64")) {
|
|
variantPrefix = "x64"
|
|
androidLibDir = "x86_64"
|
|
} else if (variant.name.startsWith("x86")) {
|
|
variantPrefix = "x86"
|
|
androidLibDir = "x86"
|
|
}
|
|
|
|
String skiaOutDir = null
|
|
String propName = "${variantPrefix}.out.dir"
|
|
if (project.hasProperty(propName)) {
|
|
skiaOutDir = project.getProperties().getAt(propName)
|
|
} else {
|
|
skiaOutDir = getLocalProperties().getProperty(propName, "missing_variant_out")
|
|
}
|
|
|
|
return [skiaOut: skiaOutDir,
|
|
androidOut: "src/main/libs/${androidLibDir}"]
|
|
}
|
|
|
|
def constructBuildCommand(project, variant, appName) {
|
|
String depotToolsDir = null
|
|
for (String entry : System.getenv("PATH").split(File.pathSeparator)) {
|
|
if (Paths.get(entry).endsWith("depot_tools")) {
|
|
depotToolsDir = entry;
|
|
break;
|
|
}
|
|
}
|
|
if (depotToolsDir == null) {
|
|
depotToolsDir = getLocalProperties().getProperty('depot_tools.dir', null)
|
|
}
|
|
|
|
if (depotToolsDir == null) {
|
|
throw GradleScriptException("Depot Tools not found! Please update your path to include" +
|
|
" depot_tools or define depot_tools.dir in local.properties")
|
|
}
|
|
|
|
String ninja = Paths.get(depotToolsDir, "ninja")
|
|
String out_dir = getVariantOutDir(project, variant).skiaOut
|
|
return "$ninja -C $out_dir $appName"
|
|
}
|