[Build] Change build dir layout to separate production and test bitcodes

This commit is contained in:
Ilya Matveev
2020-10-07 14:18:23 +07:00
committed by Ilya Matveev
parent f644e394ab
commit 24657a2860
7 changed files with 23 additions and 11 deletions
+1 -1
View File
@@ -207,7 +207,7 @@ targetList.each { target ->
if (target != "wasm32") defaultArgs += '-g'
def konanArgs = [*defaultArgs,
'-target', target,
"-Xruntime=${project(':runtime').file('build/' + target + '/runtime.bc')}",
"-Xruntime=${project(':runtime').file('build/bitcode/main/' + target + '/runtime.bc')}",
*project.globalBuildArgs]
task("${target}Stdlib", type: JavaExec) {
@@ -18,7 +18,8 @@ import javax.inject.Inject
open class CompileToBitcode @Inject constructor(
val srcRoot: File,
val folderName: String,
val target: String
val target: String,
val outputGroup: String
) : DefaultTask() {
enum class Language {
@@ -48,7 +49,7 @@ open class CompileToBitcode @Inject constructor(
@Input
var language = Language.CPP
private val targetDir by lazy { File(project.buildDir, target) }
private val targetDir by lazy { project.buildDir.resolve("bitcode/$outputGroup/$target") }
val objDir by lazy { File(targetDir, folderName) }
@@ -38,12 +38,17 @@ open class CompileToBitcodeExtension @Inject constructor(val project: Project) {
provider { rootProject.property("targetList") as List<String> } // TODO: Can we make it better?
}
fun create(name: String, srcDir: File = project.file("src/$name"), configurationBlock: CompileToBitcode.() -> Unit = {}) {
fun create(
name: String,
srcDir: File = project.file("src/$name"),
outputGroup: String = "main",
configurationBlock: CompileToBitcode.() -> Unit = {}
) {
targetList.get().forEach { targetName ->
project.tasks.register(
"${targetName}${name.snakeCaseToCamelCase().capitalize()}",
CompileToBitcode::class.java,
srcDir, name, targetName
srcDir, name, targetName, outputGroup
).configure {
it.group = BasePlugin.BUILD_GROUP
it.description = "Compiles '$name' to bitcode for $targetName"
@@ -53,7 +53,7 @@ open class RuntimeTestingPlugin : Plugin<Project> {
val bitcodeExtension =
project.extensions.getByName(CompileToBitcodePlugin.EXTENSION_NAME) as CompileToBitcodeExtension
bitcodeExtension.create("googletest") {
bitcodeExtension.create("googletest", outputGroup = "test") {
srcDirs = project.files(
googleTestRoot.resolve("googletest/src")
)
@@ -68,7 +68,7 @@ open class RuntimeTestingPlugin : Plugin<Project> {
dependsOn(dependencies)
}
bitcodeExtension.create("googlemock") {
bitcodeExtension.create("googlemock", outputGroup = "test") {
srcDirs = project.files(
googleTestRoot.resolve("googlemock/src")
)
+2 -2
View File
@@ -497,11 +497,11 @@ targetList.each { target ->
}
}
}
from(project(':runtime').file("build/$target")) {
from(project(':runtime').file("build/bitcode/main/$target")) {
include("runtime.bc")
into("$stdlibDefaultComponent/targets/$target/native")
}
from(project(':runtime').file("build/$target")) {
from(project(':runtime').file("build/bitcode/main/$target")) {
include("*.bc")
exclude("runtime.bc")
into("konan/targets/$target/native")
+1 -1
View File
@@ -80,7 +80,7 @@ targetList.each { target ->
if (target != "wasm32") defaultArgs += '-g'
def konanArgs = [*defaultArgs,
'-target', target,
"-Xruntime=${project(':runtime').file('build/' + target + '/runtime.bc')}",
"-Xruntime=${project(':runtime').file('build/bitcode/main/' + target + '/runtime.bc')}",
*project.globalBuildArgs]
task("${target}KotlinxCli", type: JavaExec) {
+7 -1
View File
@@ -43,7 +43,7 @@ bitcode {
"${target}ExceptionsSupport"
)
includeRuntime()
linkerArgs.add(project.file("../common/build/$target/hash.bc").path)
linkerArgs.add(project.file("../common/build/bitcode/main/$target/hash.bc").path)
}
create("mimalloc") {
@@ -95,6 +95,12 @@ val hostRuntime by tasks.registering {
dependsOn("${hostName}Runtime")
}
val assemble by tasks.registering {
dependsOn(tasks.withType(CompileToBitcode::class).matching {
it.outputGroup == "main"
})
}
val clean by tasks.registering {
doLast {
delete(buildDir)