30c48065dd
Change-Id: I27df422a78209d60647db89a608fc31f9739a429 Reviewed-on: https://skia-review.googlesource.com/83361 Reviewed-by: Derek Sollenberger <djsollen@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
110 lines
3.5 KiB
Groovy
110 lines
3.5 KiB
Groovy
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
|
|
|
|
|
buildscript {
|
|
repositories {
|
|
jcenter()
|
|
}
|
|
dependencies {
|
|
classpath 'com.android.tools.build:gradle:2.2.3'
|
|
|
|
// NOTE: Do not place your application dependencies here; they belong
|
|
// in the individual module build.gradle files
|
|
}
|
|
}
|
|
|
|
allprojects {
|
|
repositories {
|
|
jcenter()
|
|
}
|
|
}
|
|
|
|
def setupSkiaLibraryBuild(project, appVariants, appName) {
|
|
appVariants.all{ variant ->
|
|
def buildNativeLib = project.task("${variant.name}_BuildSkiaLib", type:Exec) {
|
|
workingDir '../../../..' // top-level skia directory
|
|
commandLine constructBuildCommand(project, variant, appName).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("x86_64")) {
|
|
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(":")) {
|
|
if (entry.contains("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 out_dir = getVariantOutDir(project, variant).skiaOut
|
|
return "${depotToolsDir}/ninja -C $out_dir $appName"
|
|
}
|