skia2/platform_tools/android/apps/build.gradle
liyuqian 236e272380 Remove vulkan from most build variants
Since many devices don't support vulkan, we have to remove it for most
build variants and only turn it on manually by selecting arm64vulkan
build variant.

BUG=skia:5516
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255973003

Review-Url: https://codereview.chromium.org/2255973003
2016-08-22 13:36:57 -07:00

119 lines
3.7 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.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"
}
if (variant.name.indexOf("vulkan") != -1) {
cmdLine += " --vulkan"
}
return cmdLine
}