Skip to content

Commit

Permalink
Disabled llvm-related modules unless clang-15 is installed (#260)
Browse files Browse the repository at this point in the history
* disabled llvm-related modules unless clang-15 is installed

* handle when clang is not installed

* Fixed dependency management for llvm-related subprojects

* Format

* no latinit

* better logging

* added back dependency
  • Loading branch information
leventeBajczi authored Mar 19, 2024
1 parent 88abf3b commit f9c8a2c
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 10 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ buildscript {

allprojects {
group = "hu.bme.mit.theta"
version = "5.0.4"
version = "5.0.5"

apply(from = rootDir.resolve("gradle/shared-with-buildSrc/mirrors.gradle.kts"))
}
Expand Down
35 changes: 29 additions & 6 deletions subprojects/frontends/llvm/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,30 @@ val llvmConfigBinary = try {
}
}

val taskEnabled = current().isLinux && llvmConfigBinary != null
val clangBinary = try {
val output = runCommandForOutput("clang", "--version")
var version: List<String> = listOf(output.joinToString(" "))
for (token in output) {
val tryVersion = token.split('.')
if (tryVersion.size == 3 && tryVersion.all { it.all(Char::isDigit) }) {
version = tryVersion
break
}
}

val major = version[0]
if (major == "15") {
"clang"
} else {
println("clang does not point to clang-15, not building native library. Found version: $version")
null
}
} catch (e: IOException) {
println("clang-15 not installed , not building native library.")
null
}

val taskEnabled = current().isLinux && llvmConfigBinary != null && clangBinary != null

fun runCommandForOutput(vararg args: String): Array<String> {
val process = ProcessBuilder(*args).start()
Expand All @@ -62,7 +85,7 @@ fun runCommandForOutput(vararg args: String): Array<String> {
process.waitFor()
val ret = outputStream.toString()
.trim()
.split(" ")
.split(" ", "\n", "\r")
.filter { it.length > 1 }
.map { it.trim() }
.toTypedArray()
Expand Down Expand Up @@ -102,9 +125,9 @@ library {
"-fpic",
*jniConfigFlags(),
*llvmConfigFlags("--cxxflags")))
onlyIf {
if (!taskEnabled) {
println("CppCompile is enabled: $taskEnabled")
this@Build_gradle.taskEnabled
enabled = false
}
}

Expand All @@ -113,9 +136,9 @@ library {
"-rdynamic",
*llvmConfigFlags("--cxxflags", "--ldflags", "--libs", "core", "bitreader"),
"-ldl"))
onlyIf {
if (!taskEnabled) {
println("LinkSharedLibrary is enabled: $taskEnabled")
this@Build_gradle.taskEnabled
enabled = false
}
}
}
9 changes: 6 additions & 3 deletions subprojects/xcfa/llvm2xcfa/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,12 @@ dependencies {
tasks.test {
if (OperatingSystem.current().isLinux) {
val nativeLibTasks = project(":theta-llvm").tasks
dependsOn(nativeLibTasks.build)

val linkTask = nativeLibTasks.withType(LinkSharedLibrary::class).first()
val task = nativeLibTasks.withType(LinkSharedLibrary::class)
if (task.any { !it.enabled }) {
enabled = false
}
val linkTask = task.first()
dependsOn(linkTask)
systemProperty("java.library.path",
linkTask.linkedFile.get().asFile.parent + ":/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib")
}
Expand Down

0 comments on commit f9c8a2c

Please sign in to comment.