in plugin/src/main/kotlin/com/nishtahir/CargoBuildTask.kt [252:279]
fun getDefaultTargetTriple(project: Project, rustc: String): String? {
val stdout = ByteArrayOutputStream()
val result = project.exec { spec ->
spec.standardOutput = stdout
spec.commandLine = listOf(rustc, "--version", "--verbose")
}
if (result.exitValue != 0) {
project.logger.warn(
"Failed to get default target triple from rustc (exit code: ${result.exitValue})")
return null
}
val output = stdout.toString()
// The `rustc --version --verbose` output contains a number of lines like `key: value`.
// We're only interested in `host: `, which corresponds to the default target triple.
val triplePrefix = "host: "
val triple = output.split("\n")
.find { it.startsWith(triplePrefix) }
?.let { it.substring(triplePrefix.length).trim() }
if (triple == null) {
project.logger.warn("Failed to parse `rustc -Vv` output! (Please report a rust-android-gradle bug)")
} else {
project.logger.info("Default rust target triple: $triple")
}
return triple
}