blob: 901e3295eae0f23e87a11fd8b43115a1f83cae95 [file] [log] [blame]
// 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.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
def setupSkiaLibraryBuild(project, appVariants, buildCmd, requireCMake = false) {
appVariants.all{ variant ->
def buildNativeLib = project.task("${variant.name}_SkiaNativeLib", type:Exec) {
workingDir '../../../..' // top-level skia directory
commandLine constructBuildCommand(variant, buildCmd).split()
environment PATH: getPathWithDeps(requireCMake)
environment ANDROID_SDK_ROOT: getSDKPath()
}
buildNativeLib.onlyIf { !project.hasProperty("suppressNativeBuild") }
TaskCollection<Task> compileTask = project.tasks.matching {
// println(it.name)
it.name.toLowerCase().contains("compile" + variant.name.toLowerCase()) &&
it.name.toLowerCase().endsWith("ndk")
}
compileTask.getAt(0).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 getSDKPath() {
String path = System.getenv("ANDROID_SDK_ROOT")
if (path == null) {
path = getLocalProperties().getProperty('sdk.dir', null)
}
if (path == null) {
throw new GradleScriptException("Android SDK not found! Please set ANDROID_SDK_ROOT to" +
" your path or define sdk.dir in gradle.properties")
}
return path
}
def getPathWithDeps(requireCMake = false) {
String path = System.getenv("PATH")
if (!path.contains("depot_tools")) {
path += ":" + getLocalProperties().getProperty('depot_tools.dir', null)
}
if (!path.contains("depot_tools")) {
throw GradleScriptException("Depot Tools not found! Please update your path to include" +
" depot_tools or define depot_tools.dir in gradle.properties")
}
if (requireCMake) {
String cmakePath = getSDKPath() + "/cmake/bin"
if (!file(cmakePath).exists()) {
logger.warn("cmake not found! Please install the android SDK version of cmake.");
}
if (!path.contains(cmakePath)) {
path = cmakePath + ":" + path
}
}
return path
}
def constructBuildCommand(variant, buildTarget) {
String cmdLine = "./platform_tools/android/bin/android_ninja $buildTarget"
String deviceType = null
if (variant.name.startsWith("arm64")) {
deviceType = "arm64"
} else if (variant.name.startsWith("arm")) {
deviceType = "arm_v7_neon"
} else if (variant.name.startsWith("x86_64")) {
deviceType = "x86_64"
} else if (variant.name.startsWith("x86")) {
deviceType = "x86"
} else if (variant.name.startsWith("mips")) {
deviceType = "mips"
} else if (variant.name.startsWith("mips64")) {
deviceType = "mips64"
}
if (deviceType != null) {
cmdLine += " -d " + deviceType
}
if (variant.name.endsWith("Release")) {
cmdLine += " --release"
}
return cmdLine
}