236e272380
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
119 lines
3.7 KiB
Groovy
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
|
|
} |